vSphere でのオフライン Harbor レジストリの展開

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

重要

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

  • Notary と Chartmuseum は Harbor v2.6 以降で廃止され、Harbor v2.6.0 リリース ノートに記載されているように、今後のリリースで削除される予定です。コンテナの署名と検証のために Sigstore Cosign に切り替えてください。

前提条件

Harbor の展開

OVA ファイルから Harbor を展開するには、次の手順を実行します。

  1. vCenter Server で、vSphere クラスタを右クリックし、[OVF テンプレートのデプロイ (Deploy OVF Template)]… を選択します。

    Harbor インストールのスクリーンショット

  2. [OVF テンプレートのデプロイ (Deploy OVF Template)] ウィンドウが表示されます。[ローカル ファイル (Local File)] を選択し、ダウンロードした Harbor OVA ファイルの場所を参照します。

  3. 右下の [次へ (NEXT)] をクリックします。一連の構成ペインが表示されます。

  4. [ソースの検証 (Source Verification)][はい (YES)] をクリックします。

    Harbor インストールのスクリーンショット

  5. [仮想マシン名 (Virtual machine name)]:Harbor インスタンスを実行する仮想マシンに選択する名前を入力します。[次へ (NEXT)] をクリックします。

    Harbor インストールのスクリーンショット

  6. [コンピューティング リソースの選択 (Select a compute resource)]:デフォルトの選択のままにして、[次へ (NEXT)] をクリックします。

    Harbor インストールのスクリーンショット

    vSphere が OVF テンプレートをダウンロードしてレンダリングするため、この手順には数分かかる場合があります。

  7. [詳細の確認 (Review details)][次へ (NEXT)] をクリックします。

    Harbor インストールのスクリーンショット

  8. [使用許諾契約書 (License agreements)]:ライセンスに同意して [次へ (NEXT)] をクリックしてください。

    Harbor インストールのスクリーンショット

  9. [ストレージの選択 (Select storage)][vsanDatastore] を選択し、[次へ (NEXT)] をクリックします。

    Harbor インストールのスクリーンショット

  10. [ネットワークの選択 (Select networks)]:デフォルトの [仮想マシン ネットワーク (VM Network)] を選択し、[次へ (NEXT)] をクリックします。

    Harbor インストールのスクリーンショット

  11. [テンプレートのカスタマイズ (Customize template)] > [仮想マシンの認証情報 (VM Credentials)]

    Harbor インストールのスクリーンショット

    1. [root パスワード (Root Password)](必須):仮想マシンでの root ユーザー アカウント用のパスワード。8 ~ 128 文字にする必要があります。

    2. [root 経由の SSH を許可 (Allow SSH via Root)]root ユーザーとしての仮想マシンへの ssh アクセスを許可するには、デフォルトの [有効 (Enabled)] のままにします。

  12. [テンプレートのカスタマイズ (Customize template)] > [Harbor 構成 (Harbor Configurations)]

    Harbor インストールのスクリーンショット

    1. [ホスト名 (Hostname)](オプション):指定されている場合は、FQDN としての Harbor ホスト名(yourdomain.comなど)。IP アドレスや localhost にすることはできません。

      [ホスト名 (Hostname)] を指定した場合、SAN (Subject Alt Names) プロパティには DNS 情報のみが含まれます。IP 情報は指定されません。

      [ホスト名 (Hostname)] を指定しない場合、SAN プロパティには IP 情報のみが含まれます。DNS 情報は指定されません。

    2. [管理者パスワード (Administrator Password)](必須):Harbor admin ユーザーのパスワード。管理者が Harbor ユーザー インターフェイスにアクセスし、クライアント コンテナがイメージをプルおよびプッシュするために使用します。長さは 8 ~ 128 文字にする必要があります。

    3. [Harbor データベースのパスワード (Harbor Database Password)]:Harbor 内部データベースのパスワード。指定する場合は、長さは 8 ~ 128 文字にする必要があります。

    4. [Harbor デフォルト スキャナを有効化 (Enable Harbor Default Scanner)]:有効にすると、Trivy スキャナをインストールして有効化し、Harbor にアップロードされたイメージをスキャンします。

    5. [Harbor に自己署名証明書を使用 (Use Self-signed Certificate For Harbor)]

      • 有効にして自己署名証明書を使用し、[CA 証明書 (CA Certificate)][サーバ証明書 (Server Certificate)]、および [サーバ キー (Server Key)] を空白のままにします。

      • それ以外の場合は、[Harbor に自己署名証明書を使用 (Use Self-signed Certificate For Harbor)] を無効化し、[CA 証明書 (CA Certificate)][サーバ証明書 (Server Certificate)]、および [サーバ キー (Server Key)] の複数行のファイルの内容を貼り付けます。フォームに貼り付けると、複数行の値が区切り文字としてスペース文字を含む 1 行の文字列に変わります。

  13. [テンプレートのカスタマイズ (Customize template)] > [ネットワーク構成 (Networking Configurations)]

    Harbor インストールのスクリーンショット

    1. [IP アドレス (IP Address)][ネットマスク (Netmask)]、および [ゲートウェイ (Gateway)]eth0 用の固定 IP アドレス、ネットマスク、ゲートウェイ(存在する場合)。

    2. [DNS][DNS ドメイン (DNS Domain)]:Harbor 仮想マシンの DNS サーバとドメイン。

  14. (オプション)[テンプレートのカスタマイズ (Customize template)] > [Docker 構成 (Docker Configurations)]

    Harbor インストールのスクリーンショット

    この構成はオプションで、Harbor v2.8.x 以降を使用する OVA でのみ使用できます。

    1. Docker デーモン BIP 値:Docker デーモンを構成するための CIDR 形式の値。例:198.18.251.1/24

    2. アドレス プール 1 ベース (Address Pool 1 Base)アドレス プール 1 サイズ (Address Pool 1 Size):アドレス プール ベースとアドレス プール サイズは、ペアで構成する必要があります(存在する場合)。アドレス プール ベースとアドレス プール サイズのペアは最大 3 つまで許可されます。また、アドレス プール ベースは CIDR 形式にする必要があります(例:198.18.252.0/22)。アドレス プール サイズは 1 ~ 32 の整数にする必要があります。

  15. [設定内容の確認 (Ready to complete)]:構成を確認して [終了 (FINISH)] をクリックします。

    Harbor インストールのスクリーンショット

展開の監視とデバッグ

Docker の展開(オプション)

Harbor v2.8.x 以降を使用する OVA の場合は、上記の [Docker 構成 (Docker Configurations)] タブで構成されているように、オプションで Docker デーモン構成を OVA で実行するように設定できます。

[Docker 構成 (Docker Configurations)] に無効な引数を入力すると、firstboot systemd サービスと Docker の両方が失敗します。

Docker のインストールを確認するには、Harbor 仮想マシンに対して ssh を実行し、systemctl status firstboot および systemctl status docker を実行します。firstboot サービスのステータスが Active: failed と表示されている場合、展開は失敗していますが、Active: inactive (dead) および firstboot.service: Succeeded が表示され、docker サービスが Active: active (running) と表示されている場合は、展開は成功しています。

ログで詳細を確認するには、journalctl -u firstboot および journalctl -u docker を実行します。

Harbor の展開

Harbor OVA を初めて展開する場合、Harbor が Docker イメージをロードするのに数分かかります。

プロセスを監視して進行していることを確認するには、ssh で仮想マシンにログインして、次のコマンドを実行します。

watch docker ps

Harbor が 5 分ほど経過しても実行されていない場合は、デバッグのために仮想マシンのログ ファイルを取得します。

  1. cd /etc/goharbor/harbor && ./harbor-support.sh --include-private

  2. ログ ファイルを検索して解凍します。/storage/log/harbor_appliance_logs_2022-11-30T09-39-12Z.tar.gz のような名前です。

トラブルシューティング

エラー:マニフェストまたは証明書ファイルを取得できません

  1. 次のように「Error: Unable to retrieve manifest or certificate file」と表示される場合は、Harbor OVA の展開を再試行してください。

    Harbor インストールのスクリーンショット

Harbor プロキシ キャッシュのサポートがない

インターネットが制限された環境で、Tanzu Kubernetes Grid v2.4 を実行するために Harbor のプロキシ キャッシュ機能を使用することはできません。Harbor プロキシ キャッシュを使用して、以前のバージョンの Tanzu Kubernetes Grid のイメージや、アプリケーション イメージなどの Tanzu 以外のイメージをプロキシすることはできます。

root パスワードのリセット

root パスワードを忘れた場合は、「Resetting a Lost Root Password」の手順に従って回復します。

データ ディスクの展開

OVA から展開された Harbor インスタンスには、次の 2 つのディスクがあります。

  • データ ディスク:Harbor アプリケーション データと証明書ファイルが含まれており、/storage としてマウントされています。
  • システム ディスク:仮想マシンのシステム データと Harbor ブートストラップ イメージが含まれており、ブートストラップ イメージを実行します。

要求に対応するために Harbor のデータ ディスクのサイズを増やす必要がある場合は、設定の変更中に Harbor 仮想マシンを一時的にパワーオフする必要があります。仮想マシンに動的 IP アドレスがある場合、仮想マシンの再起動では、次の手順を追加で実行する必要があります。

Harbor インスタンスのデータ ディスクを拡張するには、次の手順を実行します。

  1. vSphere の [ホストおよびクラスタ (Hosts and Clusters)] ビューで、Harbor OVA 仮想マシンを右クリックし、[電源 (Power)] > [パワーオフ (Power Off)] を選択します。

    Harbor インストールのスクリーンショット

  2. Harbor OVA 仮想マシンをもう一度右クリックし、[設定の編集 (Edit Settings)] を選択します。

    Harbor インストールのスクリーンショット

  3. [設定の編集 (Edit Settings)] ウィンドウが表示されます。[仮想ハードウェア (Virtual Hardware)] で、[ハード ディスク 2 (Hard disk 2)] の設定を希望する容量に増やします。[OK] をクリックします。

    Harbor インストールのスクリーンショット

  4. Harbor OVA 仮想マシンをもう一度右クリックし、[電源 (Power)] > [パワーオン (Power On)] を選択して仮想マシンを再起動します。

    Harbor インストールのスクリーンショット

  5. Harbor 仮想マシンを再起動したことにより、仮想マシンのホスト アドレス構成によっては、追加の手順の実行が必要になる場合があります。

  6. 固定 IP アドレス:追加の手順はありません。

  7. 動的 IP アドレス:Harbor 仮想マシンの IP アドレスが変更された場合:

    1. Harbor リポジトリにある「How to change existing expired harbor CA certificate with new one」スレッドの説明に従って、新しい IP アドレス用の証明書を生成します。
    2. 以下の「証明書のローテーション」の説明に従って、新しい証明書を仮想マシンに適用します。
  8. FQDN:Harbor 仮想マシンの IP アドレスが変更された場合は、仮想マシンの /etc/hosts ファイルまたは DNS レコードでそのアドレスを更新します。

証明書のローテーション

Harbor 仮想マシンの IP アドレスが変更されたら、証明書をローテーションします。

  1. 仮想マシンに ssh 接続します。

  2. Harbor サービスを停止します。

    systemctl stop harbor
    
  3. 古い証明書の server.crtserver.key、および ca.crt ファイルを移動するか、名前を変更することでバックアップします。

    • server.crt/storage/data/secret/cert/server.crt にあります
    • server.key/storage/data/secret/cert/server.key にあります
    • ca.crt/storage/data/ca_download/ca.crt にあります
  4. 新しい証明書の server.crtserver.keyca.crt を上記の場所に保存し、ファイルの所有権と権限を古いファイルと同じ設定内容に設定します。

  5. Harbor サービスを開始します。

    systemctl start harbor
    

次の手順

この Harbor レジストリを使用してインターネットが制限された環境に管理クラスタを展開した後、次の 2 つの方法のいずれかを使用して、TKG ワークロード クラスタで Harbor を使用することができます。

  • 外部 Harbor レジストリを使用する。このレジストリが信頼された CA 証明書を使用している場合、ワークロード クラスタとレジストリ間の接続は安全です。中央レジストリで自己署名証明書を使用している場合は、TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY を無効にして、TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE オプションを指定できます。このオプションを設定すると、自己署名証明書がワークロード クラスタに自動的に挿入されます。

  • Harbor の 2 番目のインスタンスを TKG 内の共有サービスとして展開する。VMware では、TKG によって管理される共有サービスとして Harbor パッケージを展開することをお勧めします。詳細については、「サービス レジストリ用の Harbor のインストール」を参照してください。

ロード バランシングを使用するインフラストラクチャでは、VMware は、「Harbor レジストリと外部 DNS」の説明に従って、外部 DNS パッケージ サービスを Harbor サービスと一緒にインストールすることをお勧めします。

check-circle-line exclamation-circle-line close-line
Scroll to top icon