這篇blog要帶大家實做一次vCloud Director與PKS整合的操作流程,這也是這個討論主題系列的最後一篇,我們首次將vCloud Director模組帶入說明內。

<圖一>

tenant- 11

如果讀者不明暸CSE 1.X版的功能,那可以參考一下筆者之前所寫的blog,該篇blog雖然較久,但是原理是一樣的。CSE 2.0的新功能則是它現在可以和vClouod Director整合了。

我們依照這篇文章將Container Service Extension 2.0安裝完畢,並依照文章中的”Enterprise PKS on-boarding”章節將PKS整進vCloud Director後,我們就可根據實際需求,開通租戶的Enterprise PKS服務,實際開通流程為:

  1. 服務運營商開通PKS服務
  2. 租戶雲平台管理員建立PKS叢集
  3. 租戶開發團隊利用原生K8S管理工具開發應用服務

服務運營商開通PKS服務

服務運營商的vCloud Director管理者先登入CSE環境,然後用以下指令授權某一租戶的雲平台管理者可以在其組織內的某個虛擬數據中心裡創建PKS叢集。

# vcd cse ovdc enable ovdc2 -o tenant1 -k ent-pks –pks-plan “gold” –pks-cluster-domain “tenant1.com”

注意:k8s-provider種類“ent-pks”指的是創建PKS的叢集,而”native”指的是創建原來CSE可以支援的K8S叢集。

enable ent-pks -1

租戶雲平台管理員建立PKS叢集

整個流程如下圖紅線所經的步驟所示:

<圖二>

Tenant - 0.png

管理者先用下面指令登入vCloud Director的CSE環境中:

tenant-1

登入後可以試著輸入下列命令看看目前已經有幾個PKS的叢集存在,並且是運行在哪些組織的虛擬資料中心內:

tenant-2

接著他可指定接下來要新增的PKS叢集要建立在哪個OVDC(虛擬資料中心),範例中的只有一個 OVDC,當有多個OVDC的時後,我們可以指定現在要用哪一個。

# vcd vdc use “use-ent-ovdc”

tenant-3

接下來就新增一個名為louis-01的PKS Cluster:

# vcd use cluster create Louis-01

tenant-4

我們用以下指令觀察louis-01這個PKS叢集現在的狀況為何,直到狀態為”create succeeded”。

# vcd use cluster list

tenant-5

再來用下面指令查看這個叢集的K8S Master Node IP為何:

tenant- 13

上圖所示,louis-01這個K8S叢集的Master Node的IP是10.96.59.112,我們需要將這個資訊加入到DNS裡,讓louis-01.example.com可以被成功解析到10.96.59.112。

這樣其實就完成了K8S叢集的創建了,接下來租戶的雲平台管理者就可以把環境交給公司的開發團隊,讓他們可以從他們的電腦(需要可以連到10.96.59.112)連到這個環境,開始使用Kubernetes的Kubectl等的原生命令使用這個叢集的資源。

雲平台管理員可用以下命令產生kube的組態檔,如此就可傳送此組態檔給相關開發者,讓他們可以接續做相關的動作。

# vcd cse cluster config louis-01 > ~/.kube/config

可用下列命令查看是否顯示正常的環境變數資訊

$ kubectl config view

tenant- 14

 

租戶開發團隊利用原生K8S管理工具開發應用服務

利用以下指令試著建立容器服務:(以下已經和CSE/PKS較無直接關係了,屬於Kubernetes範疇,所以就不多作介紹)

demo yaml檔可參考這裡

tenant-8

服務建立後用以下方式查看服務對外連線的IP (Load Balance) 和port number。

我們從以下畫面知道yelb-ui的LoadBalancer對外IP為10.96.59.119,服務port為80。

tenant- 15

開啟服務網頁驗證成功或失敗:

tenant- 16.png

多租戶網路隔離 (Multi-Tenant Network Isolation)

CSE 2.0對於多租戶的安全做法是透過NSX-T的DFW(Distributed Firewall)的方式將每個不同租戶所建立出來的叢集隔離開來。(本篇圖二紅色線條經過的第二個粉紅色方塊說明部分)

由下圖我們發現在新增一個PKS叢集後,在NSX-T的分布式防火牆多了五筆DFW規則,這五筆規則名稱裡面都帶有叢集的UUID號碼,所以透過這種方式,達到安全隔離的目的。其他人都無法透過任何方式進到這些邏輯網段訪問Pod或Node。

DFW1

P.S:每當新增一個PKS叢集,NSX-T會自動新增幾個T1路由器,如下圖所示:

DFW2

另外當新增一個PKS叢集時,NSX-T會自動新增四條SNAT規則。

pod1.png

而當在某個叢集建立namespace後,也會自動建立一個SNAT規則:

pod2.png

以上就是vCD和CSE 2.0的整合簡單說明,希望對有興趣的讀者有一點點幫助,謝謝!

Notes:

  • CSE 2.0.0的Release Notes在這裡,請參閱相關內容,裡面有提到目前CSE和vCD的一些尚未完全整合完畢的功能,這些功能在下一個CSE版本發佈會陸續更新!
  • 建置過程感謝我同事Joe Mann的大力協助,他在RedHat服務超過7年,主要負責OpenShift解決方案,目前和我在同一部門服務!