Dieses Thema enthält Referenzinformationen für das ExternalDNS-Paket.
Informationen zu ExternalDNS
ExternalDNS synchronisiert bereitgestellte Kubernetes-Dienste und -Ingresses mit DNS-Anbietern.
Informationen zur Installation von ExternalDNS auf einem TKG-Cluster finden Sie in den im Folgenden aufgeführten Themen.
- TKr für vSphere 8x: Installieren von ExternalDNS
- TKr für vSphere 7.x: Installieren von ExternalDNS
ExternalDNS-Komponenten
Das ExternalDNS-Paket installiert den in der Tabelle aufgeführten Container. Das Paket ruft den Container aus der öffentlichen Registrierung ab, die im Paket-Repository angegeben ist.
Container | Ressourcentyp | Replikate | Beschreibung |
---|---|---|---|
ExternalDNS | DaemonSet | 6 | Kubernetes-Dienste für DNS-Lookup verfügbar machen |
ExternalDNS-Datenwerte
Die ExternalDNS-Datenwertedatei wird verwendet, um die ExternalDNS-Komponente mit einem unterstützten DNS-Anbieter zu verbinden. Das ExternalDNS-Paket wird mit den folgenden DNS-Anbietern validiert: AWS (Route 53), Azure DNS und RFC2136-konformen DNS-Servern (z. B. BIND).
Das folgende Beispiel kann für einen RFC2136-konformen DNS-Anbieter (z. B. BIND) verwendet werden.
--- # Namespace in which to deploy ExternalDNS pods namespace: tanzu-system-service-discovery # Deployment-related configuration deployment: args: - --registry=txt - --txt-owner-id=k8s - --txt-prefix=external-dns- #! Disambiguates TXT records from CNAME records - --provider=rfc2136 - --rfc2136-host=IP-ADDRESS #! Replace with IP of RFC2136-compatible DNS server, such as 192.168.0.1 - --rfc2136-port=53 - --rfc2136-zone=DNS-ZONE #! Replace with zone where services are deployed, such as my-zone.example.org - --rfc2136-tsig-secret=TSIG-SECRET #! Replace with TSIG key secret authorized to update DNS server - --rfc2136-tsig-secret-alg=hmac-sha256 - --rfc2136-tsig-keyname=TSIG-KEY-NAME #! Replace with TSIG key name, such as externaldns-key - --rfc2136-tsig-axfr - --source=service - --source=ingress - --source=contour-httpproxy #! Enables Contour HTTPProxy object support - --domain-filter=DOMAIN #! Zone where services are deployed, such as my-zone.example.org
Das folgende Beispiel kann für einen AWS DNS-Anbieter (Route 53) verwendet werden.
--- namespace: service-discovery dns: pspNames: "vmware-system-restricted" deployment: args: - --source=service - --source=ingress - --source=contour-httpproxy #! read Contour HTTPProxy resources - --domain-filter=my-zone.example.org #! zone where services are deployed - --provider=aws - --policy=upsert-only #! prevent deleting any records, omit to enable full synchronization - --aws-zone-type=public #! only look at public hosted zones (public, private, no value for both) - --aws-prefer-cname - --registry=txt - --txt-owner-id=HOSTED_ZONE_ID #! Route53 hosted zone identifier for my-zone.example.org - --txt-prefix=txt #! disambiguates TXT records from CNAME records env: - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: route53-credentials #! Kubernetes secret for route53 credentials key: aws_access_key_id - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: route53-credentials #! Kubernetes secret for route53 credentials key: aws_secret_access_key
Das folgende Beispiel kann für einen Azure DNS-Anbieter verwendet werden.
--- namespace: service-discovery dns: pspNames: "vmware-system-restricted" deployment: args: - --provider=azure - --source=service - --source=ingress - --source=contour-httpproxy #! read Contour HTTPProxy resources - --domain-filter=my-zone.example.org #! zone where services are deployed - --azure-resource-group=my-resource-group #! Azure resource group volumeMounts: - name: azure-config-file mountPath: /etc/kubernetes readOnly: true #@overlay/replace volumes: - name: azure-config-file secret: secretName: azure-config-file
ExternalDNS-Konfiguration
In der Tabelle sind die verfügbaren Konfigurationsparameter für ExternalDNS aufgeführt und beschrieben. Weitere Informationen finden Sie auf der Site
https://github.com/kubernetes-sigs/external-dns#running-externaldns.
Parameter | Beschreibung | Typ | Standard |
---|---|---|---|
externalDns.namespace | Namespace, in dem external-dns bereitgestellt wird | string | tanzu-system-service-discovery |
externalDns.image.repository | Repository mit external-dns-Image | string | projects.registry.vmware.com/tkg |
externalDns.image.name | Name von external-dns | string | external-dns |
externalDns.image.tag | ExternalDNS-Image-Tag | string | v0.7.4_vmware.1 |
externalDns.image.pullPolicy | Pull-Richtlinie für das ExternalDNS-Image | string | IfNotPresent |
externalDns.deployment.annotations | Anmerkungen zur Bereitstellung von external-dns | map<string,string> | {} |
externalDns.deployment.args | Über die Befehlszeile an external-dns übergebene Argumente | list<string> | [] (Obligatorischer Parameter) |
externalDns.deployment.env | An external-dns zu übergebende Umgebungsvariablen | list<string> | [] |
externalDns.deployment.securityContext | Sicherheitskontext des external-dns-Containers | SecurityContext | {} |
externalDns.deployment.volumeMounts | Volume-Mounts des external-dns-Containers | list<VolumeMount> | [] |
externalDns.deployment.volumes | Volumes des external-dns-Pods | list<Volume> | [] |
Beispiel für ConfigMap
Das folgende Beispiel für ConfigMap definiert eine Kerberos-Konfiguration, mit der ExternalDNS verbunden werden kann. Benutzerdefinierte Einträge enthalten den Domänen-/Bereichsnamen und die kdc/admin_server-Adressen.
apiVersion: v1 kind: ConfigMap metadata: name: krb.conf namespace: tanzu-system-service-discovery data: krb5.conf: | [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt default_ccache_name = KEYRING:persistent:%{uid} default_realm = CORP.ACME [realms] CORP.ACME = { kdc = controlcenter.corp.acme admin_server = controlcenter.corp.acme } [domain_realm] corp.acme = CORP.ACME .corp.acme = CORP.ACME