vSphere with Tanzu TKC 使用不同 Harbor 憑證做到權限隔離

以剛邁入微服務化階段的企業來說,在一組SDDC共用一台私倉的狀況是非常方便上手又好管理的。在 VMware Tanzu 平台,若裝在VCF上,有了NSX的幫助,不用個別安裝,點選就能啟用 Harbor,並且是以 namespace 來進行隔離的大權限控管私倉。

參考閱讀:
一鍵啟用 Embedded Harbor (可切換語系為中文)
整座雲通用憑證的放法 vSphere 7 embedded or external Harbor 憑證安裝法

不過一定有已經個別團隊在應用微服務的企業,因應這幾年都要集中化管理、整合資源(斷捨離~)
原本各個 team 都在維護自己的 K8s ,現在要搬上來一個大平台統一由SRE 管理,每個組織各自的 Harbor ,或者說本來就在政策上就要規範某個R&D team 只能連上單獨的私倉(權限控管)

這時候透過 Tanzu 容器雲平台就很能簡單實現啦~

/ 新建cluster /

在為該 team 創建 guest cluster 的時候加上 additionalTrustedCAs 就行囉!

部署的 yaml 檔案,看第20~23行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
name: tkc-1
namespace: demo
spec:
distribution:
version: v1.18.5
settings:
network:
cni:
name: antrea
pods:
cidrBlocks:
- 193.1.0.0/16
serviceDomain: shared.vsphere.local
services:
cidrBlocks:
- 195.128.0.0/12
trust:
additionalTrustedCAs:
- data: ${透過base64加密的憑證}
name: ${憑證名稱}
...

範例:
TanzuKubernetesCluster yaml

登入到那台TKC control plane node 後,進去 /etc/ssl/certs/ 就會發現有 rootca 檔案啦!

各個環境不同,如果在一台k8s node 有多租戶問題,記得丟到 /usr/share/ca-certificates/
或參考我筆記的各OS放憑證的方法及路徑

/ 既有cluster /

我之前是一個一個塞啦,沒錯,一台一台登進去copy paste … (´A`;)
感謝夥伴分享我 Shawn Ho 大大寫的 Script ,跑一個 for 迴圈執行,簡簡單單:

1
2
3
4
5
6
ips=$(kubectl get virtualmachines -n demo -o json | grep "vmIp"  | awk -F ':' '{print $2}' | sed 's/"//g')

for i in ${ips}; do
scp -i tkc-1-ssh-key harbor.crt vmware-system-user@${i}:/home/vmware-system-user/harbor.crt
ssh -i tkc-1-ssh-key vmware-system-user@${i} "sudo mkdir -p /etc/docker/certs.d/172.18.30.80; sudo mv ~/harbor.crt /etc/docker/certs.d/172.18.30.80/ca.crt"
done

上述我的 ${namespace} = demo, ${gcname} = tkc-1, ${harborip}=172.18.30.80,記得變數要改成自己的環境。也歡迎大家參閱Shawn 大的原文: vSphere7的Harbor資源 — 基礎使用篇


以上分享新建或是匯入已存在的cluster 串接憑證的方式,讓我們安安全全的pull push image到私倉,專注在開發上吧~