コンテナ ネットワーク インターフェイス、プロキシ サーバ、および TLS 証明書のグローバル設定を使用して、Tanzu Kubernetes Grid サービス v1alpha2 API をカスタマイズする例を参照してください。

v1alpha2 API を使用した Tanzu Kubernetes Grid サービス の構成

Tanzu Kubernetes Grid サービス をカスタマイズするには、デフォルトの CNI を変更し、グローバル プロキシ サーバを追加し、信頼できる証明書を追加します。 Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータを参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-v2-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    #supported format is `http://<user>:<pwd>@<ip>:<port>`
    httpProxy: http://admin:[email protected]:80
    httpsProxy: http://admin:[email protected]:80
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust: 
    additionalTrustedCAs:
      - name: CompanyInternalCA-1
        data: LS0tLS1C...LS0tCg==
        #where "..." is the middle section of the long base64 string
      - name: CompanyInternalCA-2
        data: MTLtMT1C...MT0tPg==        
  defaultNodeDrainTimeout: 0
注意: Tanzu Kubernetes Grid サービス 仕様を編集すると、新しいクラスタや、手動または自動でアップグレードされる既存のクラスタなど、このサービスによってプロビジョニングされた全クラスタがグローバルに変更されます。

前提条件:Kubectl 編集の構成

Tanzu Kubernetes クラスタを拡張するには、kubectl edit tanzukubernetescluster/CLUSTER-NAME コマンドを使用してクラスタ マニフェストを更新します。kubectl edit コマンドを実行すると、KUBE_EDITOR または EDITOR の環境変数によって定義されたテキスト エディタ内にクラスタ マニフェストが開きます。環境変数を設定する手順については、Kubectl のデフォルトのテキスト エディタの指定を参照してください。

仕様の変更を保存すると、kubectl から、編集内容が正常に記録されたことが報告されます。キャンセルするには、保存せずにエディタを閉じます。

デフォルト CNI の構成

Tanzu Kubernetes Grid サービス は、Tanzu Kubernetes クラスタにデフォルトのコンテナ ネットワーク インターフェイス (CNI) を提供します。デフォルトの構成では、CNI を指定せずにクラスタを作成できます。デフォルトの CNI を変更するには、サービスの仕様を編集します。

Tanzu Kubernetes Grid サービス は、Antrea と Calico という 2 つの CNI をサポートしています。デフォルトは Antrea です。詳細については、『Tanzu Kubernetes Grid サービス クラスタ ネットワーク』を参照してください。

デフォルトの CNI をオーバーライドするには、使用する CNI を明示的に指定します。また、CNI の TKG サービス コントローラを編集して、デフォルトの CNI を変更することもできます。
  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. コンテキストをターゲット vSphere 名前空間 に切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. デフォルトの CNI を一覧表示します。
    kubectl get tkgserviceconfigurations
    結果の例:
    NAME                                 DEFAULT CNI
    tkg-service-configuration            antrea
    
  4. Tanzu Kubernetes Grid サービス 仕様の編集内容をロードします。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    tkg-service-configuration 仕様が、KUBE_EDITOR または EDITOR 環境変数によって定義されたデフォルトのテキスト エディタで開かれます。

  5. spec.defaultCNI の値を編集します。
    たとえば、次の値からの変更を考えます。
    spec:
      defaultCNI: antrea
    この値を次のように変更します。
    spec:
      defaultCNI: calico
  6. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    テキスト エディタで変更を保存すると、kubectl によって tkg-service-configuration サービス仕様が更新されます。

  7. デフォルトの CNI が更新されていることを確認します。
    kubectl get tkgserviceconfigurations
    デフォルトの CNI が更新されます。デフォルトのネットワーク設定によってプロビジョニングされたクラスタでは、デフォルトの CNI が使用されます。
    NAME                                 DEFAULT CNI
    tkg-service-configuration            calico
    

グローバル プロキシ サーバの構成

グローバル プロキシ サーバを有効にするには、 TkgServiceConfiguration にプロキシ サーバのパラメータを追加します。必須フィールドの説明については、 Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータを参照してください。
  1. スーパーバイザー クラスタ で認証します。
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. コンテキストをターゲット vSphere 名前空間 に切り替えます。
    kubectl config use-context tkgs-cluster-ns
  3. 現在の構成を取得します。
    kubectl get tkgserviceconfigurations
    結果の例:
    NAME                        DEFAULT CNI
    tkg-service-configuration   antrea
  4. Tanzu Kubernetes Grid サービス 仕様の編集内容をロードします。
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    tkg-service-configuration 仕様が、KUBE_EDITOR または EDITOR 環境変数によって定義されたデフォルトのテキスト エディタで開かれます。

  5. httpProxyhttpsProxynoProxy などの必須フィールドをそれぞれ含む spec.proxy サブセクションを追加します。
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://<user>:<pwd>@<ip>:<port>
        httpsProxy: http://<user>:<pwd>@<ip>:<port>
        noProxy: [SVC-POD-CIDRs, SVC-EGRESS-CIDRs, SVC-INGRESS-CIDRs]
  6. 各プロキシ フィールドに適切な値をポピュレートします。各フィールドの説明については、Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータを参照してください。

    noProxy フィールドに必要な値は、スーパーバイザー クラスタ[ワークロード ネットワーク] から取得されます。これらの値を取得する場所については、上記のトピックの図を参照してください。

    例:
    apiVersion: run.tanzu.vmware.com/v1alpha1
    kind: TkgServiceConfiguration
    metadata:
      ...
      name: tkg-service-configuration-example
      resourceVersion: "44170525"
      selfLink: /apis/run.tanzu.vmware.com/v1alpha1/tkgserviceconfigurations/tkg-service-configuration
      uid: 10347195-5f0f-490e-8ae1-a758a724c0bc
    spec:
      defaultCNI: antrea
      proxy:
        httpProxy: http://user:[email protected]:3128
        httpsProxy: http://user:[email protected]:3128
        noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  7. 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。

    テキスト エディタで変更を保存すると、tkg-service-configurationkubectl サービス仕様で定義された構成を使用して Tanzu Kubernetes Grid サービス を更新します。

  8. Tanzu Kubernetes Grid サービス がプロキシ設定を使用して更新されていることを確認します。
    kubectl get tkgserviceconfigurations -o yaml
  9. 確認するには、Tanzu Kubernetes クラスタをプロビジョニングします。TKGS v1alpha2 API を使用して Tanzu Kubernetes クラスタをプロビジョニングするためのワークフローを参照してください。
    次のコマンドを使用して、クラスタがプロキシを使用していることを確認します。
    kubectl get tkc CLUSTER-NAME -n NAMESPACE -o yaml

証明書ベースのプロキシ構成

環境によっては、プロキシ サーバを使用してインターネット トラフィックをルーティングすることが困難な場合があります。たとえば、金融機関などの規制の厳しい業界の企業では、すべてのインターネット トラフィックが企業のプロキシを経由する必要があります。

Tanzu Kubernetes Grid サービス を構成すると、送信 HTTP/S トラフィックにプロキシ サーバを使用するように Tanzu Kubernetes クラスタをプロビジョニングできます。詳細については、『Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータ』を参照してください。

この例に示すように、プロキシ サーバの信頼できる証明書を TkgServiceConfiguration 仕様に追加できます。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  proxy:
    httpProxy: http://user:[email protected]:3128
    httpsProxy: http://user:[email protected]:3128
    noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]
  trust:
    additionalTrustedCAs:
      - name: first-cert-name
        data: base64-encoded string of a PEM encoded public cert 1
      - name: second-cert-name
        data: base64-encoded string of a PEM encoded public cert 2
  defaultNodeDrainTimeout: 0

外部プライベート レジストリの構成

外部プライベート レジストリを Tanzu Kubernetes クラスタに接続するためのカスタム証明書を使用して、 Tanzu Kubernetes Grid サービス を構成できます。詳細については、『 Tanzu Kubernetes クラスタでの外部コンテナ レジストリの使用』を参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TkgServiceConfiguration
metadata:
  name: tkg-service-configuration-example
spec:
  defaultCNI: antrea
  trust:
    additionalTrustedCAs:
      - name: harbor-vm-cert
        data: <<<base64-encoded string of a PEM encoded public cert>>>>