È possibile personalizzare Servizio Tanzu Kubernetes Grid con impostazioni globali per le funzionalità principali, tra cui l'interfaccia CNI (Container Network Interface), il server proxy e i certificati TLS. Ci sono alcuni aspetti da tenere presenti quando si implementa la funzionalità globale anziché la funzionalità per cluster.

Specifica v1alpha2 TkgServiceConfiguration

La specifica TkgServiceConfiguration fornisce campi per la configurazione dell'istanza di Servizio 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
Attenzione: La configurazione di Servizio Tanzu Kubernetes Grid è un'operazione globale. Le modifiche apportate alla specifica TkgServiceConfiguration vengono applicate a tutti i cluster Tanzu Kubernetes con provisioning eseguito da tale servizio. Se viene avviato un aggiornamento in sequenza, manualmente o tramite upgrade, i cluster vengono aggiornati in base alla specifica del servizio modificata.

Specifica TkgServiceConfiguration v1alpha2 annotata

Il codice YAML che segue elenca e descrive i campi configurabili per ciascuno dei parametri della specifica TkgServiceConfiguration. Per alcuni esempi, vedere Esempi di configurazione dell'API v1alpha1 del Servizio 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

Nessun requisito per il campo proxy

I valori CIDR spec.proxy.noProxy richiesti vengono visualizzati in Rete carico di lavoro nel Cluster supervisore. Non è necessario specificare proxy per i CIDR pod, ingresso e uscita includendoli nel campo noProxy.

Quando si configura il campo noProxy, tenere conto di quanto segue:
  • Non è necessario includere il CIDR dei servizi Cluster supervisore nel campo noProxy. I cluster Tanzu Kubernetes non interagiscono con tali servizi.
  • Agli endpoint localhost e 127.0.0.1 non viene applicato il proxy per impostazione predefinita. Non è necessario aggiungerli al campo noProxy.
  • I CIDR di pod e servizio per i cluster Tanzu Kubernetes non vengono elaborati automaticamente mediante il proxy. Non è necessario aggiungerli al campo noProxy.

Quando utilizzare le opzioni di configurazione globale o per cluster

TkgServiceConfiguration è una specifica globale che influisce su tutti i cluster di Tanzu Kubernetes con provisioning eseguito dall'istanza di Servizio Tanzu Kubernetes Grid.

Prima di modificare la specifica TkgServiceConfiguration, esaminare le alternative per cluster disponibili che potrebbero essere più adatte alle proprie esigenze di una configurazione globale.
Tabella 1. Opzioni di configurazione globale e per cluster
Impostazione Opzione globale Opzione per cluster
CNI predefinita Modificare la specifica TkgServiceConfiguration. Vedere Esempi di configurazione dell'API v1alpha1 del Servizio Tanzu Kubernetes Grid. Specificare l'interfaccia CNI nella specifica del cluster. Ad esempio, Antrea è l'interfaccia CNI predefinita. Per utilizzare Calico, specificarlo nel codice YAML del cluster. Vedere Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
Server proxy Modificare la specifica TkgServiceConfiguration. Vedere Esempi di configurazione dell'API v1alpha1 del Servizio Tanzu Kubernetes Grid. Includere i parametri di configurazione del server proxy nella specifica del cluster. Vedere Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
Certificati attendibili Modificare la specifica TkgServiceConfiguration. Esistono due casi d'uso: configurazione di un registro di container esterno e configurazione di un proxy basato su certificato. Vedere Esempi di configurazione dell'API v1alpha1 del Servizio Tanzu Kubernetes Grid. Sì, è possibile includere certificati personalizzati in base al cluster o sostituire le impostazioni di trust impostate globalmente nella specifica del cluster. Vedere Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
Nota: Se in TkgServiceConfiguration è configurato un proxy globale, le informazioni di tale proxy vengono propagate al manifesto del cluster dopo la distribuzione iniziale del cluster. La configurazione del proxy globale viene aggiunta al manifesto del cluster solo se non sono presenti campi di configurazione del proxy durante la creazione del cluster. In altre parole, la configurazione per cluster ha la precedenza e sovrascriverà la configurazione di un proxy globale. Per ulteriori informazioni, vedere Parametri di configurazione per l'API v1alpha1 di Servizio Tanzu Kubernetes Grid.

Prima di modificare la specifica TkgServiceConfiguration, tenere presenti le conseguenze dell'applicazione dell'impostazione a livello globale.

Campo Applicato Impatto sui cluster esistenti in caso di aggiunta/modifica Sostituzione per cluster durante la creazione del cluster Sostituzione per cluster durante l'aggiornamento del cluster
defaultCNI Globalmente Nessuno Sì, è possibile sostituire l'impostazione globale durante la creazione del cluster No, non è possibile modificare l'interfaccia CNI per un cluster esistente. Se durante la creazione del cluster è stata utilizzata l'interfaccia CNI predefinita impostata globalmente, non può essere modificata.
proxy Globalmente Nessuno Sì, è possibile sostituire l'impostazione globale durante la creazione del cluster Sì, con U2+, è possibile sostituire l'impostazione globale durante l'aggiornamento del cluster
trust Globalmente Nessuno Sì, è possibile sostituire l'impostazione globale durante la creazione del cluster Sì, con U2+, è possibile sostituire l'impostazione globale durante l'aggiornamento del cluster

Propagazione delle modifiche della configurazione globale ai cluster esistenti

Le impostazioni specificate a livello globale in TkgServiceConfiguration non vengono propagate automaticamente ai cluster esistenti. Ad esempio, se si apportano modifiche alle impostazioni di proxy o trust in TkgServiceConfiguration, tali modifiche non influiranno sui cluster per cui è già stato eseguito il provisioning.

Per propagare una modifica globale a un cluster esistente, è necessario applicare una patch al cluster di Tanzu Kubernetes per fare in modo che il cluster erediti le modifiche apportate a TkgServiceConfiguration.

Ad esempio:
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}}}}"