コンテナ ネットワーク インターフェイス (CNI)、プロキシ サーバ、TLS 証明書などの主要な機能のグローバル設定を使用して、Tanzu Kubernetes Grid サービス をカスタマイズできます。グローバル機能とクラスタ単位の機能を実装する場合は、トレードオフと考慮事項に注意してください。
TkgServiceConfiguration v1alpha2 仕様
TkgServiceConfiguration
仕様は、
Tanzu Kubernetes Grid サービス インスタンスを構成するためのフィールドを提供します。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TkgServiceConfiguration metadata: name: tkg-service-configuration-spec spec: defaultCNI: string proxy: httpProxy: string httpsProxy: string noProxy: [string] trust: additionalTrustedCAs: - name: string data: string defaultNodeDrainTimeout: time
注意:
Tanzu Kubernetes Grid サービス の構成は、グローバルに行われます。
TkgServiceConfiguration
仕様に対して行った変更は、そのサービスによってプロビジョニングされたすべての
Tanzu Kubernetes クラスタに適用されます。ローリング アップデートが手動またはアップグレードによって開始された場合は、変更されたサービス仕様によってクラスタが更新されます。
注釈付きの TkgServiceConfiguration v1alpha2 仕様
次の YAML は、
TkgServiceConfiguration
仕様の各パラメータについて、構成可能なフィールドを示し、説明したものです。例については、
Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TkgServiceConfiguration metadata: name: tkg-service-configuration-spec spec: #defaultCNI is the default CNI for all Tanzu Kubernetes #clusters to use unless overridden on a per-cluster basis #supported values are antrea, calico, antrea-nsx-routed #defaults to antrea defaultCNI: string #proxy configures a proxy server to be used inside all #clusters provisioned by this TKGS instance #if implemented all fields are required #if omitted no proxy is configured proxy: #httpProxy is the proxy URI for HTTP connections #to endpionts outside the clusters #takes the form http://<user>:<pwd>@<ip>:<port> httpProxy: string #httpsProxy is the proxy URI for HTTPS connections #to endpoints outside the clusters #takes the frorm http://<user>:<pwd>@<ip>:<port> httpsProxy: string #noProxy is the list of destination domain names, domains, #IP addresses, and other network CIDRs to exclude from proxying #must include Supervisor Cluster Pod, Egress, Ingress CIDRs noProxy: [string] #trust configures additional trusted certificates #for the clusters provisioned by this TKGS instance #if omitted no additional certificate is configured trust: #additionalTrustedCAs are additional trusted certificates #can be additional CAs or end certificates additionalTrustedCAs: #name is the name of the additional trusted certificate #must match the name used in the filename - name: string #data holds the contents of the additional trusted cert #PEM Public Certificate data encoded as a base64 string data: string #defaultNodeDrainTimeout is the total amount of time the #controller spends draining a node; default is undefined #which is the value of 0, meaning the node is drained #without any time limitations; note that `nodeDrainTimeout` #is different from `kubectl drain --timeout` defaultNodeDrainTimeout: time
プロキシ サーバの構成要件
構成されているプロキシ サーバは、クラスタによって送信 HTTP および HTTPS トラフィックに使用されます。
Tanzu Kubernetes クラスタのプロキシ サーバを構成するには、次の要件に留意してください。
- 必要な
proxy
パラメータはhttpProxy
、httpsProxy
、およびnoProxy
です。proxy
スタンザを追加する場合、3 つのフィールドはすべて必須です。 - HTTP を使用してプロキシ サーバに接続できます。HTTPS 接続はサポートされていません。
- 必要な
spec.proxy.noProxy
値は、[ワークロード ネットワーク] から取得します。[名前空間ネットワーク](旧称はポッドの CIDR)、[Ingress](旧称は入力方向 CIDR)、および [Egress](旧称は出力方向 CIDR)をnoProxy
フィールドに含めてプロキシにすることはできません。次のサンプル イメージを参照してください。 noProxy
フィールドにサービスの CIDR を含める必要はありません。Tanzu Kubernetes クラスタは、このサブネットと連携しません。noProxy
フィールドに Tanzu Kubernetes クラスタ仕様のnetwork.services.cidrBlocks
値およびnetwork.pods.cidrBlocks
値を含める必要はありません。これらのサブネットは自動的にプロキシされません。noProxy
フィールドにlocalhost
および127.0.0.1
を含める必要はありません。エンドポイントは自動的にプロキシされません。
グローバル構成オプションとクラスタ単位の構成オプションの使い分け
TkgServiceConfiguration
は、Tanzu Kubernetes Grid サービス インスタンスによってプロビジョニングされているすべての Tanzu Kubernetes クラスタに影響するグローバルな仕様です。
TkgServiceConfiguration
仕様を編集する前に、グローバル構成よりも、クラスタ単位の代替方法のほうが使用事例に適合する可能性について確認してください。
設定 | グローバル オプション | クラスタ単位のオプション |
---|---|---|
デフォルトの CNI | TkgServiceConfiguration 仕様を編集します。Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください。 |
クラスタ仕様で CNI を指定します。たとえば、デフォルトの CNI は Antrea です。Calico を使用するには、クラスタの YAML 内で指定します。Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例を参照してください |
プロキシ サーバ | TkgServiceConfiguration 仕様を編集します。Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください。 |
クラスタ仕様にプロキシ サーバ構成パラメータを含めます。Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例を参照してください。 |
証明書の信頼 | TkgServiceConfiguration 仕様を編集します。外部コンテナ レジストリと証明書ベース プロキシ構成の 2 つの使用事例があります。Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください |
はい。カスタム証明書をクラスタ単位で含めることも、クラスタ仕様でグローバルに設定された trust 設定をオーバーライドすることもできます。Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例を参照してください。 |
注:
TkgServiceConfiguration
でグローバル プロキシが構成されている場合、そのプロキシ情報は、クラスタの初期デプロイ後にクラスタ マニフェストに伝達されます。グローバル プロキシ構成は、クラスタの作成時にプロキシ構成フィールドがない場合にのみ、クラスタ マニフェストに追加されます。つまり、クラスタごとの構成が優先されるため、グローバル プロキシ構成は上書きされます。詳細については、『
Tanzu Kubernetes Grid サービス v1alpha1 API の構成パラメータ』を参照してください。
TkgServiceConfiguration
仕様を編集する前に、設定をグローバル レベルで適用する場合の影響を確認してください。
フィールド | 適用 | 追加/変更した場合の既存のクラスタへの影響 | クラスタ作成時のクラスタ単位のオーバーライド | クラスタ更新時のクラスタ単位のオーバーライド |
---|---|---|---|---|
defaultCNI |
グローバル | なし | 可能。クラスタ作成時にグローバル設定をオーバーライドできます | 不可能。既存のクラスタの CNI は変更できません。クラスタ作成時にグローバルに設定されたデフォルトの CNI を使用した場合は、変更できません |
proxy |
グローバル | なし | 可能。クラスタ作成時にグローバル設定をオーバーライドできます | 可能。U2+ を使用している場合は、クラスタ更新時にグローバル設定をオーバーライドできます |
trust |
グローバル | なし | 可能。クラスタ作成時にグローバル設定をオーバーライドできます | 可能。U2+ を使用している場合は、クラスタ更新時にグローバル設定をオーバーライドできます |
既存のクラスタへのグローバル構成変更の伝達
TkgServiceConfiguration
でグローバル レベルの設定を行っても、既存のクラスタにはその設定が自動的に伝達されません。たとえば、TkgServiceConfiguration
で proxy
や trust
の設定を変更しても、すでにプロビジョニングされているクラスタには影響がありません。
既存のクラスタにグローバルな変更を伝達するには、Tanzu Kubernetes クラスタにパッチを適用して、TkgServiceConfiguration
に対する変更をクラスタに継承させる必要があります。
例:
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"proxy\": null}}}}"
kubectl patch tkc <CLUSTER_NAME> -n <NAMESPACE> --type merge -p "{\"spec\":{\"settings\":{\"network\":{\"trust\": null}}}}"