k8s는 대시보드 웹서비스를 제공한다. [Docs]
바로 설치해 사용해보자.
1. 대시보드 구축
먼저 k8s를 사용하기 위해 yaml 파일을 수정하자.
필자는 MetalLB와 Ingress를 사용하기에 대시보드 deployment를 이에 연동해야 한다.
공식 yaml에 다음 내용을 추가하자.
$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml $ vim recommended.yaml
# recommended.yaml 추가 내용 kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: LoadBalancer loadBalancerIP: 10.10.10.10 ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kubernetes-dashboard-ingress namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: ingressClassName: nginx tls: - hosts: - "kube.aaa.bbb.com" secretName: wildcard-tls rules: - host: kube.aaa.bbb.com http: paths: - path: / pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443 --- apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard
필자는 이미 kubernetes-dashboard 네임스페이스에 유효한 TLS 인증서(wildcard-tls)를 가지고 있으므로 HTTPS를 서비스할 수 있다.
그러나 대시보드 서비스는 기본적으로 HTTPS로 제공되기에 백엔드 프로토콜(HTTP)과의 괴리가 발생할 수 있다. (이 경우 400 에러가 발생한다)
이를 해결하기 위해 metadata.annotations에 backend-protocol을 HTTPS로 설정하는 구문을 추가하여야 한다.
이제 대시보드에 접속하기 위한 계정을 생성해야 한다. [Github]
2. 토큰 생성
k8s 대시보드는 기본적으로 bearer 토큰과 kubeconfig를 이용한 로그인을 강제한다.
그보다는 ID/PW로 로그인하는 게 편하지만 권장 사항이 아니므로 토큰을 이용해 로그인하기로 한다.
(사실 ID/PW 로그인 방법을 찾아보았으나 설정이 만만치 않다)
아래 명령어를 입력하면 토큰이 나온다.
토큰은 1회용인데다 시간 제한이 있으니 주의하자.
$ kubectl -n kubernetes-dashboard create token admin-user
3. 로그인
이제 대시보드에 접속해보자. (필자는 이전 글에 세팅된 환경에 따라 kube.aaa.bbb.com를 통해 접속하였다)

출력되는 토큰을 이용해 대시보드에 로그인하면 된다.
