---
# System prepended metadata

title: TKC 使用不同 Harbor 憑證方式 | 私倉(harbor)的權限隔離
tags: [work hack, VMware, blog posted, harbor, repository, Tanzu, cert]

---

# 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 ... (´Ａ｀;)
感謝夥伴分享我 [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` 
