このトピックでは、ダウンロードした OVA ファイルからプライベート Harbor イメージ レジストリをアップグレードし、オフラインの vSphere 環境の Tanzu Kubernetes Grid (TKG) をアップグレードする方法について説明します。この Harbor レジストリは、TKG が使用するコンポーネント イメージを保存および管理するために、TKG と並行して、ただし TKG とは別に実行されます。
この仮想マシンベースの Harbor 展開は、インターネットが制限された環境またはエアギャップされた環境で TKG システム イメージをホストする場合にのみサポートされます。本番環境でホスト型アプリケーションの多数のイメージを管理できるスケーラブルで高可用性の Harbor を展開するには、「Tanzu CLI を使用した TKG 2.1 ワークロード クラスタの作成と管理」の「サービス レジストリ用の Harbor のインストール」に従って、Harbor パッケージを TKG クラスタに展開します。
オフラインの Harbor レジストリをバックアップおよびリストアするには、「vSphere でのオフライン Harbor レジストリのバックアップとリストア」を参照してください。
次の手順では、2 つの OVA を使用して、vSphere で実行されている Harbor インスタンスをアップグレードします。
OVA 1 のデータ ディスクには、イメージ、ユーザー、プロジェクト、パスワードなど、Harbor で現在使用されているすべてのデータが含まれています。アップグレードを実行するには、OVA 1 データ ディスクを既存のディスクとして OVA 2 に追加し、その内容をコピーしてデータを移行します。
注OVA アップグレード プロセスは、[テンプレートのカスタマイズ (Customize Template)] > [Harbor 構成 (Harbor Configurations)] にある [管理者パスワード (Administrator Password)] 設定と [データベース パスワード (Database Password)] 設定を、OVA 1 のパスワード設定で上書きします。
Tanzu Kubernetes Grid ダウンロード ページから新しい Harbor OVA をダウンロードし、「vSphere でのオフライン Harbor レジストリの展開」の手順に従って vSphere に展開します。
OVA 1 をパワーオフします。
vSphere で、インベントリにある OVA 1 を右クリックし、[電源 (Power)] > [ゲスト OS のシャットダウン (Shut Down Guest OS)] の順に選択します。
OVA 1 (Harbor v2.6.3) のスナップショットを作成します。
このバックアップからリストアするには、「vSphere でのオフライン Harbor レジストリのバックアップとリストア」を参照してください。
OVA 1 のディスク ファイルの場所を取得します。インベントリにある OVA 1 を右クリックし、[設定の編集 (Edit Settings)] > [ディスク ファイル (Disk File)] の順に選択して、値を記録します。
アップグレード プロセスの実行中は、OVA 1 をパワーオンしないでください。
ssh
を使用して、OVA 2 にログインします。
ssh root@OVA2-IP
OVA 2 で Harbor を停止します。
Harbor が実行されていることを確認します。
docker ps
Harbor プロセスを停止します。
systemctl stop harbor
Harbor が停止し、実行されていないことを確認します。
docker ps
OVA 1 のデータ ディスクを「既存のディスク」として OVA 2 に追加します。
vSphere で、OVA 2 仮想マシンを右クリックし、[設定の編集 (Edit Settings)] を選択します。
新しいウィンドウが開きます。右上の [新規デバイスを追加 (ADD NEW DEVICE)] ドロップダウンで、[既存のハード ディスク (Existing Hard Disk)] を選択します。
[ファイルの選択 (Select File)] で、OVA 1 データストア(vsanDatastore など)と、前に記録したディスク ファイルの場所を選択します。ファイルの場所は、末尾が .vmdk
です。[OK] をクリックします。
[新規ハード ディスク (New Hard Disk)] のリストが、[設定の編集 (Edit Settings)] > [仮想設定 (Virtual Settings)] タブに追加されます。[OK] をクリックします。
次の [最近のタスク (Recent Tasks)] バーで、新しいディスクの追加が完了するまで待機します。
仮想ハード ディスクの設定をさらに編集(名前の変更など)するには、リストを再度右クリックします。
OVA 1 データを含むディスクを OVA 2 ファイル システムにマウントします。
ssh
経由で OVA 2 にログインしたコマンド プロンプトから、lsblk
を実行して、新たに追加されたディスクの追加先のブロック デバイスを確認します。
mkdir -p /ova263
を実行して、OVA 2 ファイル システムに新しいディスクのマウント ポイントを作成します。
mount
コマンドを実行して、ファイル システムの最上位レベルのマウント ポイントにブロック デバイスをマウントします。次に例を示します。
mount DEVICE /ova263
ここで DEVICE
は、lsblk
などの、/dev/sdc1
によってリストされる新しいデバイスです。
harbor.yml
ファイルを、OVA 2 Harbor バージョンを示すファイル名にバックアップします。次に例を示します。
mv /etc/goharbor/harbor/harbor.yml /etc/goharbor/harbor/harbor271.origin.yml
harbor.yml
ファイルを、移行された OVA 1 データ ディスクから OVA 2 Harbor ディレクトリにコピーします。次に例を示します。
cp -pr /ova263/harbor.yml /etc/goharbor/harbor/harbor.yml
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 の証明書と同一になりますが、どちらも機能します。
OVA 2 から次のディレクトリを削除します。
rm -rf /storage/data/!(ca_download)
rm -rf /storage/log/*
データ ディレクトリを OVA 1 データ ディスクから OVA 2 にコピーします。
cp -pr /ova263/data/!(ca_download) /storage/data
Harbor ログ ディレクトリを OVA 1 データ ディスクから OVA 2 にコピーします。
cp -pr /ova263/log/* /storage/log
OVA 1 ディスクを OVA 2 からアンマウントします。
umount /ova263
OVA 1 データ ディスクを OVA 2 から削除します。OVA 2 について、vCenter Server の [仮想ハードウェア (Virtual Hardware)] > [設定の編集 (Edit Settings)] で、追加された OVA 1 ハード ディスクをリストしている行の [X] ボタンをクリックします。[データストアからファイルを削除します (Delete files from datastore)] チェックボックスは有効にせず、[OK] をクリックして確認します。
Harbor コンテナの migrate
を実行することで、コピーした harbor.yml
ファイルをアップグレードします。
cd /etc/goharbor/harbor && docker run -it --rm -v /:/hostfs vmware.io/goharbor/prepare:vOVA-2-VERSION_vmware.1 migrate -i /etc/goharbor/harbor/harbor.yml
ここで、OVA-2-VERSION
は OVA 2 の Harbor バージョンです(2.7.1
など)。
新しい OVA 2 バージョンの Harbor harbor.yml
を /storage/harbor.yml
にコピーします。
cp -pr /etc/goharbor/harbor/harbor.yml /storage/harbor.yml
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
Harbor サービスを開始します。
systemctl start harbor