반응형
kubernetes dashboard를 설치하게 되면 기본적으로 kong proxy pod가 생성되면서,
이 kong proxy를 통해 사용하게되는데, 이를 비활성화하고 따로 ingress 적용을 통해 kubernetes dashboard에 접속하고
사용할 수 있다.
일반 ingress 적용 가이드 -
2024.10.22 - [Develop/k8s] - kubernetes dashboard ingress 연결 방법
1. 설치시 kong proxy disabled
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
--create-namespace --namespace kubernetes-dashboard \
--set kong.enabled=false
2. ingress 적용
아래 URL과 service 조회를 통해 ingress를 생성한다
https://github.com/kubernetes/dashboard/blob/master/hack/gateway/prod.kong.yml
kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard-api ClusterIP 10.106.25.34 <none> 8000/TCP 6m13s
kubernetes-dashboard-auth ClusterIP 10.101.168.28 <none> 8000/TCP 6m13s
kubernetes-dashboard-metrics-scraper ClusterIP 10.104.27.35 <none> 8000/TCP 6m13s
kubernetes-dashboard-web ClusterIP 10.109.176.153 <none> 8000/TCP 6m13s
dashboard ui에 로그인하기위해선 tls 적용이 필요하다.
Kubernetes Dashboard 아래 소스를 보면 setTokenCookie 부분이 있는데, 이 부분 때문에 tls가 필요해보인다.
아님말고...?
dashboard-master/modules/web/src/common/services/global/authentication.ts
---
private setTokenCookie_(token: string): void { if (this.isCurrentProtocolSecure_()) { this.cookies_.set(this.config_.authTokenCookieName, token, null, null, null, true, 'Strict'); return; } if (this.isCurrentDomainSecure_()) { this.cookies_.set(this.config_.authTokenCookieName, token, null, null, location.hostname, false, 'Strict'); } }
---
tls 적용을 위한 인증서 및 secret 생성
# 인증서 생성
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=dashboard.wky.kr/O=Kubernetes" -addext "subjectAltName = DNS:dashboard.wky.kr"
# secret 생성
kubectl create secret tls tls-dashboard --key tls.key --cert tls.crt -n kubernetes-dashboard
ingress 생성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ingressClassName: nginx
rules:
- host: dashboard.wky.kr
http:
paths:
- path: /api/v1/login
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-auth
port:
number: 8000
- path: /api/v1/csrftoken/login
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-auth
port:
number: 8000
- path: /api/v1/me
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-auth
port:
number: 8000
- path: /api
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-api
port:
number: 8000
- path: /metrics
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-api
port:
number: 8000
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard-web
port:
number: 8000
tls:
- hosts:
- dashboard.wky.kr
secretName: tls-dashboard
3. 로그인테스트를 위한 계정 및 토큰 발급
계정생성
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
토큰발급
kubectl -n kubernetes-dashboard create token admin-user
4. 로그인 및 확인
tls 적용을 했으므로 반드시 https로 접속 후 테스트한다.
반응형
'Develop > k8s' 카테고리의 다른 글
configMap File Volume Mount (0) | 2025.03.21 |
---|---|
k8s Audit Policy (k8s 감사 정책) (0) | 2024.12.21 |
k8s ServiceAccount Token Refresh (0) | 2024.12.17 |
인증서 방식 계정 생성 (Certificates and Certificate Signing Requests) (0) | 2024.11.29 |
Containerd x509: certificate signed by unknown authority 설정 (0) | 2024.11.19 |