4.11.21. 인그레스 DNS 레코드 생성
DNS 영역 구성을 제거한 경우 인그레스 로드 밸런서를 가리키는 DNS 레코드를 수동으로 만듭니다. 와일드카드 레코드 또는 특정 레코드를 만들 수 있습니다. 다음 프로시저에서는 A 레코드를 사용하지만 CNAME 또는 별칭과 같이 필요한 다른 레코드 유형을 사용할 수 있습니다.
사전 요구 사항
- 프로비저닝한 인프라를 사용하는 AWS(Amazon Web Services)에 OpenShift Container Platform 클러스터를 배포했습니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
jq
CLI를 설치하셨습니다. - AWS CLI를 다운로드하여 컴퓨터에 설치했습니다. 번들 설치 관리자를 사용하여 AWS CLI 설치(Linux, macOS 또는 Unix)를 참조하십시오.
프로세스
생성할 경로를 결정합니다.
-
와일드카드 레코드를 만들려면
*.apps.<cluster_name>. <domain_name>
을 사용합니다. 여기서<cluster_name>
은 클러스터 이름이고<domain_name>
은 OpenShift Container Platform 클러스터의 Route 53 기본 도메인입니다. 특정 레코드를 만들려면 다음 명령의 출력에 표시된 대로 클러스터가 사용하는 각 경로에 대한 레코드를 만들어야 합니다.
$ oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routes
출력 예
oauth-openshift.apps.<cluster_name>.<domain_name> console-openshift-console.apps.<cluster_name>.<domain_name> downloads-openshift-console.apps.<cluster_name>.<domain_name> alertmanager-main-openshift-monitoring.apps.<cluster_name>.<domain_name> grafana-openshift-monitoring.apps.<cluster_name>.<domain_name> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<domain_name>
-
와일드카드 레코드를 만들려면
Ingress Operator 로드 밸런서 상태를 검색하고
EXTERNAL-IP
열에 표시된 외부 IP 주소의 값을 확인합니다.$ oc -n openshift-ingress get service router-default
출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.30.62.215 ab3...28.us-east-2.elb.amazonaws.com 80:31499/TCP,443:30693/TCP 5m
로드 밸런서의 호스팅 영역 ID를 찾습니다.
$ aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[] | select(.DNSName == "<external_ip>").CanonicalHostedZoneNameID' 1
- 1
<external_ip>
는 가져온 Ingress Operator 로드 밸런서의 외부 IP 주소값을 지정합니다.
출력 예
Z3AADJGX6KTTL2
이 명령의 출력은 로드 밸런서 호스팅 영역 ID입니다.
클러스터 도메인의 공개 호스팅 영역 ID를 가져옵니다.
$ aws route53 list-hosted-zones-by-name \ --dns-name "<domain_name>" \ 1 --query 'HostedZones[? Config.PrivateZone != `true` && Name == `<domain_name>.`].Id' 2 --output text
출력 예
/hostedzone/Z3URY6TWQ91KVV
도메인의 공개 호스팅 영역 ID가 명령 출력에 표시됩니다. 이 예에서는
Z3URY6TWQ91KVV
입니다.프라이빗 영역에 별칭 레코드를 추가합니다.
$ aws route53 change-resource-record-sets --hosted-zone-id "<private_hosted_zone_id>" --change-batch '{ 1 > "Changes": [ > { > "Action": "CREATE", > "ResourceRecordSet": { > "Name": "\\052.apps.<cluster_domain>", 2 > "Type": "A", > "AliasTarget":{ > "HostedZoneId": "<hosted_zone_id>", 3 > "DNSName": "<external_ip>.", 4 > "EvaluateTargetHealth": false > } > } > } > ] > }'
- 1
<private_hosted_zone_id>
는 DNS 및 로드 밸런싱에 대한 CloudFormation 템플릿 출력의 값을 지정합니다.- 2
<cluster_domain>
은 OpenShift Container Platform 클러스터와 함께 사용하는 도메인 또는 하위 도메인을 지정합니다.- 3
<hosted_zone_id>
는 가져온 로드 밸런서의 공개 호스팅 영역 ID를 지정합니다.- 4
<external_ip>
는 Ingress Operator 로드 밸런서의 외부 IP 주소값을 지정합니다. 이 매개변수 값에 후행 마침표(.
)을 포함시켜야 합니다.
퍼블릭 영역에 레코드를 추가합니다.
$ aws route53 change-resource-record-sets --hosted-zone-id "<public_hosted_zone_id>"" --change-batch '{ 1 > "Changes": [ > { > "Action": "CREATE", > "ResourceRecordSet": { > "Name": "\\052.apps.<cluster_domain>", 2 > "Type": "A", > "AliasTarget":{ > "HostedZoneId": "<hosted_zone_id>", 3 > "DNSName": "<external_ip>.", 4 > "EvaluateTargetHealth": false > } > } > } > ] > }'