Container Registry ユーザー向けの設定ガイド

現在、Container Registry を使用してコンテナを管理している場合について、このページでは Artifact Registry リポジトリの設定方法およびリポジトリと Container Registry の使用方法の相違を説明します。

概要

説明を簡易にするため、このページの手順では、Container Registry と Artifact Registry が同じ Google Cloud プロジェクトにあることを前提としています。Artifact Registry に移行すると、セットアップ ステップを徐々に実行し、自動化を更新できるように、引き続き両方のサービスを使用できます。

必要に応じて、別のプロジェクトに Artifact Registry を設定し、全般にわたって同一の手順を行うことができます。

更新の手順

Artifact Registry に移行する手順は次のとおりです。

  1. 移行を開始する前に、Artifact Registry の料金をご覧ください。
  2. Artifact Registry API を有効にします。
  3. Cloud SDK を更新し、新しい gcloud コマンドについて確認します。 必要に応じて、gcloud コマンドのデフォルトを設定します。
  4. コンテナの Docker リポジトリを作成します。イメージを push する前にリポジトリを作成する必要があります。
  5. リポジトリに権限を付与します。
  6. 認証を構成して、新しいリポジトリに接続できるようにします。
  7. 必要に応じて、新しいリポジトリで使用する Container Registry からコンテナをコピーします。
  8. コンテナを push および pull してみます。
  9. イメージをランタイム環境にデプロイしてみます。
  10. その他の機能を構成します。

サービスの有効化

Artifact Registry を使用するには、Cloud Console から、または次のコマンドを使用して Artifact Registry API を有効にします。

gcloud services enable artifactregistry.googleapis.com

次のステップ

Cloud SDK を更新して構成するか、手順のリストに戻ります

Cloud SDK の更新と構成

Container Registry は gcloud container images コマンドを使用します。

Artifact Registry は、イメージに gcloud artifacts コマンドを使用します。

  1. Cloud SDK がまだインストールされていない場合は、インストールします。

  2. gcloud コンポーネントを更新します。

    gcloud components update
    

gcloud コマンドの比較

次の表に、Container Registry コマンドと gcloud ツールの対応する Artifact Registry コマンドの概要を示します。表内のリンクをクリックすると、コマンドのリファレンス ページが表示されます。

この表には、Container Registry に対応するものがないすべての Artifact Registry コマンドは含まれていません。gcloud アーティファクトの完全なリファレンスについては gcloud artifacts のドキュメントをご覧ください。

オペレーション Container Registry Artifact Registry
リポジトリを作成する 該当なし gcloud artifacts リポジトリの作成
リポジトリを削除する 該当なし gcloud artifacts リポジトリの削除
イメージの一覧取得 gcloud container images list gcloud artifacts docker images list
タグの一覧表示 gcloud container images list-tags gcloud artifacts docker tags list
タグを追加 gcloud container images add-tag gcloud artifacts docker tags add
タグを削除する gcloud container images untag gcloud artifacts docker tags delete
イメージの説明を入力 gcloud container images describe gcloud artifacts docker image list --include-tags

次のステップ

リポジトリを作成するか、ステップのリストに戻ります

リポジトリの作成

以前にイメージを push していない場合、Container Registry は、マルチリージョンにストレージ バケットを自動的に作成します。

Artifact Registry で、イメージをアップロードする前にリポジトリを作成する必要があります。リポジトリを作成する際は、以下の項目を指定する必要があります。

  • リポジトリの形式。Artifact Registry はコンテナを Docker リポジトリに保存します。
  • リポジトリのリージョンまたはマルチリージョンのロケーション

    Artifact Registry リポジトリの場所を選択する際は、他のインフラストラクチャとユーザーのリポジトリまでの近接度を考慮してください。Container Registry から Artifact Registry にイメージをコピーする場合は、ロケーションの違いによってコピーのコストに影響する可能性があります。

  • 暗号化に顧客管理の暗号鍵(CMEK)を使用している場合、Cloud Key Management Service 鍵。

    Container Registry で、CMEK を使用するように Container Registry ストレージ バケットを構成します。Artifact Registry で、リポジトリの作成時に CMEK を使用するようにリポジトリを構成します。Artifact Registry で CMEK を使用する際の詳細については、顧客管理の暗号鍵の有効化をご覧ください。

Container Registry は、ドメイン gcr.io でコンテナをホストします。Artifact Registry はドメイン pkg.dev でコンテナをホストします。

CMEK を暗号化に使用するリポジトリなど、リポジトリの作成の詳細については、リポジトリの作成をご覧ください。

次のステップ

権限を付与するか、手順のリストに戻ります

権限の付与

Container Registry では、アクセス制御は Cloud Storage のロールと権限に基づいています。プロジェクト全体のロールを付与しない場合は、Container Registry で使用される特定のストレージ バケットに対する権限を付与する必要があります。

Artifact Registry には固有の IAM ロールが割り当てられています。プロジェクト レベルでロールを付与する、または個別のリポジトリに対する権限を設定することができます。複数の Docker リポジトリをリポジトリ固有の権限と組み合わせて使用し、さまざまな種類のアーティファクトへのアクセスを制御します。たとえば、本番環境リポジトリをより詳細に制御する、またはチームメンバーの構成に基づいてチーム固有のリポジトリへのアクセス権を付与することができます。

Google Cloud CI/CD サービスのサービス アカウントは、同じプロジェクト内のリポジトリへのアクセスが事前構成されています。別のプロジェクトまたはサードパーティ ツールで Google Cloud サービスを使用してイメージを push または pull する場合は、適切な権限を手動で構成する必要があります。

権限を付与する手順については、権限の付与をご覧ください。

次のステップ

リポジトリへのアクセスに使用するサードパーティ ツールの認証を構成するか、手順のリストに戻ります

リポジトリに対する認証

Artifact Registry は、Container Registry と同じ認証方法をサポートしています。

Docker 認証情報ヘルパーを使用している場合:

  • Artifact Registry リポジトリを操作するには、バージョン 2.0 以降を使用する必要があります。スタンドアロン バージョンは GitHub で入手できます。
  • 認証情報ヘルパーは、使用する Artifact Registry の場所を使用して構成する必要があります。デフォルトでは、認証情報ヘルパーは Container Registry ホストへのアクセスのみを構成します。

認証の設定の詳細については、Docker 用の認証の設定をご覧ください。

次のステップ

引き続き Artifact Registry に保存するコンテナをコピーするか、手順のリストに戻ります

Container Registry からのコンテナのコピー

Container Registry に Artifact Registry で引き続き使用するコンテナがある場合は、いくつかの方法でコンテナをコピーできます。手順については、Container Registry からイメージをコピーするをご覧ください。

次のステップ

コンテナを push および pull できることを確認するか、ステップのリストに戻ります

イメージの push と pull

Artifact Registry でイメージのタグ付け、push、pull に使用する Docker コマンドは、Container Registry で使用するコマンドと類似しています。主な違いは次の 2 点です。

  • Artifact Registry Docker リポジトリのホスト名には、ロケーションのプレフィックスの後に -docker.pkg.dev が続きます。australia-southeast1-docker.pkg.deveurope-north1-docker.pkg.deveurope-docker.pkg.dev が例として挙げられます。
  • Artifact Registry では 1 つのプロジェクトで複数の Docker リポジトリがサポートされているため、コマンドでリポジトリ名を指定する必要があります。

たとえば Container Registry では、イメージ my-image をプロジェクト my-project のレジストリ eu.gcr.io に push します。

docker push eu.gcr.io/my-project/my-image

Artifact Registry では、このコマンドはイメージ my-image をリポジトリ my-repo のリージョン リポジトリ europe-north1-docker.pkg.dev とプロジェクト my-project に push します。

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Artifact Registry でのイメージの push および pull の詳細については、イメージの push と pull をご覧ください。

次のステップ

イメージをデプロイできることを確認します。または、手順のリストに戻ります

イメージのデプロイ

一般的な Google Cloud 統合向けサービス アカウントは、デフォルトで Artifact Registry リポジトリと連携するように構成されています。

イメージをビルドして Cloud Build でリポジトリに push すると、通常は Container Registry の場合と同じように機能します。Artifact Registry の主な違いは、push する最初のイメージを含めて、イメージを push する前にターゲット リポジトリが存在する必要があることです。

Docker コマンド docker push や Cloud Build コマンド gcloud builds submit など、イメージを push するコマンドを実行する前に、必要なリポジトリを作成するようにしてください。

Cloud Build のビルダーは引き続き gcr.io でホストされます。詳細については、Cloud Build との統合をご覧ください。

次のステップ

その他の機能を構成するか、手順のリストに戻ります

メタデータの管理と脆弱性のスキャン

Container Analysis は、Container Registry と Artifact Registry の両方をサポートします。Container Analysis のドキュメントが更新され、両方のプロダクトが含まれるようになりました。

  • どちらのプロダクトも同じ Container Analysis API を使用します。Container Registry または Artifact Registry のどちらかで Container Analysis API を有効にすると、両方のプロダクトで API が有効になります。
  • どちらのプロダクトも、Pub/Sub 通知に同じ「gcr」トピックを使用します。つまり、「gcr」トピックへの既存のサブスクリプションには、Artifact Registry と Container Registry の両方の通知が含まれています。
  • メモとオカレンスを操作するための Cloud SDK コマンドは、gcloud artifacts docker グループにあります。

その他の機能

このセクションでは、Container Registry で設定されているその他の機能の構成について説明します。

Pub/Sub 通知

Artifact Registry は、Container Registry と同じ gcr トピックに変更を公開します。Artifact Registry と同じプロジェクトで Container Registry で Pub/Sub をすでに使用している場合は、追加の構成は必要ありません。

別のプロジェクトに Artifact Registry を設定した場合は、gcr トピックが存在しない可能性があります。設定手順については、Pub/Sub 通知の構成をご覧ください。

サービス境界でのリポジトリの保護

VPC Service Controls を使用すると、Google マネージド サービスのリソースの周囲にセキュリティ境界を構成し、境界をまたぐデータの移動を制御できます。

手順については、サービス境界でのリポジトリの保護をご覧ください。

次のステップ