Tanzu 鏡像倉庫憑證安裝法
vSphere with Tanzu 使用 embedded or external Harbor 方式
已經開始玩 Tanzu 一陣子的朋朋們,應該一直都有一個糾結是,embedded Harbor (內嵌式私倉) 一鍵啟用、很方便,但是不能隨意新增專案,只能跟著 namespace 創建、彈性不高;external Harbor (外接式私倉) 就能隨心所欲,但是就要把憑證一個一個丟進去每一台 cluster node 才行。
整理一下原本的步驟:
- 登進去SC 拿 secret 來 SSH 進去 TKG nodes (最速登入 guest cluster node 方法)
- 拿 TKG cluster 的 kubeconfig 檔案
- vsphere login 進去 TKC
- 拿到每個 TKG nodes 的 ip
- 丟憑證到每一個 TKG nodes 然後還要複製到每一台的憑證路徑
- 每一台重開 docker ..^^
別擔心,在 vSphere with Tanzu 7 U2 之後,可以透過客製化 Supervisor Cluster (SC) 的 TkgServiceConfiguration
這隻服務,讓塞憑證達到讓自動化:
/ 準備憑證 /
兩種方法 openssl or Harbor 本身的 UI 。
第一種-用 openSSL :
先去連我們的私倉 Harbor
1
$ openssl s_client -connect <harbor url>:443
複製憑證區
下
echo '貼上上面複製的憑證' | base64
如:拿到囉!Harbor 私倉的憑證(下面反白的那段):
第二種- 到 harbor UI :
到 project 裡面下載 (如圖):
打開檔案一樣後用上面第3步的 base64 加密就行~
/ 開始 /
1. 登入 Supervisor Cluster (SC)
1 | kubectl-vsphere login --vsphere-username [email protected] --server=xxx.xxx.xxx.xxx |
2. 修改 TkgServiceConfiguration
1 | kubectl edit TkgServiceConfiguration |
找不到的話就表示你進錯 context 囉!要去SC~
3. 進編輯模式後,加入憑證
原本的模樣:
1 | apiVersion: run.tanzu.vmware.com/v1alpha1 |
新增憑證後的模樣(15~18行):
1 | apiVersion: run.tanzu.vmware.com/v1alpha1 |
4. 結束啦!驗證成功與否
等待他更新後,用 SSH去看既有的 tkc 那幾台/etc/ssl/certs/
目錄下面有沒有「tkg-harbor.pem
」。
或是登入你的 harbor ,直接部署你有的 image 看看有沒有成功部署:
。:.゚ヽ(*´∀`)ノ゚.:。
當然同樣的也可以用這種方式塞內嵌式Harbor。
以上就是讓整座 vSphere with Tanzu 都連到私倉的方式啦!
想看影片操作的可以參考 Kendrick 哥的示範: Set Up a Harbor Registry with Self-Signed Certificates for Tanzu Kubernetes Clusters
/ 常見 troubleshooting /
-查看 pod status
分享一個簡單的除錯方式,部署後用 kubectl get pod
來進行檢查:
1. 若 Status 為 ErrImagePull
併發症狀是” x509: certificate signed by unknown authority “,這就表示你憑證放錯或是沒有放進去,通常都是忘記 base64 加解密造成的,重新塞在 TkgServiceConfiguration
然後等待rolling update就好。
2. 若 Status 為 ImagePullBackOff
這基本上就是表示連得到,憑證也沒錯,但 authorization 出錯。
遇到這種 error 就是檢查 secret 有沒有塞錯,或是注意 docker login 要出現 login success ,以及像是用 docker Desktop UI 有沒打錯帳號密碼。
這部分感謝 Cormac Hogan 大大分享,溫馨無比 ( ´•̥̥̥ω•̥̥̥` )
-升級 vSphere 7U2 前作法 *非production作法
還沒升級至 vSphere 7U2 之前的環境,可以參考 Cormac 的文章塞憑證: Integrating embedded vSphere with Kubernetes Harbor Registry with TKG (guest) clusters
(*TKG guest cluster = vSphere with Tanzu’s TKC)
不過只有用本文的 TkgServiceConfiguration 自動化方式才能開 support ticket 除錯,所以不建議在生產環境使用!!
(上述為本文時間點狀態,以官網設置手冊為準)
官網文檔: Using Container Registry with Tanzu Kubernetes Clusters
接著可能會遇到的延伸問題:我司需要個別組織有其專屬的 Harbor ,例如只能給某個R&D team 連上單獨的私倉的話怎麼辦?可以參考我另外一篇文章:
Tanzu k8s cluster 個別使用多個 Harbor 方式
至於自己的組織到底適合用 embedded or external Harbor 呢? it depends. 有預算的話推薦直接接洽 專業服務團隊 ,從環境健康檢查到組織需求訪談、從 infra 到 ap 及文化和使用習慣,由架構師幫公司設計最符合企業的模式是最理想的。