Harbor コンテナ レジストリをスーパーバイザー サービスとしてインストールし、プライベート レジストリとして Harbor を実行できます。

前提条件

次の前提条件を満たす必要があります。
注: ここで示す手順は、vSphere 8 および NSX 4 ネットワークで検証されています。

必要な YAML ファイルのダウンロード

Contour や Harbor などの必要な YAML ファイルをダウンロードします。
  1. Kubernetes Ingress コントローラ サービスのサイトから次の Contour ファイルをダウンロードします。
    1. Contour サービス定義ファイル:contour.yml
    2. Contour サービス構成ファイル:contour-data-values.yml
  2. Cloud Native Registry Service のサイトから次の Harbor ファイルをダウンロードします。
    1. Harbor サービス定義ファイル:harbor.yml
    2. Harbor サービス構成ファイル:harbor-data-values.yml

Contour のインストール

Harbor をインストールする前に、Contour をインストールする必要があります。
  1. [ワークロード管理] > [] > [サービス] > [追加] で、vCenter Server に contour.yml をアップロードします。
  2. Contour サービス定義が追加されたことを確認します。
  3. [ワークロード管理] > [スーパーバイザー] > [スーパーバイザー] > [構成] の順に選択します。
  4. [スーパーバイザー サービス] > [概要] の順に選択します。
  5. [使用可能] タブを選択します。
  6. [Contour] を選択し、[インストール] をクリックします。
  7. contour-data-values.yml の内容をコピーして [YAML サービス構成] 入力フィールドに貼り付けます。
    注: Contour データ値はそのまま使用できます。構成を変更する必要はありません。Envoy のサービス タイプは LoadBalancer に設定されています。
  8. [OK] をクリックして、Contour のインストールを続行します。
  9. Contour がインストールされたことを確認します。
    1. svc-contour-domain-XXXX という名前の vSphere 名前空間 を選択します。
    2. [ネットワーク] タブを選択し、[サービス] を選択します。
    3. ClusterIP タイプの contour サービスと LoadBalancer タイプの envoy サービスが表示されます。envoy サービスには外部 IP アドレスが必要です。

Harbor データ値の更新

Harbor をインストールする前に、データ値ファイルを更新します。
  1. テキスト エディタを使用して harbor-data-values.yml ファイルを開きます。
  2. 以下の編集を行います(必要最小限の編集であり、他のフィールドの編集は任意)。
  3. 変更を保存します。
    名前
    hostname harbordomain.com(一意のホスト名を選択)
    tlsCertificate.tlsSecretLabels {"managed-by": "vmware-vRegistry"}(この値を確認してそのまま使用)
    persistence.persistentVolumeClaim.registry.storageClass "vwt-storage-policy"(スーパーバイザーの vSphere ストレージ ポリシーの名前を入力)
    persistence.persistentVolumeClaim.jobservice.storageClass "vwt-storage-policy"(スーパーバイザーの vSphere ストレージ ポリシーの名前を入力)
    persistence.persistentVolumeClaim.database.storageClass "vwt-storage-policy"(スーパーバイザーの vSphere ストレージ ポリシーの名前を入力)
    persistence.persistentVolumeClaim.redis.storageClass "vwt-storage-policy"(スーパーバイザーの vSphere ストレージ ポリシーの名前を入力)
    persistence.persistentVolumeClaim.trivy.storageClass "vwt-storage-policy"(スーパーバイザーの vSphere ストレージ ポリシーの名前を入力)

Harbor のインストール

次の手順を実行して、Harbor をインストールします。
  1. [ワークロード管理] > [] > [サービス] > [追加] で、vCenter Server に harbor.yml をアップロードします。
  2. Harbor サービス定義が追加されたことを確認します。
  3. [ワークロード管理] > [スーパーバイザー] > [スーパーバイザー] > [構成] の順に選択します。
  4. [スーパーバイザー サービス] > [概要] の順に選択します。
  5. [使用可能] タブを選択します。
  6. [Harbor] を選択し、[インストール] をクリックします。
  7. 編集した harbor-data-values.yml の内容をコピーして [YAML サービス構成] 入力フィールドに貼り付けます。
  8. [OK] をクリックして、Harbor のインストールを続行します。
  9. Harbor がインストールされたことを確認します。
    1. svc-harbor-domain-XXXX という名前の vSphere 名前空間 を選択します。
    2. [ネットワーク] タブを選択し、[サービス] を選択します。
    3. Harbor 用に複数のコンテナがインストールされます。それぞれのサービスのタイプは ClusterIP です。

Harbor 用の DNS の構成

ドメイン名を登録し、Harbor の DNS レコードを設定する必要があります。
  1. [ワークロード管理] > [名前空間] の順に選択します。
  2. [Contour] 名前空間を削除します。
  3. [ネットワーク] > [サービス] の順に選択します。
  4. Envoy Ingress サービスの外部 IP アドレス(10.197.154.71 など)を記録します。
  5. Harbor 構成で指定した Harbor ドメイン名 (FQDN) を登録します。
  6. AWS Route 53 または同様のサービスを使用して DNS「A」レコードを作成します。

Harbor へのログイン

Harbor DNS が設定されたら、ログインします。
  1. Harbor に登録したドメイン名に移動します。
  2. admin および Harbor 構成で指定したパスワードを使用してドメインにログインします。
  3. ログインしたら、パスワードをより安全なものに変更します。

Harbor レジストリを信頼するためのスーパーバイザーの構成(オプション)

TKG クラスタと Harbor の両方が同じ スーパーバイザー にデプロイされている場合、TKG クラスタは Harbor スーパーバイザー サービスを信頼するように自動的に構成されます。ただし、 スーパーバイザーvSphere ポッド の作成時に Harbor スーパーバイザー サービスを信頼するように自動的に構成されません。Harbor CA 証明書を使用して configmap を更新することによって、 スーパーバイザー と Harbor サービス間の信頼を確立するには、次の手順を実行します。
  1. Harbor で、[管理] > [構成] > [システム設定] の順に移動します。
  2. レジストリ ルート証明書(ca.crt という名前のファイル)をダウンロードします。
  3. KUBE_EDITOR 環境変数を構成します。

    kubectl のテキスト エディタの構成を参照してください。

  4. kubectl を使用して スーパーバイザー にログインします。

    Kubectl を使用した vCenter Single Sign-On ユーザーとしての スーパーバイザー への接続を参照してください。

  5. コンテキストを スーパーバイザー コンテキスト(IP アドレス)に切り替えます。
  6. 次のコマンドを使用して configmap/image-fetch-ca-bundle を編集します。
    kubectl edit configmap image-fetcher-ca-bundle -n kube-system
  7. Harbor ca.crt ファイルの内容をコピーして、既存の証明書の下にある configmap に追加します(これは スーパーバイザー 用であるため、変更しないでください)。ファイルに加えた編集内容を保存します。Kubectl から「configmap/image-fetcher-ca-bundle edited」と報告されます。