Vous pouvez personnaliser la configuration du service TKG pour les clusters TKG provisionnés à l'aide de l'API v1alpha3, notamment l'interface réseau de conteneur (CNI), le serveur proxy et les certificats TLS.
À propos de la personnalisation de TkgServiceConfiguration
Vous pouvez configurer des paramètres globaux pour les clusters Tanzu Kubernetes en modifiant TkgServiceConfiguration. Cette configuration vous permet de définir la CNI par défaut, d'ajouter un serveur proxy global et d'ajouter un ou plusieurs certificats TLS approuvés.
TkgServiceConfiguration
s'applique à tous les clusters TKG provisionnés par ce service. Si une mise à jour continue est initiée, manuellement ou par mise à niveau, les clusters sont mis à jour par la spécification de service modifiée.
Spécification TkgServiceConfiguration
TkgServiceConfiguration
fournit des champs pour la configuration de l'instance du
Tanzu Kubernetes Grid.
key-name
), d'un trait de soulignement (tel que
KEY_NAME
) ou d'un point (tel que
key.name
). Vous ne pouvez pas utiliser un espace dans un nom de clé.
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
Spécification TkgServiceConfiguration annotée
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
, ces informations de proxy sont propagées au manifeste du cluster après le déploiement initial du cluster. La configuration du proxy global est ajoutée au manifeste du cluster uniquement si aucun champ de configuration de proxy n'est présent lors de la création du cluster. En d'autres termes, la configuration par cluster est prioritaire et la configuration du proxy global est prioritaire.
Exemple de spécification TkgServiceConfiguration
Le code YAML suivant répertorie et décrit les champs configurables de chacun des paramètres de spécification 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
Modification de TkgServiceConfiguration
- Configurez la modification Kubectl. Reportez-vous à la section Configurer un éditeur de texte pour Kubectl.
- Authentifiez-vous avec le Superviseur.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Basculez le contexte sur l'Espace de noms vSphere cible.
kubectl config use-context vSphere-Namespace
- Obtenez la spécification TkgServiceConfiguration.
kubectl get tkgserviceconfigurations
- Chargez la spécification TkgServiceConfiguration pour modification.
kubectl edit tkgserviceconfigurations tkg-service-configuration
Le système ouvre la spécification
tkg-service-configuration
dans l'éditeur de texte par défaut défini par la variable d'environnement KUBE_EDITOR ou EDITOR. - Modifiez TkgServiceConfiguration en fonction de vos besoins.
- Pour appliquer les modifications, enregistrez le fichier dans l'éditeur de texte. Pour annuler, fermez l'éditeur sans enregistrer.
Lorsque vous enregistrez la modification dans l'éditeur de texte, kubectl met à jour la spécification de service
tkg-service-configuration
. - Vérifiez que la spécification TkgServiceConfiguration par défaut est mise à jour.
kubectl get tkgserviceconfigurations
Propagation des modifications de la configuration globale aux clusters existants
Les paramètres définis au niveau global dans TkgServiceConfiguration
peuvent ne pas être automatiquement propagés aux clusters existants. Par exemple, si vous apportez des modifications aux paramètres proxy
ou trust
dans TkgServiceConfiguration
, ces modifications peuvent ne pas affecter les clusters déjà provisionnés.
Pour propager manuellement une modification globale à un cluster existant, vous devez corriger le cluster Tanzu Kubernetes pour que le cluster hérite des modifications apportées à 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}}}}"