Installieren von ExternalDNS für die Diensterkennung

In diesem Thema wird die Bereitstellung von ExternalDNS in einem Arbeitslastcluster in Tanzu Kubernetes Grid erläutert.

Der ExternalDNS-Dienst veröffentlicht DNS-Datensätze für Anwendungen auf DNS-Servern unter Verwendung einer deklarativen, nativen Kubernetes-Schnittstelle. Er befindet sich als CLI-verwaltetes Paket im Lieferumfang von Tanzu Kubernetes Grid.

In Umgebungen, in denen Harbor in einem Shared Services-Cluster mit Lastausgleich (AWS, Azure und vSphere mit NSX Advanced Load Balancer) bereitgestellt wird, kann ExternalDNS zum Veröffentlichen eines DNS-Hostnamens für den Harbor-Dienst verwendet werden. Auf diese Weise kann über andere Cluster auf Harbor zugegriffen werden. Weitere Informationen finden Sie unter Harbor-Registrierung und ExternalDNS.

Voraussetzungen

  • Eine Bootstrap-Maschine, auf der Folgendes installiert ist:
    • Tanzu CLI, Tanzu CLI-Plug-Ins und kubectl.
    • yq v4.5 oder höher.
  • Sie haben einen Verwaltungscluster auf vSphere, Amazon Web Services (AWS) oder Azure in einer mit dem Internet verbundenen oder auf das Internet beschränkten Umgebung bereitgestellt. Wenn Sie Tanzu Kubernetes Grid in einer Umgebung mit Internetbeschränkungen verwenden, haben Sie das Verfahren unter Vorbereitung der Bereitstellung von Verwaltungsclustern in einer Umgebung mit Internetbeschränkung durchgeführt, bevor Sie den Verwaltungscluster bereitgestellt haben.
  • Sie haben sich bei der Tanzu CLI mit dem Befehl tanzu context use angemeldet.
  • Sie haben die vollqualifizierten Domänennamen (FQDNs) für die Dienste festgelegt, die Sie mit ExternalDNS für Ihren DNS-Server zur Verfügung stellen möchten.

Vorbereiten des Clusters für die ExternalDNS-Bereitstellung

Der ExternalDNS-Dienst muss im selben Cluster wie die Dienste bereitgestellt werden, für die DNS-Datensätze exportiert werden.

  • Um Harbor zu installieren, befolgen Sie die Voraussetzungen und das Verfahren in Installieren von Harbor für die Dienstregistrierung.
  • ExternalDNS unterstützt das Erstellen von Datensätzen für Kubernetes-Dienste und Contour HTTPProxy-Ressourcen. Wenn Sie Datensätze für Contour HTTPProxy-Ressourcen in einem Arbeitslastcluster erstellen möchten, müssen Sie das Contour-Paket im Cluster installieren. Anweisungen finden Sie unter Installieren von Contour für die Ingress-Steuerung. Das Contour-Paket wird auch für Harbor benötigt.

Vorbereiten der Konfigurationsdatei für das ExternalDNS-Paket

Das ExternalDNS-Paket wurde mit AWS (Route 53), Azure DNS und RFC2136 (BIND) validiert. Mit der angegebenen Konfiguration werden Datensätze für Contour HTTPProxy-Ressourcen und Kubernetes-Services vom Typ LoadBalancer exportiert.

Die externe DNS-Community verwaltet Integrationen mit vielen DNS-Anbietern auf mit unterschiedlichen Stabilitätsstufen. Sofern nicht anders angegeben, garantiert VMware keine Unterstützung für die Integration des ExternalDNS-Pakets mit bestimmten Anbietern.

AWS (Route 53)
So bereiten Sie die Konfigurationsdatei für die Bereitstellung des ExternalDNS-Pakets auf AWS vor:
  1. Erstellen Sie eine gehostete Zone innerhalb von Route 53 mit der Domäne, die von den Diensten verwendet wird.
  2. Notieren Sie sich die ID der gehosteten Zone. Sie verwenden diese ID später bei der Konfiguration von ExternalDNS.
  3. Erstellen Sie eine IAM-Richtlinie für ExternalDNS zur Aktualisierung von Route 53. Wechseln Sie in der AWS-Konsole zum IAM-Dashboard und navigieren Sie unter Zugriffsverwaltung (Access Management) zum Bildschirm Richtlinien (Policies). Klicken Sie auf Richtlinie erstellen (Create Policy) und wechseln Sie zur Registerkarte „JSON“. Fügen Sie die folgende Richtlinie ein. Bei Bedarf können Sie die Richtlinie optimieren, um Updates für die soeben erstellte gehostete Zone zuzulassen. Schließen Sie den Assistenten ab.

    {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "route53:ChangeResourceRecordSets"
         ],
         "Resource": [
           "arn:aws:route53:::hostedzone/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "route53:ListHostedZones",
           "route53:ListResourceRecordSets"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
    }
    
  4. Erstellen Sie anhand der oben erstellten Richtlinie einen IAM-Benutzer für ExternalDNS. Wechseln Sie in der AWS-Konsole zum Bildschirm Benutzer (Users) und klicken Sie auf Benutzer hinzufügen (Add users). Geben Sie einen Namen für den IAM-Benutzer an und stellen Sie sicher, dass Programmgesteuerter Zugriff (Programmatic access) aktiviert ist. Klicken Sie auf dem Bildschirm Berechtigungen (Permissions) des Assistenten auf Vorhandene Richtlinien direkt anhängen (Attach existing policies directly) und wählen Sie die Richtlinie aus, die Sie im vorherigen Schritt erstellt haben.

  5. Fahren Sie mit der letzten Seite des Assistenten fort. Notieren Sie sich die Zugriffsschlüssel-ID (Access key ID) und den geheimen Zugriffsschlüssel (Secret access key). Um diese Route 53-Anmeldedaten für ExternalDNS zur Verfügung zu stellen, erstellen Sie einen geheimen Kubernetes-Schlüssel in dem Namespace, in dem ExternalDNS ausgeführt wird.

    1. Legen Sie den Kontext von kubectl auf den Cluster fest, in dem Sie ExternalDNS bereitstellen. Beispiel:

      kubectl config use-context tkg-services-admin@tkg-services
      
    2. Erstellen Sie den geheimen Kubernetes-Schlüssel:

      kubectl -n tanzu-system-service-discovery create secret generic route53-credentials \
      --from-literal=aws_access_key_id=YOUR-ACCESS-KEY-ID \
      --from-literal=aws_secret_access_key=YOUR-SECRET-ACCESS-KEY
      

      Dabei gilt: YOUR-ACCESS-KEY-ID und YOUR-SECRET-ACCESS-KEY sind die oben aufgezeichneten Anmeldedaten.

  6. Erstellen Sie eine Konfigurationsdatei für das ExternalDNS-Paket, indem Sie die Standardkonfiguration des Pakets abrufen:

    tanzu package available get external-dns.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
    

    Dabei ist PACKAGE-VERSION die Version des ExternalDNS-Pakets, das Sie installieren möchten, und FILE-PATH der Speicherort, an dem Sie die Konfigurationsdatei speichern möchten, z. B. external-dns-data-values.yaml.

  7. Konfigurieren Sie die folgenden Einstellungen in der Datei external-dns-data-values.yaml. Anhand dieser Datei wird das ExternalDNS-Paket konfiguriert.

    ---
    
    # Namespace in which to deploy ExternalDNS pods.
    namespace: tanzu-system-service-discovery
    
    # Deployment-related configuration.
    deployment:
    args:
      - --source=service
      - --source=ingress
      - --source=contour-httpproxy # Provide this to enable Contour HTTPProxy support. Must have Contour installed or ExternalDNS will fail.
      - --domain-filter=DOMAIN # Makes ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones.
      - --policy=upsert-only # Prevents ExternalDNS from deleting any records, omit to enable full synchronization.
      - --registry=txt
      - --txt-owner-id=HOSTED-ZONE-ID
      - --txt-prefix=txt # Disambiguates TXT records from CNAME records.
      - --provider=aws
      - --aws-zone-type=public # Looks only at public hosted zones. Valid values are public, private, or no value for both.
      - --aws-prefer-cname
    env:
      - name: AWS_ACCESS_KEY_ID
         valueFrom:
         secretKeyRef:
            name: route53-credentials
            key: aws_access_key_id
      - name: AWS_SECRET_ACCESS_KEY
         valueFrom:
         secretKeyRef:
            name: route53-credentials
            key: aws_secret_access_key
    securityContext: {}
    volumeMounts: []
    volumes: []
    

    Ersetzen Sie die Platzhalter in der Datei external-dns-data-values.yaml durch Ihre Werte. Weitere Konfigurationsoptionen finden Sie in der ExternalDNS-Dokumentation.

    Bevor Sie zusätzliche Konfigurationsoptionen in der Datei external-dns-data-values.yaml festlegen, überprüfen Sie das Werteschema des ExternalDNS-Pakets. Führen Sie zum Abrufen des Werteschemas folgenden Befehl aus:

    tanzu package available get external-dns.tanzu.vmware.com/AVAILABLE-VERSION --values-schema
    

    Dabei gilt: AVAILABLE-VERSION ist die Version des ExternalDNS-Pakets. Mit dem Flag --values-schema wird der Abschnitt valuesSchema aus der API-Ressource Package für das ExternalDNS-Paket abgerufen. Sie können das Ausgabeformat --output für das Werteschema auf yaml, json oder table festlegen. Weitere Informationen finden Sie unter Pakete in Installieren und Verwalten von Paketen.

RFC2136-Server (BIND)
Mit dem RFC2136-Anbieter können Sie jeden RFC2136-kompatiblen DNS-Server als Anbieter für ExternalDNS verwenden, wie z. B. BIND.
  1. Fordern Sie einen TSIG-Schlüssel für Ihren Server an oder erstellen Sie ihn. Dieser Schlüssel muss zur Aktualisierung und Übertragung der zu aktualisierenden Zone berechtigt sein. Der Schlüssel ähnelt Folgendem:

    key "externaldns-key" {
    algorithm hmac-sha256;
    secret "/2avn5M4ndEztbDqy66lfQ+PjRZta9UXLtToW6NV5nM=";
    };
    

    Wenn Sie Ihren eigenen DNS-Server verwalten, können Sie mithilfe des Befehls tsig-keygen -a hmac-sha256 externaldns einen TSIG-Schlüssel erstellen. Kopieren Sie die Ausgabe in die Konfiguration der DNS-Server. Beispiel: Fügen Sie für BIND den Schlüssel zur Datei named.conf hinzu und konfigurieren Sie die Zone mit den Feldern allow-transfer und update-policy. Beispiel:

    key "externaldns-key" {
    algorithm hmac-sha256;
    secret "/2avn5M4ndEztbDqy66lfQ+PjRZta9UXLtToW6NV5nM=";
    };
    zone "k8s.example.org" {
    type master;
    file "/etc/bind/zones/k8s.zone";
          allow-transfer {
          key "externaldns-key";
          };
          update-policy {
          grant externaldns-key zonesub ANY;
          };
    };
    

    Die obigen Ausführungen setzen voraus, dass Sie auch über eine Zonendatei verfügen, die Folgendem ähnelt:

    $TTL 60 ; 1 minute
    @         IN SOA  k8s.example.org.  root.k8s.example.org. (
                      16  ; serial
                      60  ; refresh (1 minute)
                      60  ; retry (1 minute)
                      60  ; expire (1 minute)
                      60  ; minimum (1 minute)
                      )
                NS   ns.k8s.example.org.
    ns           A    1.2.3.4
    
  2. Erstellen Sie eine Konfigurationsdatei für das ExternalDNS-Paket, indem Sie die Standardkonfiguration des Pakets abrufen:

    tanzu package available get external-dns.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
    

    Dabei ist PACKAGE-VERSION die Version des ExternalDNS-Pakets, das Sie installieren möchten, und FILE-PATH der Speicherort, an dem Sie die Konfigurationsdatei speichern möchten, z. B. external-dns-data-values.yaml.

  3. Konfigurieren Sie die folgenden Einstellungen in der Datei external-dns-data-values.yaml. Anhand dieser Datei wird das ExternalDNS-Paket konfiguriert.

    ---
    
    # Namespace in which to deploy ExternalDNS pods.
    namespace: tanzu-system-service-discovery
    
    # Deployment-related configuration.
    deployment:
    args:
       - --source=service
       - --source=ingress
       - --source=contour-httpproxy # Provide this to enable Contour HTTPProxy support. Must have Contour installed or ExternalDNS will fail.
       - --domain-filter=DOMAIN # For example, k8s.example.org. Makes ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones.
       - --policy=upsert-only # Prevents ExternalDNS from deleting any records, omit to enable full synchronization.
       - --registry=txt
       - --txt-owner-id=k8s
       - --txt-prefix=external-dns- # Disambiguates TXT records from CNAME records.
       - --provider=rfc2136
       - --rfc2136-host=IP-ADDRESS-OF-RFC2136-DNS-SERVER
       - --rfc2136-port=53
       - --rfc2136-zone=DNS-ZONE # For example, k8s.example.org.
       - --rfc2136-tsig-secret=TSIG-SECRET-FROM-STEP-1
       - --rfc2136-tsig-secret-alg=hmac-sha256
       - --rfc2136-tsig-keyname=TSIG-KEY-NAME # For example, externaldns-key.
       - --rfc2136-tsig-axfr
    env: []
    securityContext: {}
    volumeMounts: []
    volumes: []
    

    Ersetzen Sie die Platzhalter in der Datei external-dns-data-values.yaml durch Ihre Werte. Weitere Konfigurationsoptionen finden Sie in der ExternalDNS-Dokumentation.

    Bevor Sie zusätzliche Konfigurationsoptionen in der Datei external-dns-data-values.yaml festlegen, überprüfen Sie das Werteschema des ExternalDNS-Pakets. Führen Sie zum Abrufen des Werteschemas folgenden Befehl aus:

    tanzu package available get external-dns.tanzu.vmware.com/AVAILABLE-VERSION --values-schema
    

    Dabei gilt: AVAILABLE-VERSION ist die Version des ExternalDNS-Pakets. Mit dem Flag --values-schema wird der Abschnitt valuesSchema aus der API-Ressource Package für das ExternalDNS-Paket abgerufen. Sie können das Ausgabeformat --output für das Werteschema auf yaml, json oder table festlegen. Weitere Informationen finden Sie unter Pakete in Installieren und Verwalten von Paketen.

Azure
So bereiten Sie die Konfigurationsdatei für die Bereitstellung des ExternalDNS-Pakets in Azure vor:
  1. Melden Sie sich bei der az-CLI an:

    az login
    
  2. Legen Sie Ihr Abonnement fest:

    az account set -s SUBSCRIPTION-ID-GUID
    
  3. Erstellen Sie einen Dienstprinzipal:

    az ad sp create-for-rbac -n SERVICE-PRINCIPAL-NAME
    

    Die JSON-Ausgabe des Befehls ähnelt Folgendem:

    {
      "appId": "a72a7cfd-7cb0-4b02-b130-03ee87e6ca89",
      "displayName": "foo",
      "name": "http://foo",
      "password": "515c55da-f909-4e17-9f52-236ffe1d3033",
      "tenant": "b35138ca-3ced-4b4a-14d6-cd83d9ea62f0"
    }
    
  4. Weisen Sie dem Dienstprinzipal Berechtigungen zu:

    1. Rufen Sie die ID der Ressourcengruppe ab:

      az group show --name RESOURCE-GROUP --query id
      
    2. Weisen Sie dem Dienstprinzipal im Geltungsbereich der Ressourcengruppe die Rolle „Leser (Reader)“ zu. Sie benötigen die appId aus der Ausgabe des Befehls az ad sp create-for-rbac (siehe oben).

      az role assignment create --role "Reader" --assignee APP-ID-GUID --scope RESOURCE-GROUP-RESOURCE-ID
      
    3. Rufen Sie die ID der DNS-Zone ab:

      az network dns zone show --name DNS-ZONE-NAME -g RESOURCE-GROUP-NAME --query id
      
    4. Weisen Sie dem Dienstprinzipal im Geltungsbereich der DNS-Zone die Rolle „Mitwirkender (Contributor)“ zu:

      az role assignment create --role "Contributor" --assignee APP-ID-GUID --scope DNS-ZONE-RESOURCE-ID
      
  5. Zum Herstellen einer Verbindung zwischen dem ExternalDNS-Dienst und dem Azure-DNS-Dienst erstellen Sie eine Konfigurationsdatei mit dem Namen azure.json auf Ihrem lokalen Computer mit Inhalten, die Folgendem ähneln:

    {
     "tenantId": "01234abc-de56-ff78-abc1-234567890def",
     "subscriptionId": "01234abc-de56-ff78-abc1-234567890def",
     "resourceGroup": "MyDnsResourceGroup",
     "aadClientId": "01234abc-de56-ff78-abc1-234567890def",
     "aadClientSecret": "uKiuXeiwui4jo9quae9o"
    }
    

    Ersetzen Sie die Werte im obigen Beispiel folgendermaßen durch eigene Werte:

    • Zum Abrufen der tenantId können Sie den Befehl az account show --query "tenantId" ausführen.
    • Zum Abrufen der subscriptionId können Sie den Befehl az account show --query "id" ausführen.
    • resourceGroup ist der Name der Ressourcengruppe, in der sich die DNS-Zone befindet.
    • aadClientId ist die appId aus der Ausgabe des Dienstprinzipals.
    • aadClientSecret ist das Kennwort aus der Ausgabe des Dienstprinzipals.
  6. Um diese Azure-Anmeldedaten für ExternalDNS zur Verfügung zu stellen, erstellen Sie einen geheimen Kubernetes-Schlüssel in dem Namespace, in dem ExternalDNS ausgeführt wird:

    1. Legen Sie den Kontext von kubectl auf den Cluster fest, in dem Sie ExternalDNS bereitstellen. Beispiel:

      kubectl config use-context tkg-services-admin@tkg-services
      
    2. Erstellen Sie den geheimen Schlüssel mithilfe der Konfigurationsdatei azure.json aus dem vorherigen Schritt:

      kubectl -n tanzu-system-service-discovery create secret generic azure-config-file --from-file=azure.json
      
  7. Erstellen Sie eine Konfigurationsdatei für das ExternalDNS-Paket, indem Sie die Standardkonfiguration des Pakets abrufen:

    tanzu package available get external-dns.tanzu.vmware.com/PACKAGE-VERSION --default-values-file-output FILE-PATH
    

    Dabei ist PACKAGE-VERSION die Version des ExternalDNS-Pakets, das Sie installieren möchten, und FILE-PATH der Speicherort, an dem Sie die Konfigurationsdatei speichern möchten, z. B. external-dns-data-values.yaml.

  8. Konfigurieren Sie die folgenden Einstellungen in der Datei external-dns-data-values.yaml. Anhand dieser Datei wird das ExternalDNS-Paket konfiguriert.

    ---
    
    # Namespace in which to deploy ExternalDNS.
    namespace: tanzu-system-service-discovery
    
    # Deployment-related configuration.
    deployment:
     args:
       - --source=service
       - --source=ingress
       - --source=contour-httpproxy # Provide this to enable Contour HTTPProxy support. Must have Contour installed or ExternalDNS will fail.
       - --domain-filter=DOMAIN # For example, k8s.example.org. Makes ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones.
       - --policy=upsert-only # Prevents ExternalDNS from deleting any records, omit to enable full synchronization.
       - --registry=txt
       - --txt-prefix=externaldns- # Disambiguates TXT records from CNAME records.
       - --provider=azure
       - --azure-resource-group=RESOURCE-GROUP # Azure resource group.
     env: []
     securityContext: {}
     volumeMounts:
       - name: azure-config-file
         mountPath: /etc/kubernetes
         readOnly: true
     volumes:
       - name: azure-config-file
         secret:
           secretName: azure-config-file
    

    Ersetzen Sie die Platzhalter in der Datei external-dns-data-values.yaml durch Ihre Werte. Weitere Konfigurationsoptionen finden Sie in der ExternalDNS-Dokumentation.

    Bevor Sie zusätzliche Konfigurationsoptionen in der Datei external-dns-data-values.yaml festlegen, überprüfen Sie das Werteschema des ExternalDNS-Pakets. Führen Sie zum Abrufen des Werteschemas folgenden Befehl aus:

    tanzu package available get external-dns.tanzu.vmware.com/AVAILABLE-VERSION --values-schema
    

    Dabei gilt: AVAILABLE-VERSION ist die Version des ExternalDNS-Pakets. Mit dem Flag --values-schema wird der Abschnitt valuesSchema aus der API-Ressource Package für das ExternalDNS-Paket abgerufen. Sie können das Ausgabeformat --output für das Werteschema auf yaml, json oder table festlegen. Weitere Informationen finden Sie unter Pakete in Installieren und Verwalten von Paketen.


Installieren des ExternalDNS-Pakets

  1. Legen Sie den Kontext von kubectl auf den Cluster fest, in dem Sie ExternalDNS bereitstellen. Beispiel:

    kubectl config use-context tkg-services-admin@tkg-services
    
  2. Wenn der Cluster nicht über ein Paket-Repository mit installiertem ExternalDNS-Paket verfügt, wie z. B. das tanzu-standard-Repository, installieren Sie es:

    tanzu package repository add PACKAGE-REPO-NAME --url PACKAGE-REPO-ENDPOINT --namespace tkg-system
    

    Dabei gilt:

    • PACKAGE-REPO-NAME ist der Name des Paket-Repositorys, wie z. B. tanzu-standard, oder der Name einer privaten Image-Registrierung, die mit ADDITIONAL_IMAGE_REGISTRY-Variablen konfiguriert ist.
    • PACKAGE-REPO-ENDPOINT ist die URL des Paket-Repositorys.

      • Für diese Version lautet die tanzu-standard-URL projects.registry.vmware.com/tkg/packages/standard/repo:v2023.10.16. Informationen zum Abrufen dieses Werts über die Tanzu CLI finden Sie unter Listen von Paketrepositorys oder in Tanzu Mission Control in der Liste Add-Ons (Addons) > Repositorys (Repositories) im Fensterbereich Cluster.
  3. Rufen Sie den Namen des ExternalDNS-Pakets ab:

    tanzu package available list -A
    
  4. Rufen Sie die Version des ExternalDNS-Pakets ab:

    tanzu package available list external-dns.tanzu.vmware.com -A
    
  5. Wenn Ihre Datei external-dns-data-values.yaml Kommentare enthält, entfernen Sie diese vor der Installation des Pakets:

    yq -i eval '... comments=""' external-dns-data-values.yaml
    
  6. Installieren des Pakets:

    tanzu package install external-dns \
    --package external-dns.tanzu.vmware.com \
    --version AVAILABLE-PACKAGE-VERSION \
    --values-file external-dns-data-values.yaml \
    --namespace TARGET-NAMESPACE
    

    Dabei gilt:

    • TARGET-NAMESPACE ist der Namespace, in dem das ExternalDNS-Paket installiert werden soll. Beispielsweise der Namespace my-packages oder tanzu-cli-managed-packages.

      • Wenn das Flag --namespace nicht angegeben ist, installiert die Tanzu CLI das Paket im Namespace default. Die ExternalDNS-Pods und alle anderen mit der ExternalDNS-Komponente verknüpften Ressourcen werden im Namespace tanzu-system-service-discovery erstellt. Installieren Sie das ExternalDNS-Paket nicht in diesem Namespace.
      • Der angegebene Namespace muss bereits vorhanden sein, wie z. B. durch die Ausführung von kubectl create namespace my-packages.
    • AVAILABLE-PACKAGE-VERSION ist die oben abgerufene Version.

    Beispiel:

    tanzu package install external-dns \
    --package external-dns.tanzu.vmware.com \
    --version 0.10.0+vmware.1-tkg.1 \
    --values-file external-dns-data-values.yaml \
    --namespace my-packages
    
  7. Bestätigen Sie, dass das Paket external-dns installiert wurde:

    tanzu package installed list -A
    

    Sie können auch folgenden Befehl ausführen, um weitere Paketdetails anzuzeigen:

    tanzu package installed get external-dns --namespace PACKAGE-NAMESPACE
    

    Dabei gilt: PACKAGE-NAMESPACE ist der Namespace, in dem das external-dns-Paket installiert ist.

  8. Bestätigen Sie, dass die external-dns-App erfolgreich in Ihrem PACKAGE-NAMESPACE abgeglichen wurde:

    kubectl get apps -A
    

    Lautet der Status nicht Reconcile Succeeded, zeigen Sie die vollständigen Statusdetails der App external-dns an. Die Anzeige des vollständigen Status kann Sie bei der Behebung des Problems unterstützen.

    kubectl get app external-dns --namespace PACKAGE-NAMESPACE -o yaml
    

    Dabei gilt: PACKAGE-NAMESPACE ist der Namespace, in dem Sie das Paket installiert haben. Wenn das Problem nicht behoben werden kann, müssen Sie das Paket zunächst deinstallieren und dann erneut installieren:

    tanzu package installed delete external-dns --namespace PACKAGE-NAMESPACE
    
  9. Bestätigen Sie, dass ExternalDNS-Pods im Namespace tanzu-system-service-discovery ausgeführt werden:

    kubectl get pods -A
    

Validieren von ExternalDNS

Bei der Konfiguration mit Contour überwacht ExternalDNS automatisch den angegebenen Namespace auf HTTPProxy-Ressourcen und erstellt DNS-Datensätze für Dienste mit Hostnamen, die dem konfigurierten Domänenfilter entsprechen.

ExternalDNS führt ebenfalls eine automatische Überwachung der Kubernetes-Dienste mit der Anmerkung external-dns.alpha.kubernetes.io/hostname durch und erstellt DNS-Datensätze für Dienste, deren Anmerkungen mit dem konfigurierten Domänenfilter übereinstimmen.

Beispiel: Für einen Dienst mit der Anmerkung external-dns.alpha.kubernetes.io/hostname: foo.k8s.example.org erstellt ExternalDNS einen DNS-Datensatz für foo.k8s.example.org. Sie können überprüfen, ob der Datensatz vorhanden ist, indem Sie die von Ihnen erstellte Zone überprüfen.

Aktualisieren einer ausgeführten ExternalDNS-Bereitstellung

Wenn Sie nach der Bereitstellung Änderungen an der Konfiguration des ExternalDNS-Pakets vornehmen müssen, führen Sie diese Schritte aus, um das bereitgestellte ExternalDNS-Paket zu aktualisieren.

  1. Aktualisieren Sie die ExternalDNS-Konfiguration in external-dns-data-values.yaml.

  2. Aktualisieren Sie die Konfiguration des installierten Pakets:

    tanzu package installed update external-dns \
    --version INSTALLED-PACKAGE-VERSION \
    --values-file external-dns-data-values.yaml \
    --namespace INSTALLED-PACKAGE-NAMESPACE
    

    Dabei gilt:

    • INSTALLED-PACKAGE-VERSION ist die Version des installierten ExternalDNS-Pakets.
    • INSTALLED-PACKAGE-NAMESPACE ist der Namespace, in dem das ExternalDNS-Paket installiert ist.

    Beispiel:

    tanzu package installed update external-dns \
    --version 0.10.0+vmware.1-tkg.1 \
    --values-file external-dns-data-values.yaml \
    --namespace my-packages
    

Das ExternalDNS-Paket wird mit dem neuen Wert oder den von Ihnen hinzugefügten Werten abgeglichen. Es kann bis zu fünf Minuten dauern, bis kapp-controller die Änderungen übernommen hat.

Weitere Informationen zum Befehl tanzu package installed update finden Sie unter Aktualisieren eines Pakets in Installieren und Verwalten von Paketen. Sie können diesen Befehl verwenden, um die Version oder die Konfiguration eines installierten Pakets zu aktualisieren.

check-circle-line exclamation-circle-line close-line
Scroll to top icon