[k8s 구축] 6. k8s 대시보드 설치

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

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

Series Navigation<< [k8s 구축] 5. k9s 관리 도구 설치[k8s 구축] 7. GPU 서버 JupyterLab 구축 >>

댓글 남기기