4. Kubernetes 대시보드 설치

반응형

4. Kubernetes 대시보드 설치

 

1) 대시보드 설치 및 접근 허용 설정

 

Kubernetes 는 구성 현황 및 오브젝트들을 GUI 환경에서 볼 수 있도록 지원을 해줍니다.

 

(control 노드에서)

# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml

 

대시보드 접근을 활성화 합니다.

아래 명령이후 쉘로 빠져나오지 않는데, ctrl + z 후 bg (백그라운드 명령) 로 돌려놓고 netstat 로 살펴보면

127.0.0.1 로만 접근이 허용되어 있는것이 보입니다.

# kubectl proxy

 

이제 다시 fg (포어그라운드 명령) 도 돌리고, ctrl + c 버튼으로 명령을 취소합니다.

어디에서든 접속이 가능하도록 하기 위해 아래 작업을 계속 진행합니다.

 

kubernetes-dashboard 네임스페이스의 서비스를 확인합니다.

# kubectl get services -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.102.90.181   <none>        8000/TCP   5m14s
kubernetes-dashboard        ClusterIP   10.105.198.81   <none>        443/TCP    5m14s

 

# kubectl edit services kubernetes-dashboard -n kubernetes-dashboard

...
spec:
  ...
  type: NodePort    // ClusterIP 를 NodePort 변경 후 입력후 저장 (반드시 :wq!)
...

 

접근 가능한 클러스터 IP 가 변경되었습니다.

# kubectl get services -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.102.90.181   <none>        8000/TCP        17m
kubernetes-dashboard        NodePort    10.105.198.81   <none>        443:32085/TCP   17m

 

웹브라우저에서 컨트롤 노드의 IP 와 포트를 이용해 접근하는데, 꼭 https 프로토콜로 접근합니다.

https://<컨트롤노드IP>:32085

브라우저에 따라 '안전하지 않은 페이지' 로 표시될 수 있는데, 이는 인증서가 아직 없어서 그런 것이므로 그냥 접속하도록 합니다.

토큰 또는 Kubeconfig 둘중 하나의 로그인 방법을 선택해야 하는데, 여기서는 토큰으로 로그인 하는 방법으로 진행하겠습니다.

컨트롤 노드에서 토큰을 생성하기 위해 yaml 파일을 작성합니다.

 

2) 계정 생성 및 admin 권한 부여

 

계정을 생성하기 위해 yaml 파일을 아래 내용으로 만듭니다.

# vi dashboard-account.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kubernetes-dashboard

 

계정을 생성합니다.

# kubectl create -f dashboard-account.yaml

 

계정 생성을 확인합니다. (sa : serviceaccount)

# kubectl get sa -n kubernetes-dashboard |grep admin
NAME                   SECRETS   AGE
admin                  0         10s

 

생성된 계정에 권한을 주기 위해 yaml 파일을 아래 내용으로 만듭니다.

# vi dashboard-role.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system

 

권한을 적용합니다.

# kubectl create -f dashboard-role.yaml

 

적용된 권한을 확인합니다.

# kubectl get clusterrolebinding admin
NAME    ROLE                        AGE
admin   ClusterRole/cluster-admin   12m

이제 로그인에 필요한 계정의 token 을 출력합니다.

Kubernetes 1.24 버전 부터는 kubectl get 명령으로 token 이 확인 되지 않아 아래 내용으로 확인해야 합니다.

# kubectl create token admin -n kubernetes-dashboard
eyJhbGciOiJSUzI1NiIsImtpZCI6IktFTlFFRkt6ajZDX2VnV0NZNs93dWZ6TUhBVFBNY1RnUTBBZWVIa0dSeGcifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlem5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjcyNzf1ODI0LCJpYXQiOjE2NzI3MjIyMeQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLzxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOierdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdWe0Ijp7Im5hbWUiOiJhZG1pbiIsInVpZCI6IjAzYTJlZDAwLWI5ZDAtNDY5OC04NWE3LTE3MzU5ZDI5YzllMyJ9fSwibmJmIjowNjcyNzIyMjI0LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4ifQ.iN6W5bbpQRYNUoVss-Z6YtP83SaoG9m2Qe6-V41ypaWT6p12QTDhDEtOXAtP7j9o4Mwm-WrlM_rfqR9vw7F-BeWmfyfjZkCcpkE-sOzQ_NtmTL8OMzfnOmuxYhYnOdvzM8j66yTd8-osEqcQ023Tx1t7nQlbALUwu6G6p1kXx9mtMROnqkQRnr6_e89WejwaCsYC7k4WMs5NkA48Wselmrnww-kf5Fl-y3PFjhWjRIC-IU1nlZALBPBMwIKsTBFCt7RmhsrXD0UA7RacZog5U-eSeYJRKKGKzW7PmFXEwIIdFeCTWUYJOk4-Nn_nfyxe3Ismt7q8xbuh6XDCzmFYaQ

 

출력된 token 전체를 복사하여 웹브라우저의 로그인 화면 token 입력란에 넣고 [로그인] 버튼을 누르면 관리 페이지에 로그인 할 수 있습니다.

 

반응형

댓글()