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