Kubernetes Dashboard 설치(Install k8s dashboard)

2022. 5. 23. 14:19프로그래밍 개발(Development)/k8s

반응형

kubernetes 설치 방법은 아래의 링크를 참조하자.

2022.05.23 - [프로그래밍 개발(Development)/k8s] - 우분투에 Kubernetes 설치하기 (Installing Kubernetes on Ubuntu)

 

우분투에 Kubernetes 설치하기 (Installing Kubernetes on Ubuntu)

Spec - OS : ubuntu server 20.04 - vm : 2vm(2core, 4mb, 50GB) (master node, worker node) K8s 설치 이전에 Docker 설치를 우선 진행 한다. Before installing K8s, install Docker first. OS의 기본 환경 설..

choco-life.tistory.com

kubernetes Dashboard를 설치할 경우 전체적인 구성을 쉽게 확인 할 수 있고, 추가 삭제 부분에서도 쉽게 접근할 수 있다.

 

이전에 kubernetes가 ubuntu 20.04 에서 설치 되었기 때문에 이어서 진행을 하겠다.

 

1. Master Node에서 대시보드를 활성화 한다. (Enable Dashboard on Master Node)

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

# 실행 결과
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

 

2. Dashboard 관리를 위한 계정을 생성한다. (Add an account for Dashboard management)

$ kubectl create serviceaccount -n kubernetes-dashboard admin-user

 

 

3. yaml 파일을 생성하여 meta 정보와 role 정보를 입력한다.

$ vi rbac.yml

# create new
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

생성된 yaml 파일을 적용 시킨다.

$ kubectl apply -f rbac.yml

 

4. 보안을 위한 토큰을 발행한다.

$ kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

# 실행 결과
Name:         admin-user-token-mfxbj
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: 0386627d-61be-4e49-b8a4-565eff4ab6cc

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IlJnSUVrV0ZXUVM5WmpVX0hhbG9UaThaUG9lcGZf.....

 

5. Dashboard 접속 확인

프록시를 실행하여 접속 (로컬 접속시에 사용)

https://127.0.0.1:8001/ 접속

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

 

외부 클라이언트에서 접속시에 포트 포워드를 통해서 접속을 한다.

$ kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard --address 0.0.0.0 10443:443
Forwarding from 0.0.0.0:10443 -> 8443

외부 클라이언트에서 https://192.168.102.111:10443/ 접속하면 아래와 같은 화면이 나오며, 토큰 정보를 입력 후 접속하면 된다.


port forward를 사용하지 않고 외부 접속을 허용하려면 Service 등록을 통해서 접속이 가능하다.

# create yaml
$ vi k8s-dashboard-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: k8s-dashboard-service
  namespace: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
spec:
  type: NodePort
  ports:
  - nodePort: 30900
    port: 10443
    targetPort: 8443
    protocol: TCP
    name: http
  selector:
    k8s-app: kubernetes-dashboard

생성된 yaml 파일을 적용 시킨다.

$ kubectl apply -f k8s-dashboard-service.yaml

 

https://192.168.102.111:30900/ 로 접속

반응형