본문 바로가기
Service Mesh/Linkerd

Linkerd 대시보드 구성

by wlsdn3004 2023. 4. 4.
728x90
반응형

Linkerd는 추가 설정을 통해 대시보드 화면을 Web UI로 볼 수 있다.

대시보드를 구축하면 서비스 메시를 더욱 효율적으로 관리하고 모니터링할 수 있게 된다. 이를 통해 서비스의 성능 개선 및 문제 해결에 도움이 될 수 있다.

 

이번 실습에서는 kubernetes ingress-nginx-controller와 linkerd-viz Helm 차트를 사용한다.

실습 전 [ Linkerd 설치 ] 작업을 먼저 진행해야 한다.

 

Linkerd 설치

Linkerd 설치는 linkerd cli와 Helm을 이용하는 방법이 있다. production 환경에서 Helm차트를 이용하여 설치하는 것을 권장한다. ​ 해당 글에서는 Linkerd에서 사용하는 인증서를 자동으로 발급하고 관리하

wlsdn3004.tistory.com

 

실습

1. Helm을 사용하여 ingress-nginx-controller 설치


helm repo 등록

$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

 

ingress-nginx-controller 설치를 위한 values yaml 파일 작성

## [config.yaml]

controller:
  podAnnotations:
    linkerd.io/inject: ingress
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
      service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"

 

ingress-nginx-controller 설치 및 확인

## 설치
$ helm install ingress-nginx/ingress-nginx -n ingress-nginx --create-namespace -f config.yaml

## 설치 확인
$ kubectl get svc -n ingress-nginx
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP                                                                          PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.100.20.172   a7d6cb3c13dc346e99a019527fef8c74-6eebbe74a26efd7d.elb.ap-northeast-2.amazonaws.com   80:32735/TCP,443:30110/TCP   3m
ingress-nginx-controller-admission   ClusterIP      10.100.46.120   <none>                                                                               443/TCP                      68m

 

[참고]
AWS에서 EKS service annotation에 의해 NLB가 프로비저닝 되면 자동으로 EKS Cluster security group의 inbound에 아래와 같은 형식의 rule이 자동으로 추가된다.
- 프로토콜: TCP
- 포트범위: Ingress-nginx-controller service nodeport (32735, 30110)
- 소스: EKS Cluster Subnet CIDR(192.168.10.0/24, 192.168.20.0/24), 0.0.0.0/0

 

EKS Cluster security group inbound rule

 

2. Helm을 사용하여 linkerd-viz 설치


linkerd-viz 설치 및 확인

## 설치
$ helm install linkerd-viz -n linkerd-viz --create-namespace linkerd/linkerd-viz

## 설치 확인
$ helm list -n linkerd-viz
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP                                                                                        VERSION
linkerd-viz     linkerd-viz     1               2023-04-04 13:19:49.575275872 +0000 UTC deployed        linkerd-viz-30.3.6      stab                                                                                       le-2.12.4

 

 

3. Ingress 구성


linkerd Web ui의 id/password 사용을 위한 secret 생성

## linkerd-viz-secret.yaml

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: web-ingress-auth
  namespace: linkerd-viz
data:
  auth: YWRtaW46JGFwcjEkbjdDdTZnSGwkRTQ3b2dmN0NPOE5SWWpFakJPa1dNLgoK
  • 해당 secret에 의해 설정되는 로그인 id와 password는 admin/admin이다.

 

secret 적용 및 확인

$ kubectl apply -f linkerd-viz-secret.yaml

$ kubectl get -f linkerd-viz-secret.yaml
NAME               TYPE     DATA   AGE
web-ingress-auth   Opaque   1      65m

 

ingress-nginx-controller를 통하여 진입하기 위한 ingress 설정

## linkerd-viz-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
  namespace: linkerd-viz
  annotations:
    nginx.ingress.kubernetes.io/upstream-vhost: $service_name.$namespace.svc.cluster.local:8084
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Origin "";
      proxy_hide_header l5d-remote-ip;
      proxy_hide_header l5d-server-id;
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: web-ingress-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
spec:
  ingressClassName: nginx
  rules:
  - host: test.example.com  # 개인 도메인 입력
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web
            port:
              number: 8084

 

ingress 적용 및 확인

$ kubectl apply -f linkerd-viz-ingress.yaml

$ kubectl get -f linkerd-viz-ingress.yaml
NAME          CLASS   HOSTS                ADDRESS                                                                              PORTS   AGE
web-ingress   nginx   test.example.com     a7d6cb3c13dc346e99a019527fef8c74-6eebbe74a26efd7d.elb.ap-northeast-2.amazonaws.com   80      64m

 

 

4. AWS Route 53 -> NLB 라우팅 대상 레코드 생성


AWS Route 53에 ingress-nginx-controller에 의해 생성된 NLB를 대상으로 지정하여 레코드 등록

  • AWS 로그인 -> Route 53 -> 호스팅 영역 -> {개인 호스팅 영역 이름 선택} -> 레코드 생성

 

5. 대시보드 접근


web 브라우저에서 도메인 입력하여 접근 (admin/admin)

로그인 화면

 

Linkerd 대시보드

 

반응형

'Service Mesh > Linkerd' 카테고리의 다른 글

Linkerd mTLS 통신 검증  (0) 2023.04.05
Linkerd 사이드카 주입  (0) 2023.04.05
Linkerd 대시보드 ID, Password 변경  (0) 2023.04.05
Linkerd 설치  (0) 2023.04.04
Linkerd 란?  (0) 2023.04.04

댓글