This site will be decommissioned on January 30th 2025. After that date content will be available at techdocs.broadcom.com.

在 vSphere 上升級離線 Harbor 登錄

本主題說明如何從下載的 OVA 檔案升級私人 Harbor 映像登錄,以在離線 vSphere 環境中升級 Tanzu Kubernetes Grid (TKG)。此 Harbor 登錄與 TKG 一起執行,並且與 TKG 分開執行,以儲存和管理 TKG 使用的元件映像。

重要

這種基於虛擬機器的 Harbor 部署僅支援在網際網路受限或氣隙環境中託管 TKG 系統映射。如要部署可擴展且高度可用的 Harbor 以在生產環境中管理託管應用的大量映像,請將 Harbor 軟體套件部署到 TKG 叢集,如《使用 Tanzu CLI 來建立和管理 TKG 2.4 工作負載叢集》中的安裝 Harbor 以用於服務登錄中所述

若要備份和還原離線 Harbor 登錄,請參閱備份和還原 vSphere 上的離線 Harbor 登錄

以下程序使用兩個 OVA,對在 vSphere 上執行的 Harbor 執行個體進行升級:

  • OVA 1 是您要升級的舊 Harbor OVA。例如,Harbor v2.7.1 OVA。
  • OVA 2 是執行新的升級版 Harbor 的 OVA,例如 Harbor v2.8.4 OVA。

OVA 1 的資料磁碟包含 Harbor 目前使用的所有資料,包括映像、使用者、專案和密碼。

將 Harbor 從舊 ova (OVA 1) 升級到新 ova (OVA 2) 時,可以透過執行指令碼自動升級或手動升級。

附註

OVA 升級程序會使用 OVA 1 中的密碼設定,覆寫自訂範本 (Customize Template) > Harbor 組態 (Harbor Configurations) 下的管理員密碼 (Administrator Password)資料庫密碼 (Database Password) 設定。

Harbor OVA 2.8.2 及更新版本支援為 Docker daemon.json 設定 bipdefault-address-pools。此組態不會透過手動步驟或執行 harbor-upgrade.sh 指令碼進行移轉。在部署新的 ova (OVA2) 時,必須重新設定它。

自動升級 Harbor OVA

Harbor OVA 2.8.2 及更高版本提供了一個指令碼 (harbor-upgrade.sh),可自動執行 Harbor OVA 升級。

重要

在執行 harbor-upgrade.sh 指令碼之前,必須從 OVA 1 虛擬機器中刪除所有現有快照。如果 OVA 1 虛擬機器上已有快照,則執行自動升級時無法擴充資料磁碟,而且指令碼會結束而不執行。如果不希望移除快照,則必須手動升級

  1. Tanzu Kubernetes Grid 下載頁面下載新的 Harbor OVA,並依照在 vSphere 上部署離線 Harbor 登錄中的程序將其部署至 vSphere。
  2. 啟動產生的 OVA 2 虛擬機器。
  3. 使用 SSH 登入到新的 OVA 2 虛擬機器。
  4. /etc/goharbor/harbor/harbor-upgrade.sh

    執行指令碼之前,必須收集執行指令碼所需的一些資訊:

    • 舊 OVA 虛擬機器的名稱
    • vCenter Server FQDN 或 IP 位址
    • vCenter Server 管理員使用者名稱
    • vCenter 管理員密碼 (如果包含特殊字元,可能需要使用單引號)
    /etc/goharbor/harbor/harbor-upgrade.sh --old-ova-vm-name OLD_OVA_VM_NAME
    

有關使用 harbor-upgrade.sh 指令碼的資訊,請執行 /etc/goharbor/harbor/harbor-upgrade.sh -h

手動升級 Harbor OVA

若要手動升級 Harbor,請將 OVA 1 資料磁碟作為現有磁碟新增至 OVA 2,然後複製其內容以移轉資料:

  1. Tanzu Kubernetes Grid 下載頁面下載新的 Harbor OVA,並依照在 vSphere 上部署離線 Harbor 登錄中的程序將其部署至 vSphere。

  2. 關閉 OVA 1 的電源。

    1. 在 vSphere 中,以滑鼠右鍵按一下詳細目錄中的 OVA 1,然後選取電源 (Power) > 關閉客體作業系統 (Shut Down Guest OS)

      Harbor 升級螢幕擷取畫面

    2. 建立 OVA 1 的快照:

      Harbor 升級螢幕擷取畫面

      若要從此備份還原,請參閱在 vSphere 上備份和還原離線 Harbor 登錄

    3. 擷取 OVA 1 磁碟檔案位置。以滑鼠右鍵按一下詳細目錄中的 OVA 1,選取編輯設定 (Edit Setting) > 磁碟檔案 (Disk File),然後記錄值。

      Harbor 升級螢幕擷取畫面

    在升級過程中,不要重新開啟 OVA 1 的電源。

  3. 使用 ssh 登入 OVA 2:

    ssh root@OVA2-IP
    
  4. 在 OVA 2 上停止 Harbor:

    1. 確認 Harbor 正在執行:

      docker ps
      
    2. 停止 Harbor 程序:

      systemctl stop harbor
      
    3. 確認 Harbor 已停止且未執行:

      docker ps
      
  5. 將 OVA 1 資料磁碟作為「現有磁碟」新增至 OVA 2:

    1. 在 vSphere 中,以滑鼠右鍵按一下 OVA 2 虛擬機器,然後選擇編輯設定 (Edit Settings)

      Harbor 升級螢幕擷取畫面

    2. 此時會出現新視窗。在右上方的新增裝置 (ADD NEW DEVICE) 下拉式功能表中,選取現有硬碟 (Existing Hard Disk)

      Harbor 升級螢幕擷取畫面

    3. 選取檔案 (Select File) 下,選取 OVA 1 資料存放區,如 vsanDatastore 及其之前記錄的磁碟檔案位置。檔案位置的結尾是 .vmdk。按一下確定 (OK)

      Harbor 升級螢幕擷取畫面

    4. 編輯設定 (Edit Settings) > 虛擬設定 (Virtual Settings) 索引標籤中新增了新硬碟 (New Hard Disk) 清單。按一下確定 (OK)

      Harbor 升級螢幕擷取畫面

    5. 最近的工作 (Recent Tasks) 列中等待新磁碟新增完成。

    6. 如要驗證 ova1 中的資料磁碟是否已新增到 ova2,請再次右鍵按兩下其清單,然後選擇編輯設定 (Edit Settings)

      Harbor 升級螢幕擷取畫面

  6. 將包含 OVA 1 資料的磁碟掛接到 OVA 2 檔案系統中:

    1. 在透過 ssh 登入 OVA 2 的命令提示字元中,執行 lsblk 以查看新增的磁碟新增至哪個區塊裝置。

      Harbor 升級螢幕擷取畫面

    2. 執行 mkdir -p /ova1 為 OVA 2 檔案系統中的新磁碟建立掛接點。

      Harbor 升級螢幕擷取畫面

    3. 執行 mount 命令將區塊裝置掛接到檔案系統頂層的掛接點,例如:

      mount DEVICE /ova1
      

      其中,DEVICE 是依 lsblk 列出的新裝置,例如 /dev/sdc1

      Harbor 升級螢幕擷取畫面

  7. harbor.yml 檔案備份至指出 OVA 2 Harbor 版本的檔案名稱,例如:

    如果新的 Harbor OVA (ova2) 版本為 2.8.4,請將 harborXYZ.origin.yml 更改為 harbor284.origin.yml

    mv /etc/goharbor/harbor/harbor.yml /etc/goharbor/harbor/harborXYZ.origin.yml
    
  8. harbor.yml 檔案從移轉的 OVA 1 資料磁碟複製到 OVA 2 Harbor 目錄,例如:

    cp -pr /ova1/harbor.yml /etc/goharbor/harbor/harbor.yml
    
  9. 如果您的 OVA 2 具有動態配置的 IP 位址或與 OVA 1 不同的靜態 IP 或 FQDN,您可能需要相應地更新其 /etc/goharbor/harbor/harbor.yml 檔案中的 hostname 設定。如果從 OVA 1 複製的 hostname 值對於 OVA 2 不正確,請將其變更為正確的位址或 OVA 2 的 FQDN。

    附註

    您無需將憑證從 OVA 1 複製到 OVA 2。視網路管理而定,OVA 2 上的憑證為新憑證或與 OVA 1 憑證相同,但可以任一方式運作。

  10. 從 OVA 2 移除以下目錄:

    rm -rf /storage/data/!(ca_download)
    rm -rf /storage/log/*
    
  11. 將資料目錄從 OVA 1 資料磁碟複製到 OVA 2:

    cp -pr /ova1/data/!(ca_download) /storage/data
    
  12. 將 Harbor 記錄目錄從 OVA 1 資料磁碟複製到 OVA 2:

    cp -pr /ova1/log/* /storage/log
    
  13. 從 OVA 2 卸載 OVA 1 磁碟:

    umount /ova1
    rm -rf /ova1
    
  14. 從 OVA 2 移除 OVA 1 資料磁碟。在 OVA 2 的 vCenter 虛擬硬體 (Virtual Hardware) > 編輯設定 (Edit Settings) 中,按一下列出新增的 OVA 1 硬碟的字行上的 X 按鈕。不要啟用從資料存放區刪除檔案 (Delete files from datastore) 核取方塊,然後按一下確定 (OK) 進行確認。

    Harbor 升級螢幕擷取畫面

    Harbor 升級螢幕擷取畫面

  15. 在 Harbor 容器中執行 migrate,以升級複製的 harbor.yml 檔案:

    cd /etc/goharbor/harbor
    docker run -it --rm -v /:/hostfs vmware.io/goharbor/prepare:TAG migrate -i /etc/goharbor/harbor/harbor.yml
    

    其中,TAG 是 OVA 2 的 Harbor 映像標記,例如:

    root@localhost [ /etc/goharbor/harbor ]# docker images | grep vmware.io/goharbor/prepare
    vmware.io/goharbor/prepare                v2.8.4_vmware.2   a82940c8052a   2 weeks ago   163MB
    
    root@localhost [ /etc/goharbor/harbor ]# docker run -it --rm -v /:/hostfs vmware.io/goharbor/prepare:v2.8.4_vmware.2 migrate -i /etc/goharbor/harbor/harbor.yml
    migrating to version 2.7.0
    migrating to version 2.8.0
    Written new values to /etc/goharbor/harbor/harbor.yml
    
  16. 將新的 OVA 2 版本 Harbor harbor.yml 複製到 /storage/harbor.yml

    cp -pr /etc/goharbor/harbor/harbor.yml /storage/harbor.yml
    
  17. 在 OVA 2 中執行 Harbor prepare 指令碼。根據您是否在 OVA 1 中啟用 Harbor 預設掃描器,您可能需要附加 --with-trivy 旗標:

    • 掃描器未啟用 (Scanner not enabled)

      cd /etc/goharbor/harbor && /etc/goharbor/harbor/prepare
      
    • 掃描器已啟用 (Scanner enabled)

      cd /etc/goharbor/harbor && /etc/goharbor/harbor/prepare --with-trivy
      
  18. 啟動 Harbor 服務:

    systemctl start harbor
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon