Kubernetes 대시보드에 원격으로 액세스

12366 단어
Kubernetes는 공공 클라우드와 개인 클라우드에 널리 사용되는 유행하는 집단 및 용기 관리/편성 플랫폼이다.Kubernetes Dashboard는 웹 기반 Kubernetes 사용자 인터페이스입니다.Dashboard를 사용하여 컨테이너 응용 프로그램을 Kubernetes 클러스터에 배치하여 컨테이너 응용 프로그램의 문제를 해결하고 클러스터 리소스를 관리할 수 있습니다.

SocketXP TLS VPN


SocketXP TLS VPN 솔루션(경량급 VPN)은 개인 클라우드나 공공 클라우드 중의 개인 Kubernetes 클러스터에 대한 안전한 원격 접근을 제공합니다.SocketXP는 Kubernetes Dashboard를 포함한 로컬 개인 응용 프로그램에 접근할 수 있는 안전한 공공 URL을 제공합니다.
SocketXP 에이전트는 SocketXP DockerHub Repository에서 docker 컨테이너로 제공됩니다.SocketXP Docker 컨테이너를 Kubernetes 클러스터의 독립 컨테이너로 실행하여 Kubernetes 대시보드에 대한 원격 액세스를 설정합니다.

대시보드 UI 배포:


Kubernetes Open Source Project page에서 Kubernetes 클러스터에 대시보드 UI를 배치하고 설정하는 방법에 대한 지침을 따릅니다.
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
Kubernetes 공식 문서에서 설명한 바와 같이, 웹 브라우저에서 대시보드에 접근하려면 프록시 모드에서kubectl CLI 유틸리티를 실행해야 합니다.

외부 네트워크에서 Kubernetes 대시보드에 로그인


외부 네트워크에서 Kubernetes 대시보드에 액세스하여 로그인하는 방법은 무엇입니까?

총체적 전략


다음은 Kubernetes 대시보드에 대한 원격 액세스를 설정하는 전체 정책입니다.
  • K8 클러스터에 SocketXP VPN 에이전트 Docker 컨테이너를 배치합니다.
  • kubectl CLI 유틸리티를 노트북에 로컬로 설치합니다.
  • SocketXP 공용 URL, K8 SSL 인증서 및 키를 사용하여 노트북에 kubectl 프로필을 설정합니다.
  • kubectl CLI 유틸리티를 사용하여 노트북에서 전용 Kubernetes 클러스터에 원격으로 액세스합니다.
  • 노트북에서 에이전트 모드로kubectl을 실행합니다.
  • 로컬kubectl 프록시를 통해 웹 브라우저에서Kubernetes 대시보드에 접근합니다.
  • SocketXP 에이전트 Docker 컨테이너 배포:


    먼저 SocketXP Portal로 이동합니다.무료 계좌를 등록해서 당신의 authtoken을 얻으세요.authtoken을 사용하여 Kubernetes 비밀을 만듭니다. 아래와 같습니다.
    kubectl create secret generic socketxp-credentials --from-literal=authtoken=[your-auth-token-goes-here]
    
    기밀 socketxp 증빙서류를 만들었는지 확인하십시오.
    $ kubectl get secrets
    NAME                   TYPE                                  DATA   AGE
    default-token-5skb7    kubernetes.io/service-account-token   3      4h
    socketxp-credentials   Opaque                                1      4h
    $
    
    우리는 아래의 설정을 사용할 것이다.SocketXP 프록시 Docker 컨테이너를 구성하는 json 파일입니다.이 예에서는 안전한 공공 웹 URL과 Kubernetes API 서버에 대한 TLS VPN 터널을 만들려고 합니다.
    $ cat config.json
    { 
        "tunnel_enabled": true, 
        "tunnels" : [{ 
            "destination": "https://kubernetes.default", 
            "protocol": "tls", 
            "custom_domain": "", 
            "subdomain": "" 
        }], 
        "relay_enabled": false, 
    }
    
    다음에 SocketXP 프록시 프로필을 저장하기 위해 Kubernetes configmap을 만듭니다.
    kubectl create configmap socketxp-configmap --from-file=/home/test-user/config.json
    
    socketxp 설정 맵이 생성되었는지 확인하십시오.
    $ kubectl describe configmaps socketxp-configmap
    Name:         socketxp-configmap
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    
    Data
    ====
    config.json:
    ----
    { "tunnel_enabled": true, "tunnels" : [{ "destination": "https://kubernetes.default", "protocol": "tls", "custom_domain": "", "subdomain": "" }], "relay_enabled": false }
    
    Events:  <none>
    
    현재 SocketXP 에이전트에 필요한authtoken 기밀과configmap을 만들었습니다. SocketXP Docker 용기expresssocket/SocketXP:latest를 Kubernetes로 배치할 때가 되었습니다.
    이것은 배치다.yaml 파일을 사용하여 별도의 SocketXP 프록시 배포를 작성합니다.
    $cat deployment.yaml 
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: socketxp
      labels:
        app: socketxp
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: socketxp
      template:
        metadata:
          labels:
            app: socketxp
        spec:
          containers:
          - name: socketxp
            image: expresssocket/socketxp:latest
            env:
              - name: AUTHTOKEN
                valueFrom:
                  secretKeyRef:
                    name: socketxp-credentials
                    key: authtoken
            volumeMounts:
            - name: config-volume
              mountPath: /data
          volumes:
            - name: config-volume
              configMap:
                # Provide the name of the ConfigMap containing the files you want
                #to add to the container
                name: socketxp-configmap
    
    참고:
    config volume라는 단독 볼륨을 만들고 용기 내의/data 디렉터리에 설치하면 socketxp configmap을 설정 파일로 사용할 수 있습니다.컨테이너의/data 디렉토리에 있는 json 파일을 실행합니다.
    다음에 크레인이 배치와 운행에서 만들어졌는지 확인하십시오.
    $ kubectl get pods
    NAME                        READY   STATUS    RESTARTS   AGE
    socketxp-75cb4dd7c9-bhxfp   1/1     Running   0          4s
    $
    
    이제 SocketXP 포털 페이지 (주소: https://portal.socketxp.com/#/tunnels (또는) 의pod 로그에서 Kubernetes API 서버에 생성된 SocketXP 공공 URL을 검색할 수 있습니다. 아래와 같습니다.
    $ kubectl logs socketxp-75cb4dd7c9-bhxfp
    ...
    ...
    
    Login Succeeded.
    User [] Email [[email protected]].
    
    Connected.
    Public URL -> https://test-user-fn4mda420.socketxp.com
    
    이제 위의 SocketXP 공용 URL을 사용하여kubectl 유틸리티를 사용하여 Kubernetes 클러스터의 API 서버에 원격으로 액세스할 수 있습니다.

    로컬 kubectl 설치


    Kubernetes 클러스터에 원격으로 액세스할 수 있도록 kubectl CLI 유틸리티를 노트북에 로컬로 설치합니다.아래 지침에 따라 노트북에서 kubectl을 다운로드하고 설치합니다.
    https://kubernetes.io/docs/tasks/tools/install-kubectl/(opens 새 창)
    kubectl CLI 유틸리티를 설치한 후 $HOME/에 있는 kubectl 구성 파일을 덮어씁니다.노트북에kube/config 및 클러스터 마스터 노드($HOME/.kube/config)를 설치합니다.
    다음은 SocketXP 공용 URLhttps://test-user-fn4mda420.socketxp.com을 사용하려면 kubectl 구성 파일의 API 서버 URL을 업데이트합니다.
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /Users/test-user/.minikube/ca.crt
        server: https://test-user-fn4mda420.socketxp.com 
      name: minikube
    contexts:
    - context:
        cluster: minikube
        user: minikube
      name: minikube
    ...
    ...
    
    클라이언트 인증서, CA 인증서, 개인 키 파일,authtoken을 Kubernetes 그룹의 주 노드에서kubectl 프로필에 지정된 폴더의 노트북으로 복사하십시오.
    다음 명령을 사용하여 구성이 올바르게 작동하는지 확인합니다.
    kubectl config view
    
    이제 로컬에서 kubectl 명령을 실행하여 노트북에서 개인 Kubernetes 클러스터를 원격으로 액세스하거나 관리합니다.
    $ kubectl get pods
    NAME                        READY   STATUS    RESTARTS   AGE
    socketxp-75cb4dd7c9-bhxfp   1/1     Running   0          1h
    
    참고:
    배치를 사용하여 SocketXP 프록시pod의 여러 복사본을 만들 때,pod마다 유일한 SocketXP 공공 URL이 분배됩니다.이것은 Kubernetes 그룹에서 실행되는 모든 SocketXP 프록시pod가 SocketXP 클라우드 인터페이스에서 새로운 공공 URL을 가져오기 때문입니다.

    프록시 모드에서 kubectl 실행하기


    Kubernetes 대시보드에 원격으로 액세스하려면 다음과 같이 노트북에서 kubectl CLI 유틸리티를 프록시 모드로 실행합니다.
    $ kubectl proxy  
    Starting to serve on 127.0.0.1:8001
    
    이 명령을 프론트 데스크에서 계속 실행하도록 하세요.

    Kubernetes 대시보드에 원격으로 액세스하려면:


    이제 kubectl 에이전트를 통해 다음 로컬 URL을 사용하여 노트북에서 Kubernetes 대시보드에 원격으로 접근할 수 있습니다.Kubectl은 다음 위치에 대시보드를 제공합니다.
    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/(새 창 열기).
    현재 k8 자원을 보거나 관리할 수 있습니다.

    주: 본문은 최초로 다음과 같이 발표되었다. https://www.socketxp.com/iot

    좋은 웹페이지 즐겨찾기