Sie können den Tanzu Kubernetes Grid-Dienst mit globalen Einstellungen für wichtige Funktionen anpassen, einschließlich der CNI (Container Network Interface, Container-Netzwerkschnittstelle), des Proxyservers und der TLS-Zertifikate. Berücksichtigen Sie mögliche Kompromisse und andere Überlegungen bei der Implementierung von globaler gegenüber Pro-Cluster-Funktionalität.

TkgServiceConfiguration-v1alpha2-Spezifikation

Die TkgServiceConfiguration-Spezifikation enthält Felder für die Konfiguration der Tanzu Kubernetes Grid-Dienst-Instanz.
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
Vorsicht: Das Konfigurieren des Tanzu Kubernetes Grid-Dienst ist ein globaler Vorgang. Alle Änderungen, die Sie an der TkgServiceConfiguration-Spezifikation vornehmen, gelten für alle Tanzu Kubernetes-Cluster, die von diesem Dienst bereitgestellt werden. Wenn ein rollierendes Update entweder manuell oder durch ein Upgrade initiiert wird, werden Cluster durch die geänderte Dienstspezifikation aktualisiert.

TkgServiceConfiguration-v1alpha2-Spezifikation mit Anmerkungen

In der folgenden YAML werden die konfigurierbaren Felder für jeden der TkgServiceConfiguration-Spezifikationsparameter aufgelistet und beschrieben. Beispiele finden Sie unter Beispiele für die Konfiguration der Tanzu Kubernetes Grid-Dienst-v1alpha1-API.
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

Konfigurationsanforderungen der Proxy-Server

Ein konfigurierter Proxy-Server wird vom Cluster für ausgehenden HTTP- und HTTPS-Datenverkehr verwendet. Beachten Sie die folgenden Anforderungen für die Konfiguration eines Proxy-Servers für Tanzu Kubernetes-Cluster.
  • Zu den erforderlichen proxy-Parametern gehören httpProxy, httpsProxy und noProxy. Wenn Sie die proxy-Instanz hinzufügen, sind alle drei Felder obligatorisch.
  • Sie können mithilfe von HTTP eine Verbindung zum Proxy-Server herstellen. HTTPS-Verbindungen werden nicht unterstützt.
  • Die erforderlichen spec.proxy.noProxy-Werte können Sie über das Arbeitslastnetzwerk abrufen. Sie dürfen Namespace-Netzwerk (ehemals CIDRs der Pods), Ingress (ehemals Ingress-CIDRs) und Egress (ehemals Egress-CIDRs) nicht mit einem Proxy verbinden, indem Sie sie in das Feld noProxy aufnehmen. Weitere Informationen finden Sie in den folgenden Abbildungen mit Beispielen.
  • Sie müssen das Dienst-CIDR nicht in das Feld noProxy aufnehmen. Tanzu Kubernetes-Cluster interagieren nicht mit diesem Subnetz.
  • Die Werte network.services.cidrBlocks und network.pods.cidrBlocks aus der Spezifikation des Tanzu Kubernetes-Clusters brauchen Sie nicht in das Feld noProxy aufzunehmen. Diese Subnetze werden nicht automatisch mit einem Proxy verbunden.
  • Sie brauchen localhost und 127.0.0.1 nicht in das Feld noProxy aufzunehmen. Die Endpoints werden nicht automatisch mit einem Proxy verbunden.

Das Fenster „Arbeitslastnetzwerkeinstellungen“ mit hervorgehobenen Feldern „Namespace-Netzwerk“, „Ingress“ und „Egress“.

Das Fenster „Arbeitslastnetzwerkeinstellungen“ mit hervorgehobenen „POD-CIDRs“, „Ingress-CIDRs“ und „Egress-CIDRs“.

Wann globale oder clusterspezifische Konfigurationsoptionen verwendet werden sollten

Die TkgServiceConfiguration ist eine globale Spezifikation, die sich auf alle Tanzu Kubernetes-Cluster auswirkt, die von der Tanzu Kubernetes Grid-Dienst-Instanz bereitgestellt werden.

Bevor Sie die TkgServiceConfiguration-Spezifikation bearbeiten, sollten Sie sich über die Pro-Cluster-Alternativen informieren, die anstelle einer globalen Konfiguration für Ihren Anwendungsfall geeignet sein könnten.
Tabelle 1. Globale Konfigurationsoptionen im Vergleich zu Pro-Cluster-Konfigurationsoptionen
Einstellung Globale Option Pro-Cluster-Option
Standard-CNI Bearbeiten Sie die TkgServiceConfiguration-Spezifikation. Weitere Informationen finden Sie unter Beispiele für die Konfiguration der Tanzu Kubernetes Grid-Dienst-v1alpha1-API. Geben Sie die CNI in der Clusterspezifikation an. Beispiel: Antrea ist die Standard-CNI. Um Calico zu verwenden, geben Sie die Spezifikation in der Cluster-YAML an. Siehe Beispiele für die Bereitstellung von Tanzu Kubernetes-Clustern mit der Tanzu Kubernetes Grid-Dienst-v1alpha1-API.
Proxyserver Bearbeiten Sie die TkgServiceConfiguration-Spezifikation. Weitere Informationen finden Sie unter Beispiele für die Konfiguration der Tanzu Kubernetes Grid-Dienst-v1alpha1-API. Schließen Sie die Konfigurationsparameter des Proxyservers in die Clusterspezifikation ein. Weitere Informationen finden Sie unter Beispiele für die Bereitstellung von Tanzu Kubernetes-Clustern mit der Tanzu Kubernetes Grid-Dienst-v1alpha1-API.
Vertrauenszertifikate Bearbeiten Sie die TkgServiceConfiguration-Spezifikation. Es gibt zwei Anwendungsfälle: die Konfiguration einer externen Container-Registrierung und die zertifikatsbasierte Proxy-Konfiguration. Siehe Beispiele für die Konfiguration der Tanzu Kubernetes Grid-Dienst-v1alpha1-API. Ja, Sie können clusterspezifische benutzerdefinierte Zertifikate hinzufügen oder die global festgelegten trust-Einstellungen in der Clusterspezifikation überschreiben. Weitere Informationen finden Sie unter Beispiele für die Bereitstellung von Tanzu Kubernetes-Clustern mit der Tanzu Kubernetes Grid-Dienst-v1alpha1-API.
Hinweis: Wenn ein globaler Proxy für die TkgServiceConfiguration konfiguriert ist, werden diese Proxy-Informationen nach der ersten Bereitstellung des Clusters an das Clustermanifest weitergegeben. Die globale Proxy-Konfiguration wird nur dann zum Clustermanifest hinzugefügt, wenn beim Erstellen des Clusters keine Proxy-Konfigurationsfelder vorhanden sind. Anders ausgedrückt: Die Konfiguration pro Cluster hat Vorrang und überschreibt eine globale Proxy-Konfiguration. Weitere Informationen finden Sie unter Konfigurationsparameter für die Tanzu Kubernetes Grid-Dienst-v1alpha1-API.

Bevor Sie die TkgServiceConfiguration-Spezifikation bearbeiten, machen Sie sich mit den Auswirkungen der Anwendung der Einstellung auf globaler Ebene vertraut.

Feld Angewendet Auswirkungen auf vorhandene Cluster, wenn hinzugefügt/geändert Außerkraftsetzung pro Cluster bei Clustererstellung Außerkraftsetzung pro Cluster bei Clusteraktualisierung
defaultCNI Global Keine Ja, Sie können die globale Einstellung bei der Clustererstellung außer Kraft setzen. Nein, Sie können den CNI für einen vorhandenen Cluster nicht ändern. Wenn Sie den global festgelegten Standard-CNI bei der Clustererstellung verwendet haben, kann er nicht geändert werden.
proxy Global Keine Ja, Sie können die globale Einstellung bei der Clustererstellung außer Kraft setzen. Ja, mit U2+ können Sie die globale Einstellung bei der Clusteraktualisierung außer Kraft setzen
trust Global Keine Ja, Sie können die globale Einstellung bei der Clustererstellung außer Kraft setzen. Ja, mit U2+ können Sie die globale Einstellung bei der Clusteraktualisierung außer Kraft setzen

Propagieren von globalen Konfigurationsänderungen an vorhandenen Clustern

Wenn in der TkgServiceConfiguration globale Einstellungen vorgenommen werden, werden diese nicht automatisch an die vorhandenen Cluster weitergegeben. Wenn Sie beispielsweise Änderungen an den proxy- oder trust-Einstellungen in der TkgServiceConfiguration vornehmen, wirken sich diese Änderungen nicht auf bereits bereitgestellte Cluster aus.

Um eine globale Änderung an einen vorhandenen Cluster weiterzugeben, müssen Sie den Tanzu Kubernetes-Cluster patchen, damit der Cluster die an der TkgServiceConfiguration vorgenommenen Änderungen übernimmt.

Beispiel:
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}}}}"