[Kubernetes] Dashboard ์ค์น
๐ 1. Kubernetes Dashboard๋?
Kubernetes Dashboard๋ ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ฅผ ์น UI๋ก ์๊ฐํํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๊ณต์ ์น ์ธํฐํ์ด์ค์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
- Pod / Deployment / Service ์กฐํ
- ๋ก๊ทธ ํ์ธ
- ๋ฆฌ์์ค ์์ฑ ๋ฐ ์ญ์
- ๋ค์์คํ์ด์ค ๊ด๋ฆฌ
- RBAC ๊ธฐ๋ฐ ์ธ์ฆ
๐ฆ 2. Dashboard ์ค์น
๊ณต์ manifest๋ฅผ ์ด์ฉํด ์ค์นํฉ๋๋ค.
1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
๐ ์์ฑ๋๋ ์ฃผ์ ๋ฆฌ์์ค
Namespace: kubernetes-dashboardDeployment: kubernetes-dashboardDeployment: dashboard-metrics-scraperServiceServiceAccountRole / RoleBinding
์ค์น ํ์ธ:
1
kubectl get all -n kubernetes-dashboard
๐ 3. Dashboard ์ธ๋ถ ์ ์ (NodePort ๋ฐฉ์)
๊ธฐ๋ณธ์ ์ผ๋ก Service ํ์
์ ClusterIP์ด๋ฏ๋ก ์ธ๋ถ์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
1๏ธโฃ Service ํ์ ๋ณ๊ฒฝ
1
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
์๋ ๋ถ๋ถ์ ์์ ํฉ๋๋ค.
1
2
3
4
5
6
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 31000
์ ์ฅ ํ ํ์ธ:
1
kubectl get svc -n kubernetes-dashboard
์์ ์ถ๋ ฅ:
1
kubernetes-dashboard NodePort 10.97.112.43 443:31000/TCP
2๏ธโฃ ๋ธ๋ผ์ฐ์ ์ ์
1
https://<NodeIP>:31000
โ ๏ธ Self-signed ์ธ์ฆ์์ด๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์์ ๋ณด์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๐ 4. ๊ด๋ฆฌ์ ๊ณ์ ๋ฐ ํ ํฐ ์์ฑ
Dashboard๋ ๊ธฐ๋ณธ์ ์ผ๋ก Token ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
1๏ธโฃ ServiceAccount ์์ฑ
1
2
3
4
5
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
1
kubectl apply -f admin-user.yaml
2๏ธโฃ ClusterRoleBinding ์์ฑ
1
2
3
4
5
6
7
8
9
10
11
12
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
1
kubectl apply -f cluster-role-binding.yaml
3๏ธโฃ ํ ํฐ ์์ฑ
1
kubectl -n kubernetes-dashboard create token admin-user
์ถ๋ ฅ๋ ํ ํฐ์ ๋ณต์ฌํ์ฌ Dashboard ๋ก๊ทธ์ธ ํ๋ฉด์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
โ ๏ธ 5. ์์ฃผ ๋ฐ์ํ๋ ์ด์
๐ธ 1. NET::ERR_CERT_INVALID
- Self-signed ์ธ์ฆ์๋ก ์ธํ ๋ธ๋ผ์ฐ์ ๊ฒฝ๊ณ
- ์ค์๋น์ค ํ๊ฒฝ์์๋ Ingress + TLS ๊ตฌ์ฑ ๊ถ์ฅ
๐ธ 2. ๊ถํ ๊ด๋ จ ์๋ฌ
Forbidden์ค๋ฅ ๋ฐ์ ์ RBAC ํ์ธ- ์ค ์ด์ ํ๊ฒฝ์์๋
cluster-admin๋์ ์ต์ ๊ถํ Role ์ฌ์ฉ ๊ถ์ฅ
๐ ๋ณด์ ๊ด์ ์์์ ์ฃผ์์ฌํญ
์ด์ ํ๊ฒฝ์์ ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ:
- โ NodePort ์ง์ ์คํ์ ์ง์
- โ Ingress + ์ธ์ฆ์(TLS) ์ ์ฉ
- โ OIDC / SSO ์ฐ๋ ๊ณ ๋ ค
- โ ์ต์ ๊ถํ RBAC ๊ตฌ์ฑ
๐ง ๊ฐ๋ฐ์ ๊ด์ ์ ๋ฆฌ
| ํญ๋ชฉ | Dev ํ๊ฒฝ | ์ด์ ํ๊ฒฝ |
|---|---|---|
| Service ํ์ | NodePort | Ingress |
| ์ธ์ฆ | Admin Token | OIDC / SSO |
| ๊ถํ | cluster-admin | ์ต์ ๊ถํ |
| ์ธ์ฆ์ | Self-signed | ๊ณต์ธ TLS |
๐ ๋ง๋ฌด๋ฆฌ
Kubernetes Dashboard๋:
- ๋น ๋ฅด๊ฒ ํด๋ฌ์คํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๊ณ
- ๋ฆฌ์์ค ๋๋ฒ๊น ์ ๋งค์ฐ ์ ์ฉํ์ง๋ง
- ๋ณด์ ์ค์ ์์ด ์ด์ ํ๊ฒฝ์ ๋ ธ์ถํ๋ ๊ฒ์ ์ํํฉ๋๋ค.
Dev/Test ํ๊ฒฝ์์๋ ๋น ๋ฅธ ์ค์ต์ฉ์ผ๋ก, ์ด์ ํ๊ฒฝ์์๋ ๋ณด์ ๊ตฌ์ฑ์ ์ถฉ๋ถํ ๊ณ ๋ คํ์ฌ ์ฌ์ฉํ์ธ์.