Kubernetes

[kubernetes] 3. kubernetes 관리도구1 - kubernetes dashboard

su''@ 2025. 3. 18. 05:24

1. kubernetes Dashboard란?

  • kubernetes Dashboard는 kubernetes 클러스터를 위한 웹 기반 UI를 제공한다. kubernetes 환경관리, 문제해결, monitoring 하는 직관적인 접근 방식을 제공하는데, 모든 노드에서 메모리 및 CPU 사용량을 포함한 기본 지표에 접근 가능하다.
  • k8s에서 제공하는 거의 모든 워크로드 리소스의 워크로드 상태를 모니터링할 수 있다.

 

2. Dashboard 설치 : https://github.com/kubernetes/dashboard/releases

  •  k8s의 버전에 맞는 release를 선택해 설치하면 된다.
    • image
      kubernetes Dashboard : docker.io/kubernetesui/dashboard:v2.7.0
      Matrics scraper : docker.io/kubernetesui/metrics-scraper:v1.0.8
  • install
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml


3. Dashboard 접속방법

  • proxy port를 이용해 접속
    # local port 생성
    kubectl proxy --port=[port#]&
  • NodePort를 이용해 접속
    생성된 dashboard의 service를 ClusterIP → NodePort로 변경
  • APIServer를 이용한 보안 접속

 

4. Dashboard  관리 목적 serviceaccount 생성 & 권한 부여

$ mkdir dashboard_rbac && cd $_
~/dashboard_rbac$ vi dashboard-admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

~/dashboard_rbac$ vi ClusterRoleBinding-admin-user.yml
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
    
# serviceaccount 생성
$ kubectl apply -f dashboard-admin-user.yaml
serviceaccount/admin-user created

# SA-ClusterRole Binding 
$ kubectl apply -f ClusterRoleBinding-admin-user.yaml
clusterrolebinding.rbac.authorization.k8s.io/admin-user created

 

5. APIserver를 이용한 보안 접근을 위해 *.crt와 *.key 생성

# token 생성
$ kubectl -n kubernetes-dashboard create token admin-user

$ grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
$ grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key

$ ls
ClusterRoleBinding-admin-user.yaml  dashboard-admin-user.yaml  kubecfg.crt  kubecfg.key

 

6. openssl pkcs12(Personal Information Exchange Syntax) 인증서 생성

      • P12 확장자 또는 pfx 확장자 파일 처리에 대한 OpenSSL 명령어 사용법
        $ openssl pkcs12 -export -clcerts-inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-admin"
         Enter Export Password: (passwd)
         Verifying - Enter Export Password: (passwd)
        
        $ sudo cp /etc/kubernetes/pki/ca.crt ./
        $ ls
         ca.crt  ClusterRoleBinding-admin-user.yml dashboard-admin-user.yaml kubecfg.crt  kubecfg.key kubecfg.p12


      • 윈도우로 생성된 인증서 복사: WinSCP를 이용해 dashboard_rbac 디렉토리를 윈도우로 이동



      • powershell or cmd를 관리자 권한으로 실행
        $ cd [인증서 존재 경로]
        $ certutil.exe -addstore "Root" ca.crt
        Root "신뢰할 수 있는 루트 인증 기관"
        서명이 공개 키와 일치합니다.
         "kubernetes" 인증서가 저장소에 추가되었습니다.
         CertUtil: -addstore명령이 성공적으로 완료되었습니다.
        
        $ certutil.exe -p k8spass# -user -importPFX kubecfg.p12
        "kubernetes-admin" 인증서가 저장소에 추가되었습니다.
        CertUtil: -importPFX명령이 성공적으로 완료되었습니다.
        
        $ certmgr.msc

      • dashboard 접속
        • https://192.168.56.100:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
        • 크롬의 incognito 탭을 이용해 접속 (ctrl+shift+n)


        • 토큰에 위에서 발급받았던 admin-user token을 입력해주면 접속 가능하다. 이 때 토큰은 유효시간이 있기 때문에 만료됐을 경우에는 재발급을 받아줘야 한다.
          만약 재발급 받는 게 불편하다면  --token-ttl=0  container args에 추가하여 세션시간 초과를 비활성화 시켜주면 된다.
          # token 인증을 완전히 비활성화하려면 다음을 추가 →  --enable-skip-login
          $ kubectl -n kubernetes-dashboard edit deployments kubernetes-dashboard
          ---
              spec:
                containers:
                - args:
                  - --auto-generate-certificates
                  - --namespace=kubernetes-dashboard
                  - --token-ttl=0
        • pod 재시작 확인

        • pod 배포 후 dashboard  확인