프라이빗 클라우드 서비스 엔드포인트를 통해 클래식 클러스터에 액세스

프라이빗 클라우드 서비스 엔드포인트만 활성화된 IBM Cloud Kubernetes Service 클래식 클러스터의 경우, 클러스터에 액세스하려면 프라이빗 NLB를 통해 마스터 엔드포인트를 노출하고 VPN 연결을 통해 IBM Cloud 클래식 프라이빗 네트워크에 연결해야 합니다.

시작하기 전에

  1. 필요한 CLI 도구를 설치하십시오.
  2. xml-ph-0000@deepl.internal 클래식 사설 네트워크에 Virtual Private Network (VPN) for VPCIBM Cloud 클래식 프라이빗 네트워크에 대한 연결을 설정합니다.
  3. 클러스터 상태가 정상인지 확인하세요: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID.

비공개 NLB를 통해 마스터 엔드포인트 노출하기

사설 네트워크를 통해 클러스터 마스터에 연결하려면, 먼저 사설 NLB를 통해 사설 클라우드 서비스 엔드포인트를 공개해야 합니다.

  1. 클러스터에 대한 프라이빗 클라우드 서비스 엔드포인트 URL 및 포트를 가져오십시오.

    ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID
    

    이 출력 예에서 개인 서비스 엔드포인트 URL은 https://c1.private.us-east.containers.cloud.ibm.com:25073입니다.

    NAME:                           setest
    ID:                             b8dcc56743394fd19c9f3db7b990e5e3
    State:                          normal
    Status:                         healthy cluster
    Created:                        2019-04-25T16:03:34+0000
    Location:                       wdc04
    Master URL:                     https://c1.private.us-east.containers.cloud.ibm.com:25073
    Public Service Endpoint URL:    -
    Private Service Endpoint URL:   https://c1.private.us-east.containers.cloud.ibm.com:25073
    Master Location:                Washington D.C.
    ...
    
  2. kube-api-via-nlb.yaml(이)라는 YAML 파일을 작성하십시오. 이 YAML은 사설 LoadBalancer 서비스를 작성하고 이 NLB를 통해 프라이빗 클라우드 서비스 엔드포인트를 노출합니다. <private_service_endpoint_port>를 이전 단계에서 찾은 포트로 대체하십시오.

    apiVersion: v1
    kind: Service
    metadata:
      name: kube-api-via-nlb
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private
      namespace: default
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 8080 # Or, the <private_service_endpoint_port> that you found earlier.
        targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
    ---
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: kube-api-via-nlb
    subsets:
      - addresses:
          - ip: 172.20.0.1
        ports:
          - port: 2040
    
  3. 사설 NLB를 작성하려면 클러스터 마스터에 연결되어 있어야 합니다. 아직 VPN이나 IBM Cloud Direct Link 를 통해 프라이빗 클라우드 서비스 엔드포인트에 연결할 수 없으므로, 퍼블릭 클라우드 서비스 엔드포인트나 대시보드를 사용하여 클러스터 마스터에 연결한 후 NLB를 생성해야 합니다.

    • 프라이빗 클라우드 서비스 엔드포인트만 활성화한 경우, Headlamp 대시보드를 사용하여 NLB를 생성할 수 있습니다. Headlamp은 모든 요청을 마스터의 프라이빗 클라우드 서비스 엔드포인트로 전달합니다.

      1. '클러스터' 페이지에서 액세스하려는 클러스터를 클릭합니다.
      2. Ingress 하위 도메인을 확인하세요: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID | grep "Ingress Subdomain".
      3. 브라우저에서 https://headlamp.<ingress_subdomain> 을 열고, 로그인한 후 + > YAML 업로드로 이동합니다.
      4. kube-api-via-nlb.yaml 파일을 업로드한 후 ‘적용’을 클릭하세요.
      5. ‘네트워크 > 서비스’로 이동하여 ‘ kube-api-via-nlb ’ 서비스가 생성되었는지 확인하고, ‘ 10.x.x.x ’의 외부 IP 주소를 기록해 둡니다. 이 IP 주소는 YAML 파일에 지정된 포트에서 Kubernetes 마스터에 대한 프라이빗 클라우드 서비스 엔드포인트를 노출합니다.
    • 퍼블릭 클라우드 서비스 엔드포인트도 사용으로 설정한 경우에는 이미 마스터에 액세스할 수 있는 상태입니다.

      1. 클러스터에 대한 kubeconfig 구성 파일을 다운로드하여 kubeconfig의 기존 ~/.kube/config 또는 KUBECONFIG 환경 변수의 마지막 파일에 추가하십시오.
        ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID
        
      2. NLB 및 엔드포인트를 작성하십시오.
        kubectl apply -f kube-api-via-nlb.yaml
        
      3. kube-api-via-nlb NLB가 작성되었는지 확인하십시오. 출력에서 10.x.x.x EXTERNAL-IP 주소를 기록해 두십시오. 이 IP 주소는 YAML 파일에 지정된 포트에서 Kubernetes 마스터에 대한 프라이빗 클라우드 서비스 엔드포인트를 노출합니다.
        kubectl get svc -o wide
        
        이 출력 예제에서 Kubernetes 마스터에 대한 프라이빗 클라우드 서비스 엔드포인트의 IP 주소는 10.186.92.42입니다.
        NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE   SELECTOR
        kube-api-via-nlb         LoadBalancer   172.21.150.118   10.186.92.42     443:32235/TCP    10m   <none>
        ...
        
  4. 사용자가 kubectl 명령을 실행하는 클라이언트 시스템에서 /etc/hosts 파일에 NLB IP 주소 및 프라이빗 클라우드 서비스 엔드포인트 URL을 추가하십시오. IP 주소 및 URL에 포트를 포함하지 말고 URL에 https://를 포함하지 마십시오.

    • macOS 및 Linux 사용자의 경우 다음 명령을 실행하십시오.
        sudo nano /etc/hosts
        ```
    * Windows 사용자의 경우 다음 명령을 실행하십시오.
    ```sh {: pre}
        notepad C:\Windows\System32\drivers\etc\hosts
        ```
        로컬 머신 권한에 따라, 호스트 파일을 편집하기 위해 메모장을 관리자 권한으로 실행해야 할 수도 있습니다.
    
        ```sh {: codeblock}
        10.186.92.42  c1.private.us-east.containers.cloud.ibm.com
        ```
    
  5. VPN 또는 IBM Cloud Direct Link 연결을 통해 사설 네트워크에 연결했는지 확인하십시오.

  6. 클러스터에 대한 kubeconfig 구성 파일을 다운로드하여 kubeconfig의 기존 ~/.kube/config 또는 KUBECONFIG 환경 변수의 마지막 파일에 추가하십시오.

    ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID --endpoint private
    
  7. kubectl 명령이 올바르게 실행되고 Kubernetes 컨텍스트가 클러스터로 설정되었는지 확인하십시오.

    kubectl config current-context
    

    출력 예

    <cluster_name>/<cluster_ID>