13.24. Ingress DNS レコードの作成
DNS ゾーン設定を削除した場合には、Ingress ロードバランサーを参照する DNS レコードを手動で作成します。ワイルドカードレコードまたは特定のレコードのいずれかを作成できます。以下の手順では A レコードを使用しますが、CNAME やエイリアスなどの必要な他のレコードタイプを使用できます。
前提条件
- 独自にプロビジョニングしたインフラストラクチャーを使用する OpenShift Container Platform クラスターを Amazon Web Services (AWS) にデプロイしています。
-
OpenShift CLI (
oc
) がインストールされている。 -
jq
パッケージをインストールしている。 - AWS CLI をダウンロードし、これをコンピューターにインストールしている。Install the AWS CLI Using the Bundled Installer (Linux, macOS, or Unix) を参照してください。
手順
作成するルートを決定します。
-
ワイルドカードレコードを作成するには、
*.apps.<cluster_name>.<domain_name>
を使用します。ここで、<cluster_name>
はクラスター名で、<domain_name>
は OpenShift Container Platform クラスターの Route 53 ベースドメインです。 特定のレコードを作成するには、以下のコマンドの出力にあるように、クラスターが使用する各ルートにレコードを作成する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routes
$ oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routes
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<domain_name>
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> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<domain_name>
-
ワイルドカードレコードを作成するには、
Ingress Operator ロードバランサーのステータスを取得し、使用する外部 IP アドレスの値をメモします。これは
EXTERNAL-IP
列に表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n openshift-ingress get service router-default
$ oc -n openshift-ingress get service router-default
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 を見つけます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[] | select(.DNSName == "<external_ip>").CanonicalHostedZoneNameID'
$ aws elb describe-load-balancers | jq -r '.LoadBalancerDescriptions[] | select(.DNSName == "<external_ip>").CanonicalHostedZoneNameID'
1 - 1
<external_ip>
には、取得した Ingress Operator ロードバランサーの外部 IP アドレスの値を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Z3AADJGX6KTTL2
Z3AADJGX6KTTL2
このコマンドの出力は、ロードバランサーのホストゾーン ID です。
クラスターのドメインのパブリックホストゾーン ID を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws route53 list-hosted-zones-by-name \ --dns-name "<domain_name>" \ --query 'HostedZones[? Config.PrivateZone != `true` && Name == `<domain_name>.`].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
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /hostedzone/Z3URY6TWQ91KVV
/hostedzone/Z3URY6TWQ91KVV
ドメインのパブリックホストゾーン ID がコマンド出力に表示されます。この例では、これは
Z3URY6TWQ91KVV
になります。プライベートゾーンにエイリアスレコードを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws route53 change-resource-record-sets --hosted-zone-id "<private_hosted_zone_id>" --change-batch '{ "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "\\052.apps.<cluster_domain>", "Type": "A", "AliasTarget":{ "HostedZoneId": "<hosted_zone_id>", "DNSName": "<external_ip>.", "EvaluateTargetHealth": false } } } ] }'
$ 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 アドレスの値を指定します。このパラメーターの値に末尾のピリオド (.
) が含まれていることを確認します。
パブリックゾーンにレコードを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws route53 change-resource-record-sets --hosted-zone-id "<public_hosted_zone_id>"" --change-batch '{ "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "\\052.apps.<cluster_domain>", "Type": "A", "AliasTarget":{ "HostedZoneId": "<hosted_zone_id>", "DNSName": "<external_ip>.", "EvaluateTargetHealth": false } } } ] }'
$ 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 > } > } > } > ] > }'