In questo argomento vengono fornite informazioni di riferimento per il pacchetto ExternalDNS.

Informazioni su ExternalDNS

ExternalDNS sincronizza gli ingressi e i servizi Kubernetes esposti con i provider DNS.

Per installare ExternalDNS in un cluster TKG, fare riferimento agli argomenti seguenti.

Componenti di ExternalDNS

Il pacchetto ExternalDNS installa il container indicato nella tabella. Il pacchetto estrae il container dal registro pubblico specificato nel repository del pacchetto.
Container Tipo di risorsa Repliche Descrizione
ExternalDNS DaemonSet 6 Espone i servizi Kubernetes per la ricerca DNS

Valori dei dati di ExternalDNS

Il file dei valori dei dati ExternalDNS viene utilizzato per interfacciare il componente ExternalDNS con un provider DNS supportato. Il pacchetto ExternalDNS viene convalidato con i seguenti provider DNS: AWS (Route 53), Azure DNS e server DNS conformi a RFC2136 (ad esempio BIND).

L'esempio seguente può essere utilizzato per il provider DNS conforme a RFC2136 (ad esempio BIND).
---
# 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
L'esempio seguente può essere utilizzato per il provider DNS AWS (Route 53).
---
    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
L'esempio seguente può essere utilizzato per un provider DNS di Azure.
---
    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

Configurazione di ExternalDNS

Nella tabella sono elencati e descritti i parametri di configurazione disponibili per ExternalDNS. Per ulteriori informazioni, fare riferimento al sito https://github.com/kubernetes-sigs/external-dns#running-externaldns.
Tabella 1. Configurazione del pacchetto DNS esterno
Parametro Descrizione Tipo Predefinito
externalDns.namespace Spazio dei nomi in cui verrà distribuito external-dns stringa tanzu-system-service-discovery
externalDns.image.repository Repository contenente l'immagine external-dns stringa projects.registry.vmware.com/tkg
externalDns.image.name Nome di external-dns stringa external-dns
externalDns.image.tag Tag immagine ExternalDNS stringa v0.7.4_vmware.1
externalDns.image.pullPolicy Criterio di pull dell'immagine ExternalDNS stringa IfNotPresent
externalDns.deployment.annotations Annotazioni sulla distribuzione external-dns mappa<string,string> {}
externalDns.deployment.args Argomenti passati tramite riga di comando a external-dns elenco<string> [] (parametro obbligatorio)
externalDns.deployment.env Variabili di ambiente da passare a external-dns elenco<string> []
externalDns.deployment.securityContext Contesto di protezione del contenitore external-dns Securitycontext {}
externalDns.deployment.volumeMounts Montaggio dei volumi del contenitore external-dns elenco<VolumeMount> []
externalDns.deployment.volumes Volumi del pod external-dns Elenco<Volume> []

Mappa di configurazione di esempio

La mappa di configurazione di esempio seguente definisce una configurazione di Kerberos con cui ExternalDNS può interfacciarsi. Le voci personalizzate includono il nome di dominio o dell'area di autenticazione e gli indirizzi kdc/admin_server.
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