14.4. 在 AWS 上创建 DNS 记录
您可以使用外部 DNS Operator 在 AWS 和 AWS GovCloud 上创建 DNS 记录。
14.4.1. 使用 Red Hat External DNS Operator 在 AWS 公共托管区中创建 DNS 记录
您可以使用 Red Hat External DNS Operator 在 AWS 公共托管区上创建 DNS 记录。您可以使用相同的说明在 AWS GovCloud 的托管区上创建 DNS 记录。
流程
检查用户。用户必须有权访问
kube-system
命名空间。如果没有凭证,您可以从kube-system
命名空间中获取凭证,以使用云供应商客户端:$ oc whoami
输出示例
system:admin
从
kube-system
命名空间中存在的 aws-creds secret 中获取值。$ export AWS_ACCESS_KEY_ID=$(oc get secrets aws-creds -n kube-system --template={{.data.aws_access_key_id}} | base64 -d) $ export AWS_SECRET_ACCESS_KEY=$(oc get secrets aws-creds -n kube-system --template={{.data.aws_secret_access_key}} | base64 -d)
获取路由来检查域:
$ oc get routes --all-namespaces | grep console
输出示例
openshift-console console console-openshift-console.apps.testextdnsoperator.apacshift.support console https reencrypt/Redirect None openshift-console downloads downloads-openshift-console.apps.testextdnsoperator.apacshift.support downloads http edge/Redirect None
获取 dns zones 列表以查找与之前找到的路由域对应的 dns 区域:
$ aws route53 list-hosted-zones | grep testextdnsoperator.apacshift.support
输出示例
HOSTEDZONES terraform /hostedzone/Z02355203TNN1XXXX1J6O testextdnsoperator.apacshift.support. 5
为
路由
源创建ExternalDNS
资源:$ cat <<EOF | oc create -f - apiVersion: externaldns.olm.openshift.io/v1alpha1 kind: ExternalDNS metadata: name: sample-aws 1 spec: domains: - filterType: Include 2 matchType: Exact 3 name: testextdnsoperator.apacshift.support 4 provider: type: AWS 5 source: 6 type: OpenShiftRoute 7 openshiftRouteOptions: routerName: default 8 EOF
- 1
- 定义外部 DNS 资源的名称。
- 2
- 默认情况下,所有托管区都被选为潜在的目标。您可以包括需要的托管区。
- 3
- 目标区的域匹配必须是完全准确的(与正则表达式匹配不同)。
- 4
- 指定您要更新的区域的确切域。路由的主机名必须是指定域的子域。
- 5
- 定义
AWS Route53
DNS 供应商。 - 6
- 定义 DNS 记录源的选项。
- 7
- 定义 OpenShift
路由
资源,作为在之前指定的 DNS 供应商中创建的 DNS 记录来源。 - 8
- 如果源是
OpenShiftRoute
,您可以传递 OpenShift Ingress Controller 名称。外部 DNS Operator 在创建 CNAME 记录时,选择该路由器的规范主机名作为目标。
使用以下命令,检查为 OCP 路由创建的记录:
$ aws route53 list-resource-record-sets --hosted-zone-id Z02355203TNN1XXXX1J6O --query "ResourceRecordSets[?Type == 'CNAME']" | grep console