使用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記錄

使用ExternalDNS自動化DNS配置

2、根據您的註冊商的需要委派DNS

3、創建服務主體以代表Kubernetes行事

使用ExternalDNS自動化DNS配置

4、創建你的雲提供商配置

使用ExternalDNS自動化DNS配置

5、使用雲提供商配置來創建一個Kubernetes秘鑰。

使用ExternalDNS自動化DNS配置

6、如果你使用的是Rancher配置的Azure IaaS Backed Clusters,從集群中刪除ingress controller。

使用ExternalDNS自動化DNS配置

注意:如果您是使用Rancher中的 AKS配置的集群,則不會提供ingress controller。

7、安裝nginx ingress controller併為ExternalDNS配置它。創建ingress-nginx部署和服務。

使用ExternalDNS自動化DNS配置

8、由於在基於Rancher的Kubernetes集群上默認啟用了RBAC,因此可以從下面的腳本創建名為externaldns.yaml的yaml文件,或者使用此repo中的externaldns-template.yaml文件。

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

>>驗證

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

1、以與部署ExternalDNS相同的方式在ingress中創建nginx服務

使用ExternalDNS自動化DNS配置

2、創建nginx-ingress controller

使用ExternalDNS自動化DNS配置

3、稍等幾分鐘

4、檢查一下是否已有record被創建出來

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

5、檢查日誌

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

使用ExternalDNS自動化DNS配置

您還可以在ExternalDNS的repo中瞭解更多信息:

https://github.com/kubernetes-incubator/external-dns

如希望對原文中的代碼有更深入的瞭解,請猛戳這裡:

https://github.com/JasonvanBrackel/kubernetes-external-dns-in-rancher#prerequisites


分享到:


相關文章: