개인적인 기록/YIL(Yesterday I Learned)

쿠버네티스 대시보드 설정 변경

Jerry_이정훈 2022. 2. 13. 15:44
728x90

쿠버네티스 대시보드가 접속이 안된다고 하여 확인하니 처음에는 대시보드 파드 자체가 없었다. 나의 희미한 기억에 쿠버네티스 대시보드는 kube-system 네임스페이스에서 실행 중이었는데 아예 파드 자체가 없었다.

 

하지만 멀쩡한 파드가 갑자기 사라질리가 없었다. 어느 버전인가 쿠버네티스 대시보드는 kubernetes-dashboard라는 별도의 네임스페이스에서 실행되는 걸로 바뀌었다. 내가 내 기억력을 탓하지 않고 애꿎은 파드만 날려버렸다. 머, 다행히 쿠버네티스 대시보드는 단순 관리 용도라 금방 실행 가능하였다. 1줄이면 돌아간다.

[spkr@erdia22 ~ (ubun12:loki)]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

(jp-prod:kubernetes-dashboard)jerry@Jerrys-MacBook-Pro ~ % k get pod,svc -n kubernetes-dashboard
NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-5b8896d7fc-hmpgs   1/1     Running   0          62m
pod/kubernetes-dashboard-897c7599f-mgv6s         1/1     Running   0          62m

NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/dashboard-metrics-scraper   ClusterIP   172.20.70.72    <none>        8000/TCP   62m
service/kubernetes-dashboard        ClusterIP   172.20.14.151   <none>        443/TCP    62m

대시보드에서 클러스터 전체 현황을 확인하기 위하여 cluster-admin 권한을 가지는 sa, clusterrolebinding을 생성한다.

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

 

GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters

General-purpose web UI for Kubernetes clusters. Contribute to kubernetes/dashboard development by creating an account on GitHub.

github.com

이제 웹으로 접속하기 위해 서비스를 설정한다. 온프렘 환경이면 맘 편하게 MetalLB LB 타입으로 생성할 건데 여기는 EKS 환경이라 LB를 사용하면 추가 NLB 비용이 발생한다. 조금 불편하지만 공식 쿠버네티스가 권고하는대로 'kubectl proxy'를 사용한다. iTerms2 콘솔에서 kubectl proxy 를 실행하고 웹 브라우저 주소로 api server를 호출한다.

(jp-prod:kubernetes-dashboard)jerry@Jerrys-MacBook-Pro ~ % k proxy
Starting to serve on 127.0.0.1:8001

(창을 닫지 않고 웹 브라우저로 접속한다.)

웹 브라우저를 열고 아래 api 호출 url을 입력한다.

http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login 

이제 위에서 생성한 cluster-admin 의 토근 정보를 아래와 같이 생성하여 위 화면에 입력하면 정상적으로 접속된다.

(jp-prod:kubernetes-dashboard)jerry@Jerrys-MacBook-Pro 00.clusterRoleSA % kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

(보안상 토근 정보 생략)

이제 전체 대시보드 현황을 확인할 수 있다. 프로메테우스 등에 비하여 많이 부족하지만 나름 편하게 보기에는 전혀 부족함이 없다고 생각한다. 

보안 권고 사항은 대시보드를 실행하지 않는 것이다. 하지만 위와 같이 k proxy, 인증을 사용하면 안전한 접속이라 조금 낫지 않을까 싶다.

접속이 불편하다고 하면 ALB 인그레스에 붙혀서 추가 비용없이 접속하도록 할 계획이다. 아직 내가 ALB 설정을 테스트하지 않아 다음에 해 볼 생각이다. 큰일도 참 많은데 내가 할 수 있는 짜잘한 작은 일부터 하나하나 하고 있다. 조금씩 속도를 올려서 항상 그렇듯이 빠르면서도 정확하게 업무 처리할 수 있도록 해야겠다.

반응형

'개인적인 기록 > YIL(Yesterday I Learned)' 카테고리의 다른 글

22년 10주 차 Weekly Review  (0) 2022.03.14
이직 4주 차 회고  (0) 2022.03.06
로컬PC 원격 k8s 클러스터 관리  (0) 2022.02.12
OJT 1일차  (0) 2022.02.10
OJT 3일 차  (0) 2022.02.10