728x90
쿠버네티스 대시보드 설치 자체는 금방 끝난다. 편리하게 GUI를 이용해 보도록 하자.
1. 대시보드 적용
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
1.5 원격으로 서버에 접속하고 있다면, kubernetes-dashboard service의 yaml 변경이 필요하다.
kubectl edit services kubernetes-dashboard -n kubernetes-dashboard
해당 명령어를 통해 수정이 가능하다. 아랫쪽에 있는 type을 ClusterIP에서 NodePort로 변경하면 된다.
apiVersion: v1
kind: Service
...
spec:
ports:
- nodePort: 31116
port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: NodePort
[root@master ~]# kubectl get services -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.102.33.100 <none> 8000/TCP 17h
kubernetes-dashboard NodePort 10.108.90.43 <none> 443:31116/TCP 17h
수정된 것을 확인하면 TYPE이 NodePort로 변경되었다. 마스터노드IP:노드포트(31116)으로 접속 가능하다.
해당 과정을 거치지 않고 원격지에서 마스터 노드 IP를 통해 대시보드에 접속하면 보안 문제로 토큰 입력이 불가능하다.
2. 대시보드 접속 활성화
kubectl proxy
프록시를 활성화 했다면 다음 링크로 대시보드 접근이 가능하다. http://localhost:8001/
1-5 단계를 거친 경우 https://마스터노드IP:NodePort 로 접속 가능하다.
3. 접속 방법
해당 주소로 접속하면, 다음과 같은 창이 뜬다.
4. 토큰 생성 방법
Serviceaccount는 kubectl get serviceaccount 명령어로 확인이 가능하지만, 권한이 없어 대시보드에 접근해도 아무것도 볼 수 없는 상태다. 그러므로 권한을 가지고 있는 어카운트를 만들어 보도록 하자. 대시보드 네임스페이스에 admin-user 어카운트를 만들어 준다.
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
[root@master ~]# kubectl get serviceaccounts -n kubernetes-dashboard
NAME SECRETS AGE
admin-user 1 65s
default 1 19h
kubernetes-dashboard 1 19h
만들고 권한을 생성해 준다. cluster-admin이라는 role이 모든 권한을 가지고 있다.
cat <<EOF | kubectl create -f -
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
EOF
[root@master ~]# kubectl get clusterrolebinding admin-user
NAME ROLE AGE
admin-user ClusterRole/cluster-admin 45s
그런 다음 토큰을 가져온다.
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-s6pvq
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1099 bytes
namespace: 20 bytes
token: 블라블라
제일 아래의 토큰 값을 기입해 주면, 접속 완료! 모든 권한을 가지고 있다.
728x90
'IT Infrastructure > Kubernetes' 카테고리의 다른 글
[CKA] 시험 환경 세팅하기 (0) | 2023.08.17 |
---|---|
[Kubernetes] 2. 쿠버네티스 설치 및 클러스터 setup (1) | 2022.01.05 |
[Kubernetes] 1. 컨테이너의 이해와 도커 설치 (1) | 2022.01.03 |
[Kubernetes] NetApp NFS로 Trident 연동하기 (21.07.2 버전) (2) | 2021.12.21 |