Sie können die TKG-Dienstkonfiguration für TKG-Cluster anpassen, die mithilfe der v1alpha3-API bereitgestellt werden, einschließlich Containernetzwerkschnittstelle (CNI), Proxyserver und TLS-Zertifikaten.

Informationen zum Anpassen der TkgServiceConfiguration

Sie können globale Einstellungen für Tanzu Kubernetes-Cluster konfigurieren, indem Sie die TkgServiceConfiguration bearbeiten. Mit dieser Konfiguration können Sie die Standard-CNI festlegen und einen globalen Proxy-Server hinzufügen und ein oder mehrere vertrauenswürdige TLS-Zertifikate hinzufügen.

Vorsicht: Das Anpassen der TkgServiceConfiguration ist ein globaler Vorgang. Alle Änderungen, die Sie am TkgServiceConfiguration-Objekt vornehmen, gelten für alle TKG-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.
Hinweis: Das Anpassen der TkgServiceConfiguration gilt für Tanzu Kubernetes-Cluster, die mit der v1alpha3-API bereitgestellt werden. Es gilt nicht für mit der v1beta1-API bereitgestellte Cluster.

TkgServiceConfiguration-Spezifikation

Die TkgServiceConfiguration-Spezifikation enthält Felder für die Konfiguration der Tanzu Kubernetes Grid-Instanz.
Wichtig: Ein gültiger Schlüsselname darf nur aus alphanumerischen Zeichen, einem Bindestrich (z. B. key-name), einem Unterstrich (z. B. KEY_NAME) oder einem Punkt (z. B. key.name) bestehen. Leerzeichen können in Schlüsselnamen nicht verwendet werden.
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

TkgServiceConfiguration-Spezifikation mit Anmerkungen

In der folgenden YAML werden die konfigurierbaren Felder für jeden der TkgServiceConfiguration-Spezifikationsparameter aufgelistet und beschrieben.
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
Abbildung 1. Erforderliche NoProxy-Werte
Erforderliche NoProxy-Werte
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.

Beispiel für eine TkgServiceConfiguration-Spezifikation

In der folgenden YAML werden die konfigurierbaren Felder für jeden der TkgServiceConfiguration-Spezifikationsparameter aufgelistet und beschrieben.

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

Bearbeiten der TkgServiceConfiguration

Befolgen Sie das folgende Verfahren, um die TkgServiceConfiguration-Spezifikation zu bearbeiten.
  1. Konfigurieren Sie die Kubectl-Bearbeitung. Weitere Informationen hierzu finden Sie unter Konfigurieren eines Texteditors für Kubectl.
  2. Authentifizieren Sie sich beim Supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  3. Führen Sie einen Kontextwechsel zum Ziel-vSphere-Namespace durch.
    kubectl config use-context vSphere-Namespace
  4. Rufen Sie die TkgServiceConfiguration-Spezifikation ab.
    kubectl get tkgserviceconfigurations
  5. Starten Sie den Ladevorgang, um die TkgServiceConfiguration-Spezifikation zu bearbeiten.
    kubectl edit tkgserviceconfigurations tkg-service-configuration

    Das System öffnet die tkg-service-configuration-Spezifikation im Standardtexteditor, der durch die Umgebungsvariable KUBE_EDITOR oder EDITOR definiert wird.

  6. Bearbeiten Sie die TkgServiceConfiguration entsprechend Ihren Anforderungen.
  7. Um die Änderungen anzuwenden, speichern Sie die Datei im Texteditor. Schließen Sie zum Abbrechen den Editor ohne Speichern.

    Wenn Sie die Änderung im Texteditor speichern, aktualisiert kubectl die tkg-service-configuration-Dienstspezifikation.

  8. Stellen Sie sicher, dass die TkgServiceConfiguration-Spezifikation aktualisiert wird.
    kubectl get tkgserviceconfigurations

Propagieren von globalen Konfigurationsänderungen an vorhandenen Clustern

Wenn in der TkgServiceConfiguration globale Einstellungen vorgenommen werden, werden diese möglicherweise 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 möglicherweise nicht auf bereits bereitgestellte Cluster aus.

Um eine globale Änderung manuell 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}}}}"