2019年5月7日 星期二

用 ansible 架 kubernetes cluster

用 ansible 架 kubernetes 不是新鮮事,成熟的專案有 kubespray,而 openshift 也是用 ansible 安裝。

會接觸 ansible 並用來裝 kubernetes cluster ,在於我想要整合用 ansible 去建立 vm (base on kvm),vm 是使用預先建立好的 CentOS 7 的 image。

因為是 vm 環境, kubespray 就顯得太龐大了,因此決定自己來寫一個 kvm 版本的安裝流程,從 virsh 建立 vm 開始,到設定 vm 網路環境,然後建立 kubernetes cluster。

這過程花了大約兩個禮拜的時間完成,只能說 ansible 真是一個很容易陷入的工具,因為太容易上手並取得成就感了。兩個禮拜裡從基本的 playbook 到建立 roles ,不斷地重構原本的程式並加入新的功能,以及嘗試讓設定更有彈性。雖然對 ansible 掌握度還不夠,但已經足夠完成目標想做到的 (基本) 程度了。

透過 inventory 裡的設定,可以建立符合需求數量的 vm ,安裝 haproxy + kubernetes cluster + harbar ,以及 kuberntes 一些基本的環境 (metallb + nginx-ingress + helm + metrics-server),harbar 也整合到 kuberentes cluster 。

對我來說,ansible 最難掌握的就是變數的傳遞,花了最多時間去查資料及適應 ansible 的邏輯。 在不同 playbook 間要傳遞變數,我目前知道的方式是 add_host,透過把變數放到虛構的 host 裡,因為 hostvars 相當於一個 global 的變數。另外就是不同方式設定變數的 priority,沒有弄清楚前也吃了一點苦頭。

因為 vm image 是可以自訂的,所以可以先把一些必要的東西先埋進去,這讓 ansible 在處理上也簡單不少,這算是用 vm 來處理的一個優勢。對於已經有 kvm 環境的人來說,只要硬體資源足夠,預先件好需要的 image 後,用 ansible 搭一個上述的 kuberentes 環境,大約只需要 3~5 分鐘左右的時間。

ansible 之旅暫時先告一段落,先回頭看 kubernetes 相關的工具與管理,等到對於 kubernetes 維護管理層面更完整後,再來修改 ansible,目標是可以在 kvm 環境裡快速搭建一個完整且實用的 kuberentes 。


沒有留言: