Warm tip: This article is reproduced from serverfault.com, please click

kubernetes-gke和自动创建的域,用于启用http路由

(kubernetes - gke and auto created domain for enabling http routing)

发布于 2020-11-29 00:53:46

我需要为GKE群集使用一个域来访问群集和应用程序的入口,类似于azure AKS http加载项,它提供了通用创建的域(而不是自定义域) https://docs.microsoft.com/en -us / azure / aks / http-application-routing Google云上也有任何解决方案吗?

我们的GKE创建/删除过程是IaC工具的一部分,并且我们正在为开发/测试/登台自动化集群和应用程序部署。通用的域创建和将托管的dns区域绑定到群集资源为我们提供了极大的灵活性。否则,我们必须创建自定义域和托管dns区域,这将是静态的,并给配置工具带来不必要的复杂性。

Questioner
Bora Özkan
Viewed
33
Bora Özkan 2021-01-20 23:59:53

gke中没有通用的域选项,因此我必须购买一个域并根据创建的托管dns区域NS更新NS,当我通过以下方式更新gke中的入口时,它们将自动同步 external-dns

我可以说我通过以下步骤解决了这个问题,

1-创建一个域名属于自己的受管区域,并确保它具有从你创建的dns区域访问域的权限。意思是让你的dns区域存在的google项目访问

注意:创建群集时,请确保为托管dns区域提供读写perm的范围

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-请将资源部署到名称为gke的gke external-dns

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