您可以使用內嵌式 Harbor 登錄 作為部署到由 Tanzu Kubernetes Grid 服務 佈建的 Tanzu Kubernetes 映像的私人容器登錄。
vSphere with Tanzu 會嵌入可在 主管叢集 上啟用並用來將容器型工作負載部署到 Tanzu Kubernetes 叢集的 Harbor 登錄 執行個體。
在 主管叢集 上啟用內嵌式 Harbor 登錄 後,Tanzu Kubernetes Grid 服務 會將登錄執行個體的根 CA 憑證安裝到 Tanzu Kubernetes 叢集節點上。此憑證同時安裝在新叢集和現有叢集上 (透過重新調整迴圈的方式)。之後,可以透過在工作負載 YAML 中指定私人登錄以在叢集上執行映像。
工作流程
使用下列工作流程從
Tanzu Kubernetes 叢集節點安全地存取私人登錄,並提取容器映像。
步驟 | 動作 | 指示 |
---|---|---|
0 | 檢閱將內嵌式 Harbor 登錄與 Tanzu Kubernetes 叢集搭配使用的工作流程。 | 請參閱針對 vSphere with Tanzu 工作負載使用容器登錄。 |
1 | 在主管叢集中啟用內嵌式 Harbor 登錄。 | 請參閱在 Harbor 登錄上啟用內嵌式主管叢集。 |
2 | 使用登錄服務密碼為每個叢集設定 kubeconfig。 | 請參閱以下指示:為內嵌式 Harbor 登錄設定包含映像提取密碼的 Tanzu Kubernetes 叢集。 |
3 | 設定工作負載 YAML 以指定私人容器登錄。 | 請參閱以下指示:為內嵌式 Harbor 登錄設定包含映像提取密碼的 Tanzu Kubernetes 叢集。 |
4 | 若要將映像推送至內嵌式 Harbor 登錄,請設定 Docker 用戶端並安裝 vSphere Docker 認證協助程式。 | 請參閱使用內嵌式 Harbor 登錄 憑證設定 Docker 用戶端和將映像推送至內嵌式 Harbor 登錄。 |
使用內嵌式 Harbor 登錄 的映像提取密碼設定 Tanzu Kubernetes 叢集
使用映像提取密碼設定 kubeconfig,以將
Tanzu Kubernetes 叢集連線至私人容器登錄 (內嵌式
Harbor 登錄 或外部私人登錄)。
- 連線至 主管叢集。請參閱以 vCenter Single Sign-On 使用者身分連線至 主管叢集。
- 將內容切換到佈建目標 Tanzu Kubernetes 叢集的 vSphere 命名空間。
kubectl config use-context tkgs-cluster-ns
- 取得 vSphere 命名空間 的映像提取密碼並將其儲存在檔案中。
kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
例如:kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
- 使用文字編輯器開啟
image-pull-secret.yaml
。請至少進行必要的變更,並在完成後儲存檔案。apiVersion: v1 data: .dockerconfigjson: ewoJCQkJImF1dGhzJUV2s1ZVZwWVFuWmp... kind: Secret metadata: creationTimestamp: "2020-11-12T02:41:08Z" managedFields: - apiVersion: v1 ... name: harbor-registry-secret #OPTIONAL: Change if desired namespace: default #REQUIRED: Enter the Kuberentes namespace ownerReferences: - apiVersion: registryagent.vmware.com/v1alpha1 ... resourceVersion: "675868" selfLink: /api/v1/namespaces/tkgs-cluster-ns/secrets/tkgs-cluster-ns-default-image-pull-secret uid: 66606b41-7363-4b74-a3f2-4436f83f type: kubernetes.io/dockerconfigjson
- 必要:將
namespace
的值變更為與叢集中相應的 Kubernetes 命名空間相符,例如 default。備註: 若要設定映像提取密碼,請指定一個 Kubernetes 命名空間。如果 Tanzu Kubernetes 叢集已存在,則將內容切換為該叢集,並執行kubectl get namespaces
以列出可用的 Kubernetes 命名空間。如有必要,請先建立目標命名空間,然後再繼續。如果 Tanzu Kubernetes 叢集不存在,可以使用default
命名空間。 - 可選:將
name
的值變更為有意義的內容,例如 harbor-registry-secret 或 private-registry-secret。
- 必要:將
- 建立可用於存取 Tanzu Kubernetes 叢集的 kubeconfig 檔案。
kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
將 <vsphere-namespace> 取代為佈建目標 Tanzu Kubernetes 叢集之 vSphere 命名空間 的名稱。將 <cluster-name> 取代為 Tanzu Kubernetes 叢集的名稱。kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
- 在 Tanzu Kubernetes 叢集中建立登錄服務密碼。參考您在本機儲存和更新的映像提取密碼檔案。
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
例如:kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
您應該會看到登錄服務密碼已成功建立。secret/harbor-registry-secret created
設定 Tanzu Kubernetes 工作負載,以從私人容器登錄提取映像
若要針對 Tanzu Kubernetes 叢集工作負載從私人容器登錄提取映像,請使用私人登錄詳細資料設定工作負載 YAML。
此程序可用來從私人容器登錄或內嵌式
Harbor 登錄 提取映像。在此範例中,我們建立了網繭規格,此規格將使用儲存在內嵌式
Harbor 登錄 中的映像並利用先前設定的映像提取密碼。
- 使用有關私人登錄的詳細資料建立範例網繭規格。
apiVersion: v1 kind: Pod metadata: name: <workload-name> namespace: <kubernetes-namespace> spec: containers: - name: private-reg-container image: <Registry-IP-Address>/<vsphere-namespace>/<image-name>:<version> imagePullSecrets: - name: <registry-secret-name>
- 將
<workload-name>
取代為網繭工作負載的名稱。 - 將
<kubernetes-namespace>
取代為將要建立網繭之叢集中的 Kubernetes 命名空間。這必須是 Tanzu Kubernetes 叢集中儲存登錄服務映像提取密碼的相同 Kubernetes 命名空間 (例如預設命名空間)。 - 將
<Registry-IP-Address>
取代為在 主管叢集 上執行的內嵌式 Harbor 登錄 執行個體的 IP 位址。 - 將 <vsphere-namespace> 取代為佈建目標 Tanzu Kubernetes 的 vSphere 命名空間。
- 將
<image-name>
取代為您選擇的映像名稱。 - 將
<version>
取代為適當版本的映像,例如「最新版本」。 - 將
<registry-secret-name>
取代為您先前建立之登錄服務映像提取密碼的名稱。
- 將
- 根據您定義的網繭規格,在 Tanzu Kubernetes 叢集中建立工作負載。
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>
應從提取自登錄的映像建立網繭。