Kubernetes용 웹 UI 대시보드
이 페이지에서
- 전제 조건
- 무엇을 할까요?\n
- Kubernetes 대시보드 배포
- Kubernetes 대시보드에 액세스하도록 ServiceAccount 설정\n
- Kubernetes 대시보드에 액세스
- 결론
Kubernetes 대시보드는 클러스터에 대한 웹 기반 UI를 제공합니다. 대시보드를 사용하여 클러스터에 애플리케이션을 배포하고 클러스터의 기존 애플리케이션 문제를 해결할 수 있습니다. 대시보드는 또한 클러스터의 리소스에 대한 통찰력을 제공합니다. 대시보드는 Kubernetes에서 공식적으로 제공합니다. 대시보드를 사용하여 Kubernetes 개체를 생성, 수정, 업데이트 및 삭제할 수 있습니다.
이 글에서는 Kubernetes에서 제공하는 공식 대시보드를 설치하고 이에 접근하기 위한 서비스 계정을 설정해 보겠습니다. 이 도움말을 진행하기 전에 사용자가 Kubernetes에 익숙하고 Kubernetes 클러스터가 있다고 가정합니다.
전제 조건
- 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터 노드와 2개의 작업자 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n - Kubernetes에 대한 기본적인 이해.\n
우리는 무엇을 할 것인가?
- Kubernetes 대시보드를 배포합니다.\n
- Kubernetes 대시보드에 액세스하도록 ServiceAccount를 설정합니다.\n
- 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을 만들었습니다. 대시보드는 클러스터를 이해하고 포함된 모든 개체를 보는 데 도움이 될 수 있습니다.