이 항목에서는 ExternalDNS 패키지에 대한 참조 정보를 제공합니다.
ExternalDNS 정보
ExternalDNS는 노출된 Kubernetes 서비스 및 수신을 DNS 제공자와 동기화합니다.
TKG 클러스터에 ExternalDNS를 설치하려면 다음 항목을 참조하십시오.
- vSphere 8x용 TKr: ExternalDNS 설치
- vSphere 7.x용 TKr: ExternalDNS 설치
ExternalDNS 구성 요소
ExternalDNS 패키지는 표에 나열된 컨테이너를 설치합니다. 패키지는 패키지 저장소에 지정된 공용 레지스트리에서 컨테이너를 가져옵니다.
컨테이너 | 리소스 유형 | 복제 | 설명 |
---|---|---|---|
ExternalDNS | DaemonSet | 6 | DNS 조회를 위한 Kubernetes 서비스 노출 |
ExternalDNS 데이터 값
ExternalDNS 데이터 값 파일은 ExternalDNS 구성 요소와 지원되는 DNS 제공자 간에 상호 작용하는 데 사용됩니다. ExternalDNS 패키지는 AWS(Route 53), Azure DNS 및 RFC2136 준수 DNS 서버(예: BIND)와 같은 DNS 제공자를 통해 검증됩니다.
다음 예는 RFC2136 준수 DNS 제공자(예: 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
다음 예는 AWS DNS 제공자(경로 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
다음 예는 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
ExternalDNS 구성
다음 표에는 ExternalDNS에 대해 사용 가능한 구성 매개 변수와 그에 대한 설명이 나와 있습니다. 추가 지침은 사이트
https://github.com/kubernetes-sigs/external-dns#running-externaldns에서 참조하십시오.
매개 변수 | 설명 | 유형 | 기본값 |
---|---|---|---|
externalDns.namespace | external-dns가 배포될 네임스페이스 | 문자열 | tanzu-system-service-discovery |
externalDns.image.repository | external-dns 이미지가 포함된 저장소 | 문자열 | projects.registry.vmware.com/tkg |
externalDns.image.name | external-dns의 이름 | 문자열 | external-dns |
externalDns.image.tag | ExternalDNS 이미지 태그 | 문자열 | v0.7.4_vmware.1 |
externalDns.image.pullPolicy | ExternalDNS 이미지 Pull 정책 | 문자열 | IfNotPresent |
externalDns.deployment.annotations | external-dns 배포에 대한 주석 | map<string,string> | {} |
externalDns.deployment.args | 명령줄을 통해 external-dns로 전달된 인수 | list<string> | [] (필수 매개 변수) |
externalDns.deployment.env | external-dns에 전달할 환경 변수 | list<string> | [] |
externalDns.deployment.securityContext | external-dns 컨테이너의 보안 컨텍스트 | 보안 컨텍스트 | {} |
externalDns.deployment.volumeMounts | external-dns 컨테이너의 볼륨 마운트 | list<VolumeMount> | [] |
externalDns.deployment.volumes | external-dns 포드의 볼륨 | list<Volume> | [] |
예제 configmap
다음 예제 configmap은 ExternalDNS가 와 상호 연결할 수 있는 Kerberos 구성을 정의합니다. 사용자 지정 항목에는 도메인/영역 이름과 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