vSphere でのオフライン Harbor レジストリのアップグレード

このトピックでは、ダウンロードした OVA ファイルからプライベート Harbor イメージ レジストリをアップグレードし、オフラインの vSphere 環境の Tanzu Kubernetes Grid (TKG) をアップグレードする方法について説明します。この Harbor レジストリは、TKG が使用するコンポーネント イメージを保存および管理するために、TKG と並行して、ただし TKG とは別に実行されます。

重要

この仮想マシンベースの Harbor 展開は、インターネットが制限された環境またはエアギャップされた環境で TKG システム イメージをホストする場合にのみサポートされます。本番環境でホスト型アプリケーションの多数のイメージを管理できるスケーラブルで高可用性の Harbor を展開するには、『Tanzu CLI を使用した TKG 2.4 ワークロード クラスタの作成と管理』の「サービス レジストリ用の Harbor のインストール」に従って、Harbor パッケージを TKG クラスタに展開します。

オフラインの Harbor レジストリをバックアップおよびリストアするには、「vSphere でのオフライン Harbor レジストリのバックアップとリストア」を参照してください。

次の手順では、2 つの 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 アップグレード プロセスは、[テンプレートのカスタマイズ (Customize Template)] > [Harbor 構成 (Harbor Configurations)] にある [管理者パスワード (Administrator Password)] 設定と [データベース パスワード (Database Password)] 設定を、OVA 1 のパスワード設定で上書きします。

Harbor OVA 2.8.2 以降では、Docker daemon.jsonbip および default-address-pools の構成がサポートされています。この構成は、手動の手順または harbor-upgrade.sh スクリプトの実行によって移行されません。新しい OVA (OVA 2) を展開するときに再度構成する必要があります。

Harbor OVA の自動アップグレード

Harbor OVA 2.8.2 以降では、Harbor OVA のアップグレードを自動的に実行するスクリプト harbor-upgrade.sh が提供されます。

重要

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 Server の管理者パスワード(特殊文字が含まれている場合は一重引用符で囲む必要があります)
    /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)] > [ゲスト OS のシャットダウン (Shut Down Guest OS)] の順に選択します。

      Harbor のアップグレードのスクリーンショット

    2. OVA 1 のスナップショットを作成します。

      Harbor のアップグレードのスクリーンショット

      このバックアップからリストアするには、「vSphere でのオフライン Harbor レジストリのバックアップとリストア」を参照してください。

    3. OVA 1 のディスク ファイルの場所を取得します。インベントリにある OVA 1 を右クリックし、[設定の編集 (Edit Settings)] > [ディスク ファイル (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. [新規ハード ディスク (New Hard Disk)] のリストが、[設定の編集 (Edit Settings)] > [仮想設定 (Virtual Settings)] タブに追加されます。[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 1 ディスクを OVA 2 からアンマウントします。

    umount /ova1
    rm -rf /ova1
    
  14. OVA 1 データ ディスクを OVA 2 から削除します。OVA 2 について、vCenter Server の [仮想ハードウェア (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 フラグの追加が必要になる場合があります。

    • スキャナが有効でない場合

      cd /etc/goharbor/harbor && /etc/goharbor/harbor/prepare
      
    • スキャナが有効な場合

      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