Cette rubrique fournit des informations de référence pour le module ExternalDNS.
À propos d'ExternalDNS
ExternalDNS synchronise les services et les entrées Kubernetes exposés avec les fournisseurs DNS.
Reportez-vous aux rubriques suivantes pour installer ExternalDNS sur un cluster TKG.
- TKr pour vSphere 8x : Installer ExternalDNS
- TKr pour vSphere 7.x : Installer ExternalDNS
Composants ExternalDNS
Le module ExternalDNS installe le conteneur répertorié dans le tableau. Le module extrait le conteneur du registre public spécifié dans le référentiel de modules.
Conteneur | Type de ressource | Réplicas | Description |
---|---|---|---|
ExternalDNS | DaemonSet | 6 | Exposer les services Kubernetes pour la recherche DNS |
Valeurs de données ExternalDNS
Le fichier de valeurs de données ExternalDNS est utilisé pour interfacer le composant ExternalDNS avec un fournisseur DNS pris en charge. Le module ExternalDNS est validé avec les fournisseurs DNS suivants : AWS (Route 53), Azure DNS et les serveurs DNS compatibles avec RFC2136 (tels que BIND).
L'exemple suivant peut être utilisé pour un fournisseur DNS conforme à RFC2136 (tel que 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'exemple suivant peut être utilisé pour un fournisseur 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'exemple suivant peut être utilisé pour un fournisseur Azure DNS.
--- 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
Configuration d'ExternalDNS
Le tableau répertorie et décrit les paramètres de configuration disponibles pour ExternalDNS. Pour obtenir des instructions supplémentaires, reportez-vous au site
https://github.com/kubernetes-sigs/external-dns#running-externaldns.
Paramètre | Description | Type | Par défaut |
---|---|---|---|
externalDns.namespace | Espace de noms où le DNS externe sera déployé | string | tanzu-system-service-discovery |
externalDns.image.repository | Référentiel contenant l'image du DNS externe | string | projects.registry.vmware.com/tkg |
externalDns.image.name | Nom du DNS externe | string | external-dns |
externalDns.image.tag | Balise d'image du DNS externe | string | v0.7.4_vmware.1 |
externalDns.image.pullPolicy | Stratégie d'extraction d'image du DNS externe | string | IfNotPresent |
externalDns.deployment.annotations | Annotations sur le déploiement du DNS externe | map<string,string> | {} |
externalDns.deployment.args | Arguments transmis via la ligne de commande au DNS externe | list<string> | [] (paramètre obligatoire) |
externalDns.deployment.env | Variables d'environnement à transmettre au DNS externe | list<string> | [] |
externalDns.deployment.securityContext | Contexte de sécurité du conteneur de DNS externe | Contexte de sécurité | {} |
externalDns.deployment.volumeMounts | Montages de volume du conteneur de DNS externe | list<VolumeMount> | [] |
externalDns.deployment.volumes | Volumes de l'espace du DNS externe | list<Volume> | [] |
Exemple de configmap
L'exemple de configmap suivant définit une configuration Kerberos avec laquelle ExternalDNS peut servir d'interface. Les entrées personnalisées incluent le domaine/nom de domaine et les adresses 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