Kubernetes Dashboard
- 가이드대로 설치했다면 현재 대시보드 버전은 v1.10.1
- v1.10.1은 근데 보안에 좋지 않음
- 새로 설치하는 과정을 할 예정
1. AS-IS: v1.10.1
- Kube-system 네임스페이스에 Deployment로 대시보드 파드가 설치
- 이 파드는 서비스와 연결됨
- 설치 시 kubectl 명령어로 proxy를 올려놔서 사용자는 proxy로 보안없이 http로 접속 가능
- Login 시 SKIP으로 별도의 인증없이 로그인해서 대시보드를 통해 쿠버네티스 오브젝트 조회와 수정이 가능
- 대시보드 파드가 API 서버에 접근했을 때, 클러스터 자원에 대한 권한을 가지고 있기 때문에 가능했던 것
대시보드 파드는 어떻게 클러스터 자원 권한을 가지고 있을까?
- 대시보드 파드는 Service Account와 연결되어 있음
- Service Account는 RoleBinding을 통해서 Role이 연결되어 있음
- Role에 대한 권한은 네임스페이스 내에서만 사용 가능
- ClusterRoleBinding을 만들어서 cluster-admin과 ServiceAccount를 연결
- cluster-admin: 쿠버네티스를 설치하면 기본적으로 설치되는 기본 ClusterRole
- 대시보드는 cluster-admin 권한으로 API 서버에 접근할 수 있게됨
- 프록시 서버를 열어놔서 프록시의 아이피와 포트번호만 알면 클러스터에 접근 가능해서 위험
- 대시보드도 SKIP 버튼이 보안적으로 좋지 않음
2. TO-BE: v2.0.0
- 프록시를 중간에 두지 않고, API 서버로 바로 접근할 예정
- kubeconfig에
Client crt
,Client key
가 필요함 - 위 두 파일을 합쳐서
client p12
파일을 만들어서 PC에 인증서를 만듦 - 이렇게 하면 https로 Kubernetes API Server에 접속 가능
- 내부 구조는 v1.10.1과 유사하지만 추가적으로 kubernetes-metrics-scraper 파드가 설치됨
- 사전에 metrics 서버가 설치된다면, 노드나 파드의 성능정보를 대시보드에 그래프로 표시
- 이 때 kubernets-dashboard 이름의 ClusterRoleBinding과 ClusterRole가 생김
- kubernetes-metrics-scraper 파드의 파드, 노드 조회 권한을 주기위한 용도
- Service Account에 연결된 토큰 값으로 외부 사용자는 대시보드에서 토큰 로그인을 할 수 있음
- 다른 사람 입장에서는 아이피, 포트정보로 접근 불가, 쿠버네티스 인증서도 있어야 하고, 대시보드에 접속돼도 로그인할 수 있는 토큰값이 필요
출처
인프런 - 대세는 쿠버네티스
'네트워크 > k8s' 카테고리의 다른 글
[k8s] 35. StatefulSet (0) | 2021.02.25 |
---|---|
[k8s] 34. Kubernetes Dashboard - 실습 (0) | 2021.02.24 |
[k8s] 32. Authorization - 실습 (0) | 2021.02.24 |
[k8s] 31. Authorization - RBAC, Role, RoleBinding (0) | 2021.02.24 |
[k8s] 30. Authentication - 실습 (0) | 2021.02.24 |