Kubernetes Web UI Dashboard 배포 및 사용법
Kubernetes Dashboard 는 Kubernetes 클러스터를 시각적으로 관리할 수 있는 웹 기반 UI입니다. 이를 통해 클러스터의 리소스를 모니터링하고, 애플리케이션 배포 상태를 확인하며, 직접 추가, 수정 및 삭제하는 등의 작업을 수행할 수 있습니다. 본 문서에서는 Kubernetes Dashboard의 배포 과정과 사용법을 상세히 설명합니다.
목차
1. 환경구성
2. Kubernetes Dashboard 배포 및 접근
3. Kubernetes Dashboard 사용법
3-1. Kubernetes Dashboard Deployment Scale up & 추가 & 수정 & 삭제, 재시작
3-2. Kubernetes Dashboard Pod Log & Exec
3-3. Kubernetes Dashboard 설정
4. 결론
1. 환경구성
- Kubernetes : 1.30.4
2. Kubernetes DashBoard 배포 및 접근
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
Dashboard의 manifest를 배포하게 되면 아래와 같이 Dashboard Metrics Scraper(Kubernetes 메트릭 수집), Kubernetes-Dashboard(Kubernets Dashboard Web UI)를 배포된 것을 확인할 수 있습니다.

Kubernetes Port Forward를 통해 Dashboard로 접속합니다.
(아래의 예제에서는 모든 IP에 대한 접속을 허용하여 사용했습니다.)
$ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard [포트 번호]:443 --address 0.0.0.0
Port Forwarding을 통해 Dashboard Web UI로 접속하게 되면 아래와 같은 로그인 페이지를 확인할 수 있습니다.

Admin User로 로그인 할 토큰을 생성합니다.
아래와 같이 ClusterRoleBinding, ClusterRole, ServiceAccount 리소스를 생성합니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
생성했었던 ServiceAccount를 이용하여 JWT 토큰을 생성합니다.
Kuberntest Web UI Dashboard에서 k8s 모든 리소스를 추가, 수정, 삭제할 수 있기 때문에 URL과 토큰을 안전하게 관리해야 하며, 외부에 노출되지 않도록 주의해야 합니다.
$ kubectl -n kubernetes-dashboard create token admin-user

토큰을 이용하여 Kubernetes Dasbhaord로 접속할 수 있습니다.


3. Kubernetes Dashboard 사용법
첫 메인 페이지는 아래와 같습니다.
default Namespace로 지정되어 있고 Workload의 상태를 확인 할 수 있습니다.

첫 페이지에서 확인할 수 있는 리소스는 Deployment, Pods, Replicaset을 확인할 수 있습니다.
이름을 클릭하여 해당 리소스에 대한 자세한 내용을 확인할 수 있습니다.


위와 같은 리소스들을 Kubernetes 내장 대시보드에서 상태를 확인 및 추가, 수정, 삭제할 수 있습니다.
Kubernetes 내장 대시보드에서는 아래와 같은 리소스를 확인할 수 있습니다.
- WorkLoad : Cronjob, DaemonSet, Deployment, Job, Pod, Replicaset, ReplicationController, StatefulSet
- Service : Ingress, IngressClasses, Service
- Config & Storage : Configmap, PersistentVolumeClaim, Secret, StorageClass
- Cluster : ClusterRoleBinding, ClusterRole, Events, Namespace, NetworkPolicy, Node, PersistentVolume, RoleBinding, Role, ServiceAccount
- Custom Resource Definitions
3-1. Kubernetes Dashboard Deployment Scale up & 추가 & 수정 & 삭제, 재시작
- Deployment Scale up
default Namespace에 배포되어있는 nginx Deployment를 Scale up합니다. ( 현재 Pod는 2개입니다.)

replicas를 4로 지정하여 Deployment에서 Pod를 4개를 사용할 수 있도록 지정합니다.

아래와 같이 nginx Deployment의 Pod가 4개가 된 것을 확인할 수 있습니다.

- Deployment 및 리소스 생성

리소스를 YAML 형식으로 추가할 수 있고 아래와 같이 YAML파일, 서식을 통해 추가를 할 수 있습니다.
(서식은 Deployment, Service만 추가할 수 있습니다.)

위와 같이 Deployment, 이미지, Service, Replicas 개수를 지정하여 추가할 수 있습니다.
(Deployment)

(Service)

- Deployment 수정
nginx Deployment를 수정하여 Pod의 개수를 2로 지정합니다.(현재 Pod 1개입니다.)

replicas를 2로 지정하여 Pod가 2개로 생성될 수 있도록 수정합니다.

Deployment가 수정되어 Pod의 갯수가 증가한 것을 볼 수 있습니다.

- Deployment 삭제 & 재시작
Deployment 삭제와 재시작도 동일한 방식으로 진행하여 삭제할 수 있습니다.

삭제와 재시작은 각각 다른 옵션 필요없이 버튼을 눌러 삭제와 재시작을 진행 할 수 있습니다.


3-2. Kubernetes Dashboard Pod Log & Exec
- Pod Log
Pod는 Container의 Log와 Container에 접속하여 명령어를 사용할 수 있습니다.

Pod 내에서 지정된 Container의 로그를 확인할 수 있습니다.

현재 사용하고 있는 App Container 뿐만이 아니라 Init Container의 로그도 확인할 수 있습니다.

- Pod Exec
Kubernetes Dashboard Pod의 Exec를 통하여 Container의 쉘을 사용할 수 있습니다.

Exec 또한 Container를 선택하여 사용할 수 있습니다.

Pod의 수정 및 삭제는 위의 Deployment와 같습니다.
3-3. Kubernetes Dashboard 설정
대시보드에서 사용할 수 있는 설정들은 아래와 같습니다.
주로 메트릭 수집 갱신 설정을 지정할 수 있고 Dashboard에 표시 항목 갯수를 지정할 수 있습니다.

로컬 설정을 통해 테마의 색상과 언어를 지정할 수 있습니다.

4. 결론
Kubernetes Dashboard는 클러스터의 리소스를 효과적으로 관리할 수 있도록 도와주는 강력한 도구입니다. 이를 활용하면 CLI 없이도 클러스터의 상태를 직관적으로 확인하고, Deployment의 스케일 조정, 로그 확인, Pod 내 실행(Exec) 등의 다양한 작업을 쉽게 수행할 수 있습니다. 하지만, 관리자 권한을 가진 계정의 토큰이 유출되면 보안 위협이 발생할 수 있으므로 적절한 접근 제어 및 보안 조치가 필수적입니다.
Kubernetes에 대한 더 많은 정보를 알고싶으시다면 NGINX STORE Kubernetes 카테고리를 참고해주세요.
댓글을 달려면 로그인해야 합니다.