This KB outlines how to make changes in the Control Plane components' extra arguments for TKGm workload clusters.
The procedure will depend on whether the clusters are of legacy (plan-based) or classy (ClusterClass-based) type.
A list of available arguments for each Control Plane component can be found in:
".spec.kubeadmConfigSpec.clusterConfiguration.<component-name>"
.spec:
kubeadmConfigSpec:
clusterConfiguration:
controllerManager:
extraArgs:
cloud-provider: external
tls-cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
bind-address: 0.0.0.0
etcd:
local:
dataDir: /var/lib/etcd
extraArgs:
cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
experimental-initial-corrupt-check: "true"
listen-metrics-urls: "http://0.0.0.0:2381"
imageRepository: projects.registry.vmware.com/tkg
imageTag: v3.5.6_vmware.14
scheduler:
extraArgs:
tls-cipher-suites: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
bind-address: 0.0.0.0
".spec.kubeadmConfigSpec.clusterConfiguration.<component-name>"
.# kubectl edit kcp <kcp-object-name> -n <namespace>
The recommended way to configure legacy clusters with variables that are not settable by default in the configuration file used to create the clusters, is through ytt overlays:
Legacy Cluster Configuration with ytt
To add extraArgs in ".spec.kubeadmConfigSpec.clusterConfiguration.<component-name>"
you can do as follows:
".config/tanzu/tkg/providers/infrastructure-vsphere/ytt/extraargs-overlay-test.yaml"
file with the target configuration.#@ load("@ytt:overlay", "overlay")
#@ load("@ytt:data", "data")
#@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
---
spec:
kubeadmConfigSpec:
clusterConfiguration:
controllerManager:
extraArgs:
#@overlay/match missing_ok=True
bind-address: 0.0.0.0
scheduler:
extraArgs:
#@overlay/match missing_ok=True
bind-address: 0.0.0.0
etcd:
local:
extraArgs:
#@overlay/match missing_ok=True
listen-metrics-urls: "http://0.0.0.0:2381"
Please, make sure you don't include any "tab" in the indentation, as ytt only accepts single spaces.
# tanzu cluster create -f .config/tanzu/tkg/clusterconfigs/<config-file>.yaml
"Expected number of matched nodes to be 1, but was 0"
, review the overlay file and look for "tab spaces" and errors in the indentation.".spec.kubeadmConfigSpec.clusterConfiguration.<component-name>"
.# kubectl edit kcp <kcp-object-name> -n <namespace>