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 설치2. Helm을 사용하여 linkerd-viz 설치
3. Ingress 구성
4. AWS Route 53 -> NLB 라우팅 대상 레코드 생성
5. 대시보드 접근
실습
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
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이다.
- 아이디와 비밀번호를 변경하고 싶으면 해당 [Linkerd 대시보드 ID, Password 변경] 글을 참조하면 된다.
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)
'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 |
댓글