Este tema proporciona información de referencia para el paquete ExternalDNS.
Acerca de ExternalDNS
ExternalDNS sincroniza las entradas y los servicios de Kubernetes con los proveedores de DNS.
Consulte los siguientes temas para instalar ExternalDNS en un clúster de TKG.
- TKr para vSphere 8x: Instalar ExternalDNS
- TKr para vSphere 7.x: Instalar ExternalDNS
Componentes ExternalDNS
El paquete ExternalDNS instala el contenedor que figura en la tabla. El paquete extrae el contenedor del registro público especificado en el repositorio de paquetes.
Contenedor | Tipo de recurso | Réplicas | Descripción |
---|---|---|---|
ExternalDNS | DaemonSet | 6 | Exponer servicios de Kubernetes para la búsqueda de DNS |
Valores de datos de ExternalDNS
El archivo de valores de datos de ExternalDNS se utiliza para interconectarse al componente ExternalDNS con un proveedor de DNS compatible. El paquete de ExternalDNS se valida con los siguientes proveedores DNS: AWS (ruta 53), DNS de Azure y servidores DNS conformes a RFC2136 (como BIND).
El siguiente ejemplo se puede utilizar para un proveedor de DNS conforme a RFC2136 (como 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
El siguiente ejemplo se puede utilizar para el proveedor de DNS de AWS (ruta 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
El siguiente ejemplo se puede utilizar para un proveedor de DNS de 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
Configuración de ExternalDNS
En la tabla se enumeran y describen los parámetros de configuración disponibles para ExternalDNS. Consulte el sitio
https://github.com/kubernetes-sigs/external-dns#running-externaldns para obtener más instrucciones.
Parámetro | Descripción | Tipo | Predeterminado |
---|---|---|---|
externalDns.namespace | Espacio de nombres en el que se implementará el DNS externo | string | tanzu-system-service-discovery |
externalDns.image.repository | Repositorio que contiene la imagen de DNS externo | string | projects.registry.vmware.com/tkg |
externalDns.image.name | Nombre de external-dns | string | external-dns |
externalDns.image.tag | Etiqueta de la imagen de DNS externo | string | v0.7.4_vmware.1 |
externalDns.image.pullPolicy | Directiva de extracción de la imagen de DNS externo | string | IfNotPresent |
externalDns.deployment.annotations | Anotaciones en la implementación de external-dns | map<string,string> | {} |
externalDns.deployment.args | Argumentos transmitidos a través de la línea de comandos a external-dns | list<string> | [] (parámetro obligatorio) |
externalDns.deployment.env | Variables de entorno que se transferirán a external-dns | list<string> | [] |
externalDns.deployment.securityContext | Contexto de seguridad del contenedor de DNS externo | SecurityContext | {} |
externalDns.deployment.volumeMounts | Montajes de volumen del contenedor de external-dns | list<VolumeMount> | [] |
externalDns.deployment.volumes | Volúmenes del pod de DNS externo | list<Volume> | [] |
Configmap de ejemplo
En el siguiente ejemplo, configmap define una configuración de Kerberos con la que ExternalDNS puede establecer una interfaz. Las entradas personalizadas incluyen el nombre de dominio/realm y las direcciones 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