[CKS] 18. Kubernetes Dashboard
쿠버네티스 대시보드로 클러스터를 시각적으로 관리하고 앱 배포, 리소스 모니터링을 편리하게 수행하세요. 안전한 사용을 위해 접근 보안 설정은 필수입니다.
개요
Kubernetes Dashboard는 클러스터의 시각적 개요을 재공하는 웹 UI입니다.
대시보드 인터페이스 상에서 직접 클러스터 활동을 모니터링하고 리소스 관리, 애플리케이션 배포를 수행할 수 있습니다. 하지만 Secret 등의 민감한 정보가 표시될 수 있어 접근을 보호하고 무단 사용을 방지하기 위한 대비가 필요합니다.
Tesla의 RedLock 클라우드 보안팀이 보고한 바에 따르면 보안 구성이 되지않은 대시보드가 암호화폐 채굴에 악용된 사례를 확인했습니다.
Deployment
대시보는 github 구성을 적용하여 배포되며, 배포시 kubernetes-dashboard
Namespace가 생성되고 객체가 설정됩니다. 각 Deployment, Service, Secret, ConfingMap 리소스가 생성되며 대시보드 구성에 필요한 호스팅 구성을 포함합니다.
대시보드를 실행하는 방법입니다.
kubectl apply -f https://<path-to-Kubernetes-dashboard>/recommended.yaml
기본적으로 대시보드 서비스는 클러스터 IP로 설정되어 클러스터 내부에서만 접근이 가능합니다. 다음을 통해 서비스 구성을 검토할 수 있습니다.
kubectl describe service kubernetes-dashboard -n kubernetes-dashboard
Secure Access via kubectl Proxy
쿠버네티스 클러스터를 관리하는 노드(컴퓨터)에는 보통 그래픽 화면(GUI)이 없어서 직접 대시보드를 열 수 없습니다. 이때 사용하는 것이 kubectl proxy
명령어입니다. 이 명령어는 사용자의 개인 컴퓨터와 쿠버네티스 apiserver 사이에 안전한 비밀 통로(secure tunnel)를 만들어주는 역할을 합니다.
kubectl proxy
Starting to serve on 127.0.0.1:8001 # 실행 확인
이제 localhost
로 접근하여 대시보드 서비스로 접근할 수 있습니다.
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/<서비스이름>/proxy/
다만 이 방법은 개발자 개인이 임시로 접속할 때 사용하기에 가장 이상적이고 간편합니다. 여러 사람이 함께 사용하는 환경이라면, 누가 어떤 작업을 할 수 있는지 권한을 세밀하게 제어하는 별도의 인증 및 인가 절차를 반드시 추가해야 합니다.
Service 유형 변경
기본적으로 ClusterIP로 배포됩니다. Loadbalancer, NodePort같이 서비스 유형을 변경하여 대시보드를 외부에 노출시킬 수 있습니다. 하지만 이러한 방법은 클러스터 경계를 넘어 접근을 허용할 수 있으므로 인증 매커니즘과 Network Access Control을 수행하는 것이 좋습니다.
Kubernetes 대시보드 보안 및 고급 인증 메커니즘 구현에 대한 자세한 내용은 Joe Beda와 같은 Kubernetes 전문가가 제공하는 전문가 리소스를 참조하세요.