您可以使用內嵌式 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 登錄 或外部私人登錄)。
  1. 連線至 主管叢集。請參閱以 vCenter Single Sign-On 使用者身分連線至 主管叢集
  2. 將內容切換到佈建目標 Tanzu Kubernetes 叢集的 vSphere 命名空間
    kubectl config use-context tkgs-cluster-ns
  3. 取得 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
  4. 使用文字編輯器開啟 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-secretprivate-registry-secret
  5. 建立可用於存取 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
  6. 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 登錄 中的映像並利用先前設定的映像提取密碼。
  1. 使用有關私人登錄的詳細資料建立範例網繭規格。
    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 KubernetesvSphere 命名空間
    • <image-name> 取代為您選擇的映像名稱。
    • <version> 取代為適當版本的映像,例如「最新版本」。
    • <registry-secret-name> 取代為您先前建立之登錄服務映像提取密碼的名稱。
  2. 根據您定義的網繭規格,在 Tanzu Kubernetes 叢集中建立工作負載。
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>

    應從提取自登錄的映像建立網繭。