若要將 TKG 服務 叢集與私人容器登錄整合,請參閱此主題。
私人容器登錄使用案例
容器登錄為 Kubernetes 部署提供重要功能,可做為儲存和共用容器映像的集中式存放庫。最常用的公用容器登錄是 Docker Hub。有許多私人容器登錄供應。VMware Harbor 是 主管 隨附的開放原始碼雲端原生私人容器登錄。
私人容器登錄整合
若要將私人登錄與 TKG 服務 叢集整合,可以使用一或多個自我簽署 CA 憑證設定叢集,以透過 HTTPS 提供私人登錄內容。若要執行此操作,請在叢集規格中哪入具有 trust
值的 additionalTrustedCAs
欄位。可以定義 TKGS 叢集應信任的任意數目的自我簽署 CA 憑證。此功能可讓您輕鬆定義憑證清單,並可更新需要輪替的這些憑證。
您可以在最初建立叢集時設定私人登錄憑證,也可以更新現有叢集並提供私人登錄憑證。若要編輯現有叢集並新增私人登錄憑證,請使用 kubectl edit
方法。請參閱為 Kubectl 設定文字編輯器。
請注意,trust.additionalTrustedCAs
欄位的實作在用於佈建 TKGS 叢集的受支援 API 之間略有不同。如需詳細資訊,請參閱 v1alpha3 API 信任欄位 和 v1beta1 API Trust 變數 資料表。
v1alpha3 API 範例
以下範例示範了如何藉由 CA 憑證將使用 v1alpha3 API 佈建的 TKG 服務 叢集與私人容器登錄整合。
使用
TanzuKubernetesCluster v1alpha3 API,
trust.additionalTrustedCAs
欄位可包括一或多個名稱-資料對,每一對都可以包含私人登錄的 TLS 憑證。
欄位 | 說明 |
---|---|
trust |
區段標記。不接受任何資料。 |
additionalTrustedCAs |
區段標記。包括憑證陣列 (每個憑證都具有 name 和 data 欄位)。 |
name |
使用者定義的 CA 憑證名稱。 |
data |
採用雙 base64 編碼之 PEM 格式的 CA 證書 (ca.crt ) 內容。
備註: v1alpha3 API 要求憑證內容採用單 base64 編碼。如果內容未採用單 base6 編碼,則無法處理產生的 PEM 檔案。
|
可以按照以下程序,使用 Harbor 登錄憑證將 Harbor 與 v1alpha3 API 叢集整合。
- 從 Harbor Web 介面的登錄憑證。
CA 憑證檔案以
ca.crt
形式下載。
畫面下載 Harbor - 對 CA 憑證的內容進行單 base64 編碼。
- Linux:
base64 -w 0 ca.crt
- Windows:https://www.base64encode.org/。
- Linux:
- 在叢集規格中包含
trust.additionalTrustedCAs
欄位,並填入name
和data
值。#tkc-with-trusted-private-reg-cert.yaml apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster metadata: name: tkc01 namespace: tkgs-cluster-ns spec: topology: controlPlane: replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 nodePools: - name: nodepool-01 replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.25.7---vmware.3-fips.1-tkg.1 settings: storage: defaultClass: tkgs-storage-policy network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: cluster.local trust: additionalTrustedCAs: - name: CompanyInternalCA-1 data: LS0tLS1C...LS0tCg== - name: CompanyInternalCA-2 data: MTLtMT1C...MT0tPg==
- 若要輪替憑證,請對叢集規格執行
kubectl edit
並更新trust.additionalTrustedCAs.data
值,然後啟動輪流更新。
v1beta1 API 範例
以下範例說明了如何藉由 CA 憑證將使用 v1beta1 API 佈建的 TKG 服務 叢集與私人容器登錄整合。
若要將私人容器登錄與使用
叢集 v1beta1 API 佈建的 TKGS 叢集整合,請使用
trust 變數並填入包含私人登錄憑證的 Kubernetes 密碼。
欄位 | 說明 |
---|---|
trust |
區段標記。不接受任何資料。 |
additionalTrustedCAs |
區段標記。包括憑證陣列 (每個憑證都具有 name)。 |
name |
Kubernetes 密碼中 data 對應欄位的使用者定義名稱 ,該密碼包含採用雙 base64 編碼之 PEM 格式的 CA 憑證。
備註: v1beta1 API 要求憑證內容採用雙 base64 編碼。如果內容未採用雙 base6 編碼,則無法處理產生的 PEM 檔案。
|
可以按照以下程序,使用 Harbor 登錄憑證將 Harbor 與 v1beta1 API 叢集整合。
- 從 Harbor Web 介面的登錄憑證。
CA 憑證檔案以
ca.crt
形式下載。
畫面下載 Harbor - 對 CA 憑證的內容進行雙 base64 編碼。
- Linux:
base64 -w 0 ca.crt | base64 -w 0
- Windows:https://www.base64encode.org/。
- Linux:
- 使用以下內容建立 Kubernetes 密碼定義 YAML 檔案。
#additional-ca-1.yaml apiVersion: v1 data: additional-ca-1: TFMwdExTMUNSGlSzZ3Jaa...VVNVWkpRMEMwdExTMHRDZz09 kind: Secret metadata: name: cluster01-user-trusted-ca-secret namespace: tkgs-cluster-ns type: Opaque
其中:- 密碼
data
對應的值是使用者定義的字串,為 CA 憑證的名稱 (在本範例中為additional-ca-1
),其值為雙 base64 編碼的憑證。 - 在
metadata
區段中,將密碼命名為CLUSTER-NAME-user-trusted-ca-secret
,其中 CLUSTER-NAME 是叢集的名稱。必須在叢集所在的同一 vSphere 命名空間 中建立此密碼。
- 密碼
- 以宣告方式建立 Kubernetes 密碼。
kubectl apply -f additional-ca-1.yaml
- 驗證密碼建立。
kubeclt get secret -n tkgs-cluster-ns cluster01-user-trusted-ca-secret NAME TYPE DATA AGE cluster01-user-trusted-ca-secret Opaque 12 2d22h
- 將
trust
變數包含在叢集規格中,用於參考密碼的資料對應的名稱 (在此範例中為additional-ca-1
)。#cluster-with-trusted-private-reg-cert.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: cluster01 namespace: tkgs-cluster-ns spec: clusterNetwork: services: cidrBlocks: ["198.52.100.0/12"] pods: cidrBlocks: ["192.101.2.0/16"] serviceDomain: "cluster.local" topology: class: tanzukubernetescluster version: v1.26.5+vmware.2-fips.1-tkg.1 controlPlane: replicas: 3 workers: machineDeployments: - class: node-pool name: node-pool-01 replicas: 3 variables: - name: vmClass value: guaranteed-medium - name: storageClass value: tkgs-storage-profile - name: defaultStorageClass value: tkgs-storage-profile - name: trust value: additionalTrustedCAs: - name: additional-ca-1
- 若要輪替憑證,請建立新密鑰,並使用相應的值編輯叢集規格。這樣做將觸發對叢集進行輪流更新。
備註: 系統不會監控對
CLUSTER-NAME-user-trusted-ca-secret
的變更。如果其data
對應值發生變更,則這些變更不會反映在叢集中。您需要建立新密碼以及name
到trust.additionalTrustCAs
的資料對應。