# TKC 使用不同 Harbor 憑證方式 | 私倉(harbor)的權限隔離 > [time= July, 2021] > https://sapphirelin.github.io/20210719-TKC-%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C-Harbor-%E6%86%91%E8%AD%89%E6%96%B9%E5%BC%8F-%E7%A7%81%E5%80%89-harbor-%E7%9A%84%E6%AC%8A%E9%99%90%E9%9A%94%E9%9B%A2/ ## TKC 使用不同 Harbor 憑證方式 以剛邁入微服務化階段的企業來說,在一組SDDC共用一台私倉的狀況是非常方便上手又好管理的。在 VMware Tanzu 平台,若裝在VCF上,有了NSX的幫助,不用個別安裝,點選就能啟用 Harbor,並且是以 namespace 來進行隔離的大權限控管私倉。 > 參考閱讀: > [一鍵啟用 Embedded Harbor (可切換語系為中文)](https://docs.vmware.com/tw/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-AE24CF79-3C74-4CCD-B7C7-757AD082D86A.html) > [vSphere 7 embedded or external Harbor 憑證安裝法](https://hackmd.io/@sapphirelin/S1D6uqW6_) 不過一定有已經個別團隊在應用微服務的企業,因應這幾年都要集中化管理、整合資源(斷捨離~) 原本各個 team 都在維護自己的 K8s ,現在要搬上來一個大平台統一由SRE 管理,每個組織各自的 Harbor ,或者說本來就在政策上就要規範某個R&D team 只能連上單獨的私倉(權限控管) 這時候透過 Tanzu 就很能簡單實現啦~ ### / 新建cluster / 在為該 team 創建 guest cluster 的時候加上 additionalTrustedCAs 就行囉! 部署的 yaml 檔案,看第20~23行: ```yaml= 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](https://i.imgur.com/gUMV6EE.png) 登入到那台TKC control plane node 後,進去 `/etc/ssl/certs/` 就會發現有 rootca 檔案啦! (我這沒截到哈哈哈哈,總之在這目錄底下就對了) ![](https://i.imgur.com/hcKzcvg.png) 各個環境不同,如果在一台k8s node 有多租戶問題,記得丟到 `/usr/share/ca-certificates/` ### / 既有cluster / 我之前是一個一個塞啦,沒錯,一台一台登進去copy paste ... (´A`;) 感謝夥伴分享我 [Shawn Ho 大大寫的 Script](https://gist.githubusercontent.com/shawnho1018/9fd2282b747cc1129f37ac74f79645a0/raw/b014d242051b54a99584e8fb83d42c39e12ee43c/guest-cluster-trust-harbor.sh) ,跑一個 for 迴圈執行,簡簡單單: ``` 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資源 — 基礎使用篇](https://medium.com/%E8%BC%95%E9%AC%86%E5%B0%8F%E5%93%81-pks%E8%88%87k8s%E7%9A%84%E9%BB%9E%E6%BB%B4/vsphere7%E7%9A%84harbor%E8%B3%87%E6%BA%90-%E5%9F%BA%E7%A4%8E%E4%BD%BF%E7%94%A8%E7%AF%87-ea4ce622c93f#6ea4) --- 以上分享新建或是匯入已存在的cluster 串接憑證的方式,讓我們安安全全的pull push image到私倉,專注在開發上吧~ Tschüss! (ノ>ω<)ノ ###### tags: `blog posted` `work hack` `VMware` `Tanzu` `harbor` `repository` `cert`