Azure Stack Hub에서 Kubernetes 대시보드에 액세스

참고

Kubernetes Azure Stack Marketplace 항목만 사용하여 개념 증명으로 클러스터를 배포합니다. Azure Stack에서 지원되는 Kubernetes 클러스터의 경우 AKS 엔진을 사용합니다.

Kubernetes에는 기본 관리 작업에 사용할 수 있는 웹 dashboard 포함되어 있습니다. 이 대시보드를 사용하면 애플리케이션의 기본 상태와 메트릭을 보고 서비스를 작성 및 배포하며 기존 애플리케이션을 편집할 수 있습니다. 이 문서에서는 Azure Stack Hub에서 Kubernetes dashboard 설정하는 방법을 보여 줍니다.

Kubernetes 대시보드의 필수 구성 요소

  • Azure Stack Hub Kubernetes 클러스터

    Kubernetes 클러스터를 Azure Stack Hub에 배포해야 합니다. 자세한 내용은 Kubernetes 배포를 참조하세요.

  • SSH 클라이언트

    보안에 대한 SSH 클라이언트가 클러스터의 컨트롤 플레인 노드에 연결되어야 합니다. Windows를 사용하는 경우 Putty를 사용할 수 있습니다. Kubernetes 클러스터를 배포할 때 사용되는 프라이빗 키가 필요합니다.

  • FTP(PSCP)

    컨트롤 플레인 노드에서 Azure Stack Hub 관리 머신으로 인증서를 전송하려면 SSH 및 SSH 파일 전송 프로토콜을 지원하는 FTP 클라이언트가 필요할 수도 있습니다. FileZilla를 사용할 수 있습니다. Kubernetes 클러스터를 배포할 때 사용되는 프라이빗 키가 필요합니다.

dashboard 사용하도록 설정하는 단계 개요

  1. 클러스터의 컨트롤 플레인 노드에서 Kubernetes 인증서를 내보냅니다.
  2. 인증서를 Azure Stack Hub 관리 머신으로 가져옵니다.
  3. Kubernetes 웹 dashboard 엽니다.

master 인증서 내보내기

클러스터의 컨트롤 플레인 노드에서 dashboard 대한 URL을 검색할 수 있습니다.

  1. Azure Stack Hub dashboard 클러스터 master 대한 공용 IP 주소 및 사용자 이름을 가져옵니다. 이 정보를 얻으려면 다음을 수행합니다.

    • Azure Stack Hub 포털 에 로그인합니다 https://portal.local.azurestack.external/.
    • 모든 서비스>모든 리소스를 선택합니다. 클러스터 리소스 그룹에서 master 찾습니다. master 이름이 k8s-master-<sequence-of-numbers>입니다.
  2. 포털에서 컨트롤 플레인 노드를 엽니다. 공용 IP 주소를 복사합니다. 연결을 클릭하여 VM 로컬 계정을 사용하여 로그인 상자에서 사용자 이름을 가져옵니다. 클러스터를 만들 때 설정한 것과 동일한 사용자 이름입니다. 연결 블레이드에 나열된 개인 IP 주소 대신 공용 IP 주소를 사용합니다.

  3. SSH 클라이언트를 열어 master 연결합니다. Windows에서 작업하는 경우 Putty 를 사용하여 연결을 만들 수 있습니다. 컨트롤 플레인 노드, 사용자 이름에 공용 IP 주소를 사용하고 클러스터를 만들 때 사용한 프라이빗 키를 추가합니다.

  4. 터미널이 연결되면 를 입력 kubectl 하여 Kubernetes 명령줄 클라이언트를 엽니다.

  5. 다음 명령을 실행합니다.

    kubectl cluster-info 
    

    dashboard 대한 URL을 찾습니다. 예: https://k8-1258.local.cloudapp.azurestack.external/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  6. 자체 서명된 인증서를 추출하고 PFX 형식으로 변환합니다. 다음 명령을 실행합니다.

    sudo su 
    openssl pkcs12 -export -out /etc/kubernetes/certs/client.pfx -inkey /etc/kubernetes/certs/client.key  -in /etc/kubernetes/certs/client.crt -certfile /etc/kubernetes/certs/ca.crt 
    
  7. kube-system 네임스페이스에서 비밀 목록을 가져옵니다. 다음 명령을 실행합니다.

    kubectl -n kube-system get secrets
    

    kubernetes-dashboard-token-XXXXX<> 값을 기록해 둡니다.

  8. 토큰을 가져와서 저장합니다. kubernetes-dashboard-token-<####> 를 이전 단계의 비밀 값으로 업데이트합니다.

    kubectl -n kube-system describe secret kubernetes-dashboard-token-<####>| awk '$1=="token:"{print $2}' 
    

인증서 가져오기

  1. Filezilla를 열고 컨트롤 플레인 노드에 연결합니다. 다음이 필요합니다.

    • 컨트롤 플레인 노드 공용 IP
    • 사용자 이름
    • 프라이빗 비밀
    • SFTP 사용 - SSH 파일 전송 프로토콜
  2. /etc/kubernetes/certs/ca.crt 를 Azure Stack Hub 관리 머신에 복사 /etc/kubernetes/certs/client.pfx 합니다.

  3. 파일 위치를 기록해 둡다. 스크립트를 위치로 업데이트한 다음 관리자 권한 프롬프트를 사용하여 PowerShell을 엽니다. 업데이트된 스크립트를 실행합니다.

    Import-Certificate -Filepath "ca.crt" -CertStoreLocation cert:\LocalMachine\Root 
    $pfxpwd = Get-Credential -UserName 'Enter password below' -Message 'Enter password below' 
    Import-PfxCertificate -Filepath "client.pfx" -CertStoreLocation cert:\CurrentUser\My -Password $pfxpwd.Password 
    

Kubernetes dashboard 엽니다.

  1. 웹 브라우저에서 팝업 차단을 사용하지 않도록 설정합니다.

  2. 명령을 kubectl cluster-info실행할 때 기록된 URL을 브라우저에 가리킵니다. 예: https://azurestackdomainnamefork8sdashboard/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  3. 클라이언트 인증서를 선택합니다.

  4. 토큰을 입력합니다.

  5. 컨트롤 플레인 노드의 bash 명령줄에 다시 연결하고 에 권한을 부여합니다 kubernetes-dashboard. 다음 명령을 실행합니다.

    kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard 
    

    이 스크립트는 kubernetes-dashboard 클라우드 관리자 권한을 부여합니다. 자세한 내용은 RBAC 사용 클러스터를 참조하세요.

dashboard 사용할 수 있습니다. Kubernetes dashboard 대한 자세한 내용은 Kubernetes 웹 UI 대시보드를 참조하세요.

Azure Stack Hub Kubernetes 대시보드

문제 해결

사용자 지정 가상 네트워크

Kubernetes를 사용자 지정 가상 네트워크에 배포한 후 Kubernetes dashboard 액세스하는 연결 문제가 발생하는 경우 대상 서브넷이 AKS 엔진에서 만든 경로 테이블 및 네트워크 보안 그룹 리소스에 연결되어 있는지 확인합니다.

네트워크 보안 그룹 규칙이 컨트롤 플레인 노드와 Kubernetes dashboard Pod IP 간의 통신을 허용하는지 확인합니다. 컨트롤 플레인 노드에서 ping 명령을 사용하여 유효성을 검사할 수 있습니다.

다음 단계

Azure Stack Hub에 Kubernetes 배포

Marketplace에 Kubernetes 클러스터 추가(Azure Stack Hub 운영자용)

Azure의 Kubernetes