Kubernetes 社区的生态繁荣和该领域技术的快速茁壮发展,已经是众所周知。Kubernetes 领域有太多强大的、创新的技术产品,而最近引起我注意的项目是 ExternalDNS。这是在近期的 POC 期间客户主动咨询起来的,我承诺客户会尝试一下 ExternalDNS 子项目,且使用后发现它真的令人印象深刻。
ExternalDNS 子项目
ExternalDNS 子项目(孵化器流程已被弃用)是由 sig-network 赞助并由 Tim Hockin 倡导的,旨在自动配置云 DNS 提供商。这很重要,因为它进一步支持基础架构自动化,用户可以在应用程序部署的同时直接完成 DNS 配置。
传统企业部署模型,通常是由多个孤立业务单元,来处理部署过程的不同部分。但带有 ExternalDNS 的 Kubernetes 不同于传统企业部署模型,它可以自动完成此过程的这一部分工作。有时候有可能会出现这种不好的情况:一部分软件已准备就绪,但它却必须等待另一个业务部门手动配置 DNS。而有了 ExternalDNS,这一潜在问题就被解决了。
通过 ExternalDNS,组织团队可实现自动化和共同责任协作,而这将避免手动配置的错误,并使各方都能够更有效地将其产品推向市场。
AKS 上的 ExternalDNS 配置和部署
我曾作为软件开发人员在.NET 领域有过多年的工作经验。微软开发人员社区在我心中一直有一个特殊的位置,过去几年以来我参加过不少费城地区的 Azure 用户 meetup,分享如何通过 ACS(Azure Container Service)和 AKS(Azure Kubernetes Service)使用 Kubernetes on Azure。恰巧的是,向我咨询 ExternalDNS 的用户也正是在选择了 Azure 作为其 IaaS 产品。
下文是我准备的在 AKS 集群上启动 ExternalDNS 的分步说明和帮助程序代码。 即使您使用的是其他公有云上的托管的 Kubernetes,本教程依然适用 。
先决条件
登录 Azure AD,必要情况下请设置订阅。
先决几点注意事项
1、请注意,本文档中的外部模板文件使用了许多可选设置。
2、它也在 debug 级别日志中,因此您也可以自行进行 troubleshooting。
在 Azure AKS 或 Azure IaaS 上设置 ExternalDNS
1、创建 Azure DNS 记录
2、根据您的注册商的需要委派 DNS
3、创建服务主体以代表 Kubernetes 行事
4、创建你的云提供商配置
5、使用云提供商配置来创建一个 Kubernetes 秘钥。
6、如果你使用的是 Rancher 配置的 Azure IaaS Backed Clusters,从集群中删除 ingress controller。
注意:如果您是使用 Rancher 中的 AKS 配置的集群,则不会提供 ingress controller。
7、安装 nginx ingress controller 并为 ExternalDNS 配置它。创建 ingress-nginx 部署和服务。
8、由于在基于 Rancher 的 Kubernetes 集群上默认启用了 RBAC,因此可以从下面的脚本创建名为 externaldns.yaml 的 yaml 文件,或者使用此 repo 中的 externaldns-template.yaml 文件。
验证
1、以与部署 ExternalDNS 相同的方式在 ingress 中创建 nginx 服务
2、创建 nginx-ingress controller
3、稍等几分钟
4、检查一下是否已有 record 被创建出来
5、检查日志
您还可以在 ExternalDNS 的 repo 中了解更多信息:
https://github.com/kubernetes-incubator/external-dns
如希望对原文中的代码有更深入的了解,请猛戳这里:
https://github.com/JasonvanBrackel/kubernetes-external-dns-in-rancher#prerequisites
评论