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를 통해 접속하였다)

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