瞭解如何將 Harbor 安裝和設定為 主管服務。然後,您可以將 Harbor 用作在 Tanzu Kubernetes Grid 叢集和 vSphere 網繭 上執行的工作負載的登錄。Harbor 需要將 Contour 作為入口控制器,因此請先安裝 Contour 主管服務,然後再安裝 Harbor。

將 Harbor 安裝為主管服務

在 vSphere Client 中透過工作負載管理選項將 Harbor 安裝為主管服務

必要條件

  • 確認已升級到 vCenter Server 8.0a 或更高版本。vCenter Server 8.0a 及更高版本支援 Contour 和 Harbor 主管服務
  • 確認您在新增服務的 vCenter Server 系統上具有管理主管服務權限。
  • 在要安裝 Harbor 的同一主管上將 Contour 安裝為主管服務。請參閱在 vSphere IaaS control plane 中將 Contour 安裝為主管服務
  • 指定用於存取 Harbor 管理員使用者介面的 FQDN。

程序

  1. 前往主管服務存放庫的〈Harbor 版本〉一節,然後下載以下檔案:
    • Harbor 服務定義,連結名為 Harbor vX.X.X。例如 Harbor 2.5.3
    • Harbor 組態檔,連結名為 values for vX.X.X。例如 values 2.5.3
    產生的檔案如下所示:
    • harbor.yml
    • harbor-data-values.yml
  2. vSphere Client 中前往工作負載管理,然後選取服務
  3. 透過按一下新增服務並上傳 harbor.yml 服務定義來部署 Harbor Operator。
    此視窗顯示了 Harbor Operator 的部署
    部署 Harbor Operator 後,它會顯示在 服務索引標籤中: 此視窗顯示了 Harbor Operator 和 Contour Operator 在部署後的概覽
  4. 現已部署 Harbor Operator,您可以在執行 Contour 的同一主管上安裝主管服務
    1. 開啟 harbor-data-values.yml 檔案,並根據需要編輯內容。
      內容 說明
      hostname: myharbor.com
      
        https: 443
      FQDN 變更為指定用於存取 Harbor 管理員使用者介面的 FQDN。
      tlsCertificate:
        tlsSecretLabels: {"managed-by": "vmware-vRegistry"}
      備註: 不變更
      若要使 TKG 整合正常運作,必須指定此值。
      harborAdminPassword: Harbor12345
      可以選擇性地變更 安裝期間使用的 Harbor 密碼。安裝服務後,您可以透過 Harbor 管理員使用者介面變更此內容。
      secretKey: 0123456789ABCDEF
      16 個字元的字串 用於加密的秘密金鑰。必須是包含 16 個字元的字串。
      database:
        password: change-it
      安全密碼 用於 Postgres 資料庫的初始密碼。
      core:
        replicas: 
        secret: change-it
        xsrfKey: 0123456789ABCDEF0123456789ABCDEF
      jobservice:
        replicas: 1
        secret: change-it
      registry:
        replicas: 
        secret: change-it
      對於秘密金鑰為字串,包含 32 個字元的 XSRF 金鑰字串 變更以設定您自己的秘密金鑰。
      persistence:
        persistentVolumeClaim:
          registry:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 10Gi
          jobservice:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          database:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          redis:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 1Gi
          trivy:
            storageClass: "insert-storage-class-name-here"
            subPath: ""
            accessMode: ReadWriteOnce
            size: 5Gi
       
      儲存區類別名稱

      將用作在 Harbor 登錄、工作服務和資料庫等中佈建 PVC 的儲存區類別的儲存區原則。

      將每個內容設定為環境中可用的現有儲存區原則。將儲存區原則名稱變更為有效的儲存區類別名稱,方法是將所有大寫字母取代為小寫字母,並將所有「_」符號和空格取代為破折號「-」。例如,將 Harbor Storage Policy 修改為 harbor-storage-policy

      network:
        ipFamilies: ["IPv4"]
      備註: 不變更
      不支援 IPv6。
    2. 返回到工作負載管理 > 服務,然後在 Harbor 服務卡中選取動作 > 在主管上安裝
    3. 選取執行 Contour 的主管,然後在 YAML 服務組態中複製並貼上修改後的 harbor-data-values.yml 檔案的內容。
    4. 按一下確定
      安裝開始後,可以透過按一下 Harbor 服務卡上的 主管欄位來追蹤安裝進度。可能需要幾秒鐘的時間,直到 主管旁邊的數字遞增。服務將處於 [正在設定] 狀態,直到達到所需狀態為止。達到所需狀態後,服務的狀態將變更為 [正在執行]。

結果

您可以從 主機和叢集視圖中檢視為 Harbor 建立的 vSphere 命名空間vSphere 網繭此視圖顯示了 Harbor 命名空間及其包含的所有 vSphere Pod

將 Harbor FQDN 對應至網繭入口 IP 位址

成功安裝 Harbor 後,將 Harbor FQDN 與 Envoy 入口 IP 位址的對應記錄新增到設定了主管的外部 DNS 伺服器中。

Tanzu Kubernetes Grid 叢集、vSphere 網繭主管必須能夠解析 Harbor FQDN,才能從登錄中提取映像。

若要尋找 Envoy 入口 IP 位址,請導覽到 Contour 命名空間,選取 網路,然後選取 服務

此螢幕擷取畫面顯示 Envoy IP 位址。

與 Harbor 主管服務 建立信任

安裝 Harbor 後,必須在 主管 之間設定信任,以將 Harbor 用作 vSphere 網繭 的登錄。與 Harbor 位於同一 主管 上的 Tanzu Kubernetes Grid 叢集已自動與 Harbor 建立信任。若要將 Harbor 用作在不同 主管 上執行的 Tanzu Kubernetes Grid 叢集的登錄,必須在 Harbor 與這些 Tanzu Kubernetes Grid 叢集之間設定信任。

在 Harbor 與 主管 之間建立信任

在 Harbor 與 主管 之間建立信任:
  1. 從 Harbor 使用者介面或使用 主管 控制平面上的 TLS 密碼擷取 Harbor CA。您可以在 Harbor 管理員使用者介面的管理 > 組態 > 登錄根憑證 > 下載中取得 Harbor ca.cert
  2. 將 Harbor CA 新增到 kube-system 命名空間中的 image-fetcher-ca-bundle ConfigMap。您必須使用 vCenter Single Sign-on 管理帳戶登入,並且有權編輯 image-fetcher-ca-bundle
    1. 按照此處所述設定 KUBE_EDITOR 環境變數:
    2. 使用以下命令編輯 ConfigMap:
      kubectl edit configmap image-fetcher-ca-bundle -n kube-system
    3. 將 Harbor ca.cert 檔案的內容附加到現有 主管 憑證下的 ConfigMap。務必不要變更 主管 憑證。
      apiVersion: v1
      data:
        ca-bundle: |-
          -----BEGIN CERTIFICATE-----
          MIIC/jCCAeagAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
          ...
          qB72tWi8M5++h2RGcVash0P1CUZOHkpHxGdUGYv1Z97Wl89dT2OTn3iXqn8d1JAK
          aF8=
          -----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----
          MIIDKDCCAhCgAwIBAgIQBbUsj7mqXXC5XRhqqU3GiDANBgkqhkiG9w0BAQsFADAU
          ...
          5q7y87vOLTr7+0MG4O01zK0dJYx2jVhZlsuduMYpfqRLLewVl0eGu/6vr2M=
          -----END CERTIFICATE-----    
      kind: ConfigMap
      metadata:
        creationTimestamp: "2023-03-15T14:28:34Z"
        name: image-fetcher-ca-bundle
        namespace: kube-system
        resourceVersion: "713"
        uid: 6b7611a0-25fa-40f7-b4f5-e2a13bd0afe3
    4. 儲存對檔案所做的編輯。因此,kubectl 報告:
      已編輯 configmap/image-fetcher-ca-bundle

在 Harbor 與在非 Harbor 所在的 主管 上執行的 Tanzu Kubernetes Grid 叢集之間建立信任

在未安裝 Harbor 的 主管 上執行的 Tanzu Kubernetes Grid 叢集必須與 Harbor 建立網路連線。這些 Tanzu Kubernetes Grid 叢集必須能夠解析 Harbor FQDN。

若要在 Harbor 與 Tanzu Kubernetes Grid 叢集之間建立信任,請從 Harbor 使用者介面中擷取 Harbor CA,或者在 主管 控制平面上使用 TLS 密碼,然後按照〈將 TKG 2 叢集與私人容器登錄整合〉中列出的步驟進行操作。