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