プライベート・クラウド・サービス・エンドポイントを介したクラシック・クラスターへのアクセス

IBM Cloud Kubernetes Service Classic クラスターで、プライベートクラウドサービスのエンドポイントのみが有効になっている場合、クラスターにアクセスするには、プライベート NLB を通じてマスターエンドポイントを公開し、VPN 接続を介して IBM Cloud のクラシックプライベートネットワークに接続する必要があります。

開始前に

  1. 必要なCLIツールをインストールしてください。
  2. xml-ph-0000@deepl.internalのクラシックプライベートネットワークへの Virtual Private Network (VPN) for VPCIBM Cloud Classicのプライベートネットワークへの接続を設定します。
  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.xEXTERNAL-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 コマンドを実行するクライアント・マシンで、NLB IP アドレスとプライベート・クラウド・サービス・エンドポイント URL を /etc/hosts ファイルに追加します。 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>