v1alpha3 API を使用してプロビジョニングされる TKG クラスタ向けに、コンテナ ネットワーク インターフェイス (CNI)、プロキシ サーバ、TLS 証明書などの TKG サービス構成をカスタマイズできます。
TkgServiceConfiguration のカスタマイズについて
TkgServiceConfiguration を編集して、Tanzu Kubernetes クラスタ向けにグローバル設定を構成できます。この構成により、デフォルト CNI の設定、グローバル プロキシ サーバの追加、1 つ以上の信頼された TLS 証明書の追加が可能になります。
TkgServiceConfiguration
オブジェクトに対して行った変更は、そのサービスによってプロビジョニングされたすべての TKG クラスタに適用されます。ローリング アップデートが手動またはアップグレードによって開始された場合は、変更されたサービス仕様によってクラスタが更新されます。
TkgServiceConfiguration の仕様
TkgServiceConfiguration
仕様は、
Tanzu Kubernetes Grid インスタンスを構成するためのフィールドを提供します。
key-name
など)、アンダースコア(
KEY_NAME
など)、ドット(
key.name
など)のみで構成する必要があります。キー名にスペースを使用することはできません。
apiVersion: run.tanzu.vmware.com/v1alpha3 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
注釈付きの TkgServiceConfiguration 仕様
TkgServiceConfiguration
仕様の各パラメータについて、構成可能なフィールドを示し、説明したものです。
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration #valid config key must consist of alphanumeric characters, '-', '_' or '.' 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 from Workload Network: [Namespace Netowrk, Ingress, Egress] 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
TkgServiceConfiguration
でグローバル プロキシが構成されている場合、そのプロキシ情報は、クラスタの初期デプロイ後にクラスタ マニフェストに伝達されます。グローバル プロキシ構成は、クラスタの作成時にプロキシ構成フィールドがない場合にのみ、クラスタ マニフェストに追加されます。つまり、クラスタごとの構成が優先されるため、グローバル プロキシ構成は上書きされます。
TkgServiceConfiguration 仕様の例
次の YAML は、TkgServiceConfiguration
仕様の各パラメータについて、構成可能なフィールドを示し、説明したものです。
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TkgServiceConfiguration metadata: name: tkgserviceconfiguration_example spec: defaultCNI: calico proxy: #supported format is `http://<user>:<pwd>@<ip>:<port>` httpProxy: http://admin:[email protected]:80 httpsProxy: http://admin:[email protected]:80 #noProxy vaulues are from Workload Network: [Namespace Network, Ingress, Egress] noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] trust: additionalTrustedCAs: #name is the name of the public cert - name: CompanyInternalCA-1 #data is base64-encoded string of a PEM encoded public cert data: LS0tLS1C...LS0tCg== #where "..." is the middle section of the long base64 string - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg== defaultNodeDrainTimeout: 0
TkgServiceConfiguration の編集
- Kubectl の編集を構成します。kubectl のテキスト エディタの構成を参照してください。
- スーパーバイザー で認証します。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- コンテキストをターゲット vSphere 名前空間 に切り替えます。
kubectl config use-context vSphere-Namespace
- TkgServiceConfiguration 仕様を取得します。
kubectl get tkgserviceconfigurations
- TkgServiceConfiguration 仕様を編集するためにロードします。
kubectl edit tkgserviceconfigurations tkg-service-configuration
tkg-service-configuration
仕様が、KUBE_EDITOR または EDITOR 環境変数によって定義されたデフォルトのテキスト エディタで開かれます。 - 要件に応じて TkgServiceConfiguration を編集します。
- 変更を適用するには、テキスト エディタでこのファイルを保存します。キャンセルするには、保存せずにエディタを閉じます。
テキスト エディタで変更を保存すると、kubectl によって
tkg-service-configuration
サービス仕様が更新されます。 - TkgServiceConfiguration 仕様が更新されていることを確認します。
kubectl get tkgserviceconfigurations
既存のクラスタへのグローバル構成変更の伝達
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}}}}"