Vous pouvez personnaliser le Service Tanzu Kubernetes Grid avec des paramètres globaux pour des fonctionnalités clés, notamment l'interface réseau de conteneur (CNI), le serveur proxy et les certificats TLS. Soyez conscient des compromis et des éléments à prendre en compte lors de l'implémentation de fonctionnalités globales et par cluster.

Spécification TkgServiceConfiguration v1alpha2

La spécification TkgServiceConfiguration fournit des champs pour la configuration de l'instance du Service 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
Attention : La configuration du Service Tanzu Kubernetes Grid est une opération globale. Toute modification que vous apportez à la spécification TkgServiceConfiguration s'applique à tous les clusters Tanzu Kubernetes 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 v1alpha2 annotée

Le code YAML suivant répertorie et décrit les champs configurables de chacun des paramètres de spécification TkgServiceConfiguration. Pour consulter des exemples, reportez-vous à la section Exemples de configuration de l'API v1alpha1 du Service Tanzu Kubernetes Grid.
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

Configuration requise du serveur proxy

Si le serveur proxy est configuré, il sera utilisé par le cluster pour le trafic HTTP et HTTPS sortant. Gardez à l'esprit les exigences suivantes pour la configuration d'un serveur proxy pour les clusters Tanzu Kubernetes.
  • Les paramètres proxy requis sont httpProxy, httpsProxy et noProxy. Si vous ajoutez l'entité proxy, les trois champs sont obligatoires.
  • Vous pouvez vous connecter au serveur proxy à l'aide de HTTP. Les connexions HTTPS ne sont pas prises en charge.
  • Vous obtenez les valeurs de spec.proxy.noProxy requises dans le Réseau de charge de travail. Vous ne devez pas mettre en proxy le Réseau d'espaces de noms (anciennement nommé CIDR d'espaces), Entrée (anciennement CIDR d'entrée) et Sortie (anciennement CIDR de sortie) en les incluant dans le champ noProxy. Reportez-vous aux exemples d'images ci-dessous.
  • Vous n'avez pas besoin d'inclure les CIDR de services dans le champ noProxy. Les clusters Tanzu Kubernetes n'interagissent pas avec ce sous-réseau.
  • Vous n'avez pas besoin d'inclure les valeurs network.services.cidrBlocks et network.pods.cidrBlocks de la spécification du cluster Tanzu Kubernetes dans le champ noProxy. Ces sous-réseaux ne sont pas automatiquement mis en proxy.
  • Vous n'avez pas besoin d'inclure localhost et 127.0.0.1 dans le champ noProxy. Automatiquement, les points de terminaison ne sont pas mis en proxy pour vous.

Fenêtre des paramètres du réseau de charge de travail avec les champs Réseau d'espace de noms, Entrée et Sortie mis en surbrillance.

Fenêtre des paramètres réseau de charge de travail avec les CIDR d'espace, les CIDR d'entrée et les CIDR de sortie mis en surbrillance.

Quand utiliser les options de configuration globale ou par cluster

TkgServiceConfiguration est une spécification globale qui affecte tous les clusters Tanzu Kubernetes provisionnés par l'instance de Service Tanzu Kubernetes Grid.

Avant de modifier la spécification TkgServiceConfiguration, apprenez à connaître les solutions par cluster pouvant répondre à votre cas d'utilisation plutôt qu'une configuration globale.
Tableau 1. Options de configuration globale/par cluster
Paramètre Option globale Option par cluster
CNI par défaut Modifiez la spécification TkgServiceConfiguration. Reportez-vous à la section Exemples de configuration de l'API v1alpha1 du Service Tanzu Kubernetes Grid. Spécifiez le CNI dans la spécification du cluster. Par exemple, Antrea est le CNI par défaut. Pour utiliser Calico, spécifiez-le dans le YAML du cluster. Reportez-vous à la section Exemples de provisionnement de clusters Tanzu Kubernetes à l'aide de l'API v1alpha1 du Service Tanzu Kubernetes Grid.
Serveur proxy Modifiez la spécification TkgServiceConfiguration. Reportez-vous à la section Exemples de configuration de l'API v1alpha1 du Service Tanzu Kubernetes Grid. Incluez les paramètres de configuration du serveur proxy dans la spécification de cluster. Reportez-vous à la section Exemples de provisionnement de clusters Tanzu Kubernetes à l'aide de l'API v1alpha1 du Service Tanzu Kubernetes Grid.
Certificats de confiance Modifiez la spécification TkgServiceConfiguration. Il existe deux cas d'utilisation : la configuration d'un registre de conteneur externe et d'un proxy basé sur un certificat. Reportez-vous à la section Exemples de configuration de l'API v1alpha1 du Service Tanzu Kubernetes Grid. Oui, vous pouvez inclure des certificats personnalisés par cluster ou remplacer les paramètres trust globalement définis dans la spécification du cluster. Reportez-vous à la section Exemples de provisionnement de clusters Tanzu Kubernetes à l'aide de l'API v1alpha1 du Service Tanzu Kubernetes Grid.
Note : Si un proxy global est configuré sur 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. Pour plus d'informations, consultez Paramètres de configuration de Service Tanzu Kubernetes Grid v1alpha1 API.

Avant de modifier la spécification TkgServiceConfiguration, apprenez à connaître les conséquences de l'application du paramètre au niveau global.

Champ Appliqué Impact sur les clusters existants en cas d'ajout/de modification Remplacement par cluster lors de la création d'un cluster Remplacement par cluster lors de la mise à jour d'un cluster
defaultCNI Globalement Aucun Oui, vous pouvez remplacer le paramètre global lors de la création du cluster Non, vous ne pouvez pas modifier le CNI d'un cluster existant ; si vous avez utilisé le CNI par défaut défini globalement lors de la création du cluster, il ne peut pas être modifié
proxy Globalement Aucun Oui, vous pouvez remplacer le paramètre global lors de la création du cluster Oui, avec U2+, vous pouvez remplacer le paramètre global lors de la mise à jour du cluster
trust Globalement Aucun Oui, vous pouvez remplacer le paramètre global lors de la création du cluster Oui, avec U2+, vous pouvez remplacer le paramètre global lors de la mise à jour du cluster

Propagation des modifications de la configuration globale aux clusters existants

Les paramètres définis au niveau global dans TkgServiceConfiguration ne sont pas automatiquement propagés aux clusters existants. Par exemple, si vous apportez des modifications aux paramètres proxy ou trust dans TkgServiceConfiguration, ces modifications n'affecteront pas les clusters déjà provisionnés.

Pour propager une modification globale à un cluster existant, vous devez corriger le cluster Tanzu Kubernetes pour que le cluster hérite des modifications apportées à TkgServiceConfiguration.

Par exemple :
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}}}}"