gke 中没有通用域选项,所以我必须购买一个域并根据创建的托管 dns 区域 NS 更新 NS,当我通过 external-dns 更新 gke 中的入口时,它们将自动同步
我可以说我通过这些步骤解决了这个问题,
1- 创建一个域名属于自己的托管区域,并确保它有权从您创建的 dns 区域访问域。意思是授予访问您的 dns 区域存在的 google 项目
注意:当您创建集群时,请确保为托管 dns 区域提供读写权限
gcloud container clusters create “external-dns” \
—num-nodes 1 \
—scopes “https://www.googleapis.com/auth/ndev.clouddns.readwrite
创建一个包含托管 DNS 记录的 DNS 区域。
$ gcloud dns managed-zones create “xxx.test-dev” \
—dns-name “xxx.test.dev.” \
—description “Automatically managed zone by kubernetes.io/external-dns test.dev domain name”
2- 请将资源部署到名为external-dns的gke
https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/gke.md#deploy-externaldns
并检查日志
kubectl logs $(kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep dns)
或者
kubectl logs $(kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep dns)
如果你看到一切顺利
time="2021-01-20T11:37:46Z" level=info msg="Add records: xxx.test.dev. A [34.89.xx.xx] 300"
time="2021-01-20T11:37:46Z" level=info msg="Add records: xxx.test.dev. TXT [\"heritage=external-dns,external-dns/owner=my-identifier,external-dns/resource=ingress/default/ingress-test\"] 300"
time="2021-01-20T11:38:47Z" level=info msg="All records are already up to date"
注意在 A 记录旁边创建了 TXT 记录。 TXT 记录表示对应的 A 记录由 ExternalDNS 管理。这使得 ExternalDNS 可以安全地在通过其他方式管理其他记录的环境中运行。
让我们检查一下我们是否可以解析这个 DNS 名称。我们将首先询问分配给您区域的名称服务器。
$ dig +short @ns-cloud-e1.googledomains.com. xxx.test.dev.
104.155.xx.xx
并且可以检查域名的ip是否正确或有问题
host https://xxx.test.dev/
Host https://xxx.test.dev/ not found: 3(NXDOMAIN)
它可以被投诉一段时间,但你会得到正确的回应
host xxx.test.dev
xxx.test.dev has address 35.197.xx.xx