티스토리 뷰
2024.10월 현재 kuberenetes-dashboard는 Helm 설치만 지원합니다.
이 가이드에서는 k8s cluster가 아닌 외부 VM을 통해 kubernetes-dashboard를 접근하는 방법을 가이드 합니다.
1. 설치
아래 공식 사이트를 참조하여 Helm으로 설치합니다.
https://github.com/kubernetes/dashboard
설치 후 Pod가 실행되었는지 확인합니다.
ubuntu@infra:~/.kube$ k get po
NAME READY STATUS RESTARTS AGE
curl 1/1 Running 1 (172m ago) 176m
kubernetes-dashboard-api-5966688c8-2d94m 1/1 Running 0 103m
kubernetes-dashboard-auth-77d4b5c96f-bs7qr 1/1 Running 0 103m
kubernetes-dashboard-kong-7696bb8c88-cvs25 1/1 Running 0 155m
kubernetes-dashboard-metrics-scraper-6d659646c4-6kkgh 1/1 Running 0 155m
kubernetes-dashboard-web-669b6977f7-nkrc5 1/1 Running 0 155m
서비스 객체를 확인합니다.
'kubernetes-dashboard-kong-proxy'를 통해 접근하게 됩니다.
ubuntu@infra:~/.kube$ k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard-api ClusterIP 10.111.163.222 <none> 8000/TCP 153m
kubernetes-dashboard-auth ClusterIP 10.106.227.182 <none> 8000/TCP 153m
kubernetes-dashboard-kong-manager NodePort 10.108.214.153 <none> 8002:30597/TCP,8445:30107/TCP 153m
kubernetes-dashboard-kong-proxy ClusterIP 10.104.18.108 <none> 443/TCP 153m
kubernetes-dashboard-metrics-scraper ClusterIP 10.98.145.116 <none> 8000/TCP 153m
kubernetes-dashboard-web ClusterIP 10.100.152.131 <none> 8000/TCP 153m
2. 접근 테스트
외부에서 접근 가능하고 k8s cluster를 private ip로 접근 가능한 VM에서 작업합니다.
보통 bastian 또는 infra VM일겁니다.
아래 명령으로 proxying을 합니다. 아래 예에서 '10443'포트는 변경할 수 있습니다.
sudo kubectl port-forward --namespace kubernetes-dashboard service/kubernetes-dashboard-kong-proxy 10443:443 --address=0.0.0.0
https로 접근해야 하기 때문에 Local PC의 hosts 파일에 임의의 도메인을 등록합니다.
만약, 공인 도메인이 있다면 그걸 사용하시면 됩니다. 아래 예를 참조하여 설정 하십시오.
당연히 아래 예에서 13.215.90.232는 외부에서 접근 가능한 VM의 public IP이고
mydashboard.io은 편한 도메인으로 바꾸면 됩니다.
13.215.90.232 mydashboard.io
웹 브라우저에서 https://{host}:{proxy port}로 접근합니다.
위 예에서는 https://mydashboard.io:10443으로 접근하면 됩니다.
3. 로그인 Service Account 생성 및 권한 부여
로그인 할 Service Account를 kubernetes-dashboard 네임스페이스에 생성합니다.
이 작업은 k8s cluster 접근이 가능한 아무 VM에서 하시면 됩니다.
먼저 namespace를 kubernetes-dashboard로 변경 합니다.
kubens kubernetes-dashboard
Service Account를 생성합니다. 이름은 아무거나 상관 없지만 이후 작업 시 실수 안하기 위해 'kube-admin'으로 합니다.
k create sa kube-admin
super admin권한인 'cluster-admin'을 부여합니다.
kubectl create clusterrolebinding kube-admin --clusterrole cluster-admin --serviceaccount=kubernetes-dashboard:kube-admin
kube-admin을 위한 Secret 객체를 만듭니다. 이 객체의 token값으로 로그인하게 됩니다.
아래와 같이 yaml파일을 만들고, kubectl apply 명령으로 생성합니다.
apiVersion: v1
kind: Secret
metadata:
name: kube-admin-secret
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: kube-admin
type: kubernetes.io/service-account-token
아래는 생성하는 예시 입니다.
kubectl apply -f secret-kube-admin.yaml
인증 토큰 값을 구합니다.
아래 예시를 참고하세요. 여기서 'token:' 뒤에 있는 값이 인증 토큰 값입니다.
ubuntu@bastion:~/install$ kubectl describe secret kube-admin-secret
Name: kube-admin-secret
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: kube-admin
kubernetes.io/service-account.uid: 504181a0-a22e-4887-8175-83893dd0b2f5
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1107 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlU2UFlQeGFNWGc3QWhVdTRfNmdSSV84N1NuZ0dieFNING9wOEJtbkg0OTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlLWFkbWluLXNlY3JldCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTA0MTgxYTAtYTIyZS00ODg3LTgxNzUtODM4OTNkZDBiMmY1Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmt1YmUtYWRtaW4ifQ.ovlY82LPmT4y3fTeLYMN-hLT5fNYu0fjF-p0LJ-WDe_yVJxPOvTjXKMoB_n4Hb8rba6wRtR2h1UYgIddlc7i2CiZJ8O7koATwSExv-ReaaGr1hveenIdOgcxVaId2ZfeQnwrnEPx8FFqKwFIdv60ehQ5jHtdZEQbvK3jpZzYZvOpeyFQmTUENlVZr83F6TMd-kMpNIqq97ywfYcLJHZZVlu5o5joS0TPnz6bm62L4KzqPhRC899ZGxAGzcwru5bPauF-Ezo2Y-z0aHNOUelCIameCiGXo1tqIsXM9eKOgLGJLNgQJkkrgB_gwew070zq5uuE3N2rP5Fhmy6z3VvTLQ
이 인증 토큰으로 로그인 해 보십시오.
4. kubenetes-dashboard proxying을 service 로 등록
터미널이 종료되도 proxying이 종료되지 않게 하고, VM이 시작할 때 자동으로 proxying명령이 수행되게 합니다.
먼저, 위에서 kubectl로 프락싱한 것을 CTRL-C로 종료합니다.
이 작업은 반드시 proxying할 VM에서 하셔야 합니다.
작업할 user는 sudo권한을 부여받은 사용자 또는 root로 하시면 됩니다.
service 정의 파일을 만듭니다.
ubuntu@infra:~/.kube$ sudo vi /etc/systemd/system/kubectl-port-forward.service
[Unit]
Description=Kubernetes Port Forward Service
After=network.target
[Service]
Type=simple
ExecStart=sudo kubectl port-forward --namespace kubernetes-dashboard service/kubernetes-dashboard-kong-proxy 10443:443 --address=0.0.0.0
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
service를 등록하고, 시작한 후 상태를 확인 합니다.
sudo systemctl daemon-reload
sudo systemctl enable kubectl-port-forward --now
sudo systemctl status kubectl-port-forward
최종으로 dashboard 접근과 로그인을 테스트 합니다.
'Cloud > Kubernetes' 카테고리의 다른 글
리소스 사용량 모니터링을 위한 metrics server 설치 (0) | 2019.09.12 |
---|---|
kubernetes 명령 자동완성 설정하기 (0) | 2019.09.12 |
k8s Multi node에 설치하기 (0) | 2019.09.12 |
6. K8s 교재 맺음말 (0) | 2019.09.12 |
5. Kubernetes 보안 (0) | 2019.09.12 |
- Total
- Today
- Yesterday
- API Composition
- CQRS
- micro service
- 애자일
- SAGA
- 스포티파이
- agile
- 돌봄경제
- 마이크로서비스 패턴
- 마이크로서비스
- spotify
- 호모프롬프트
- AXON
- 버라이어티가격
- 스핀프로젝트
- 육각형인간
- 도파밍
- 리퀴드폴리탄
- Event Sourcing
- 분초사회
- 디토소비
- 요즘남편 없던아빠
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |