이 항목에서는 ExternalDNS 패키지에 대한 참조 정보를 제공합니다.

ExternalDNS 정보

ExternalDNS는 노출된 Kubernetes 서비스 및 수신을 DNS 제공자와 동기화합니다.

TKG 클러스터에 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에서 참조하십시오.
표 1. 외부 DNS 패키지 구성
매개 변수 설명 유형 기본값
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