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 입력란에 넣고 [로그인] 버튼을 누르면 관리 페이지에 로그인 할 수 있습니다.
'리눅스 > Containers & Kubernetes' 카테고리의 다른 글
Ubuntu 22.04 에서 CRI-O, Kubernetes 1.28 Cluster, Calico 설치 및 애플리케이션 배포 (0) | 2023.08.28 |
---|---|
Docker 컨테이너 생성하지 않고 이미지 쉘에 접근하기 (0) | 2023.04.05 |
3. Namespace 생성, LimitRange 를 이용한 자원 사용량 제한, POD 및 Deployment 생성, 자원 제한 확인 (0) | 2022.12.29 |
2. CRI-O 와 Kubernetes 를 활용한 httpd 배포 (0) | 2022.12.28 |
1. Ubuntu 22.04 에서 CRI-O, Kubernetes 1.26, Calico 설치하기 (0) | 2022.12.26 |