使用ExternalDNS自動化DNS配置
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
使用ExternalDNS自動化DNS配置