웹사이트 검색

Kubernetes용 웹 UI 대시보드


이 페이지에서

  1. 전제 조건
  2. 무엇을 할까요?\n
  3. Kubernetes 대시보드 배포
  4. Kubernetes 대시보드에 액세스하도록 ServiceAccount 설정\n
  5. Kubernetes 대시보드에 액세스
  6. 결론

Kubernetes 대시보드는 클러스터에 대한 웹 기반 UI를 제공합니다. 대시보드를 사용하여 클러스터에 애플리케이션을 배포하고 클러스터의 기존 애플리케이션 문제를 해결할 수 있습니다. 대시보드는 또한 클러스터의 리소스에 대한 통찰력을 제공합니다. 대시보드는 Kubernetes에서 공식적으로 제공합니다. 대시보드를 사용하여 Kubernetes 개체를 생성, 수정, 업데이트 및 삭제할 수 있습니다.

이 글에서는 Kubernetes에서 제공하는 공식 대시보드를 설치하고 이에 접근하기 위한 서비스 계정을 설정해 보겠습니다. 이 도움말을 진행하기 전에 사용자가 Kubernetes에 익숙하고 Kubernetes 클러스터가 있다고 가정합니다.

전제 조건

  1. 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터 노드와 2개의 작업자 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n
  2. Kubernetes에 대한 기본적인 이해.\n

우리는 무엇을 할 것인가?

  1. Kubernetes 대시보드를 배포합니다.\n
  2. Kubernetes 대시보드에 액세스하도록 ServiceAccount를 설정합니다.\n
  3. Kubernetes 대시보드에 액세스합니다.\n

Kubernetes 대시보드 배포

Kubernetes 대시보드를 배포하기 위해 Github에서 개체 파일을 다운로드할 수 있습니다. 다음 명령을 사용하여 개체 파일을 다운로드합니다. 이 파일에는 Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment, Service에 대한 정의가 포함되어 있습니다.

pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

파일 이름을 바꾸고 서비스 유형을 NodePort로 변경합니다. 다음 스크린샷을 참조하세요.

mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml

서비스 유형을 NodePort로 변경했으면 Kubernetes 대시보드 배포를 담당하는 모든 객체를 생성할 차례입니다.

kubectl apply -f kubernetes-dashboard-deployment.yml

위 명령어로 생성된 디플로이먼트, 포드, 서비스를 확인한다. 위 명령은 Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment 및 Service도 생성합니다.

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

위의 스크린샷에서 "NodePort" 유형의 Kubernetes 대시보드 서비스가 생성되었음을 확인할 수 있습니다. 즉, NodePort "32304"에 있는 노드의 모든 IP에서 대시보드를 사용할 수 있습니다. 클러스터의 서비스에 대해 다른 포트가 표시될 수 있습니다.

다음 명령어를 사용하여 이후 단계에서 필요한 노드의 IP를 가져옵니다.

kubectl get nodes -o wide

Kubernetes 대시보드에 액세스하도록 ServiceAccount를 설정합니다.

Kubernetes 대시보드에 액세스하려면 토큰이 있어야 합니다. 토큰을 생성하려면 먼저 ServiceAccount를 생성해야 합니다.

새 파일을 만들고 다음 내용을 추가하여 ServiceAccount를 만듭니다. 내 Github repo에서 개체 파일을 다운로드할 수도 있습니다.

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

개체 파일이 있으면 다음 명령을 실행하여 ServiceAccount를 만듭니다.

kubectl apply -f admin-sa.yml

이제 ServiceAccount "rahul-admin"을 클러스터 역할 "cluster-admin"에 연결해야 합니다. 다음 콘텐츠로 새 파일을 만들어 ClusterRoleBinding을 만들거나 여기를 클릭하여 내 Github 저장소에서 개체 파일을 다운로드하세요.

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

다음 명령을 실행하여 "ClusterRoleBinding"을 만듭니다.

kubectl apply -f admin-rbac.yml

이제 \ServiceAccount\ --> \rahul-admin\에 바인딩된 \ClusterRole\ --> \cluster-admin\이 있습니다.

이제 Kubernetes 대시보드에 로그인하는 데 사용할 토큰을 가져올 준비가 되었습니다. 토큰을 가져오려면 다음 명령을 실행합니다.

SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

위 스크린샷에서 Kubernetes 대시보드에 로그인하는 데 사용되는 토큰을 볼 수 있습니다. 이 토큰을 복사하고 "NodeIP:NodePort"에서 대시보드 URL을 누르십시오.

여기에서 NodeIP는 클러스터에 있는 모든 노드의 IP이고 NodePort는 우리가 만든 서비스의 포트(이 경우 32304이며 귀하의 경우에는 다른 포트가 있을 수 있음)입니다.

URL "NodeIP:NodePort"를 누르면 다음과 같은 화면이 표시됩니다. 여기에서 "토큰" 옵션을 선택하고 위 단계에서 가져온 토큰을 입력한 다음 "로그인" 버튼을 클릭합니다.

Kubernetes 대시보드에 액세스

성공적으로 로그인하면 다음과 같이 Kubernetes 대시보드가 표시됩니다.

화면 상단에서 네임스페이스를 변경하고 그 안의 리소스를 볼 수도 있습니다. 이제 Kubernetes 대시보드를 탐색할 준비가 모두 완료되었습니다.

결론

이 기사에서는 클러스터에 대시보드를 포함하는 데 필요한 모든 Kubernetes 개체를 배포했습니다. 단순히 액세스할 수 없기 때문에 Kubernetes 대시보드에 액세스할 수 있는 토큰을 갖도록 ServiceAccount 및 ClusterRoleBinding을 만들었습니다. 대시보드는 클러스터를 이해하고 포함된 모든 개체를 보는 데 도움이 될 수 있습니다.