Artifact Registry は、コンテナやその他の形式をサポートするユニバーサル パッケージ管理サービスです。アーティファクトをより柔軟に制御できるようにすることを目的とした、Container Registry からの移行について説明します。

Pub/Sub 通知の構成

イメージが push、タグ付け、削除されたときなど、Container Registry リポジトリに変更が加えられた場合、Pub/Sub を使用して通知を受け取ることができます。

Pub/Sub は、リポジトリに関するメッセージをトピックという名前付きリソースに公開します。これらのメッセージは、Pub/Sub トピックに登録されたアプリケーションによって受信されます。サブスクライバー アプリケーションは、リポジトリの状態が変更されたときに通知を送信します。

さらに、Pub/Sub トピックの役割と権限を構成して、ユーザーがリポジトリをどのように操作するかを制御することもできます。

Container Registry から Artifact Registry への移行をサポートするために、Artifact Registry は Container Registry と同じトピックにメッセージをパブリッシュします。

新しい脆弱性スキャンの結果など、アクティビティの Container Analysis 通知の構成については、Container Analysis のドキュメントをご覧ください。

Pub/Sub トピックの作成

通知を希望する Container Registry プロジェクトごとに、Pub/Sub パブリッシャー アプリケーションを使用して Pub/Sub トピックを作成する必要があります。

パブリッシャー アプリケーションは、リポジトリの状態が変更されたときにリポジトリのトピックにメッセージを送信します。トピックを作成するには、Cloud Console または gcloud コマンドライン ツールを使用します。

トピックを作成するときは、リポジトリの修飾 URI を使用する必要があります。修飾 URI は次のとおりです。

projects/[PROJECT-ID]/topics/gcr

ここで [PROJECT-ID] は、Google Cloud プロジェクト ID です。

トピックを作成するには:

Console

  1. Cloud Console の Pub/Sub トピックページに移動します。

    Pub/Sub トピックページに移動

  2. [トピックを作成] をクリックします。

  3. URI を使用したトピック名を入力します。

    projects/[PROJECT-ID]/topics/gcr
    

    ここで [PROJECT-ID] は、Google Cloud プロジェクト ID です。

  4. [作成] をクリックします。

gcloud

Docker イメージが push またはタグ付けされているシステムから、次のコマンドをシェルまたはターミナル ウィンドウで実行します。

gcloud pubsub topics create projects/[PROJECT-ID]/topics/gcr

gcloud pubsub topics コマンドについて詳しくは、topics ドキュメントをご覧ください。

Pub/Sub サブスクリプションの作成

すべての Pub/Sub トピックにはサブスクリプションが必要です。

サブスクライバー アプリケーションは、リポジトリのトピックからメッセージを受信します。サブスクライバーは、イベント通知、システム ロギング、アプリケーション間の通信などのタスクを遂行します。

サブスクリプションは、push モデルまたは pull モデルを使用するように構成できます。

サブスクリプションを作成するには:

Console

  1. Cloud Console の Pub/Sub トピックページに移動します。

    Pub/Sub トピックページに移動

  2. プロジェクトのトピックをクリックします。

  3. [サブスクリプションを作成] をクリックします。

  4. サブスクリプション名を入力します。

    projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
    

    [配信タイプ] は [Pull] に設定されたままにします。

  5. [作成] をクリックします。

gcloud

Docker イメージが push またはタグ付けされているシステムから、次のコマンドを実行します。

gcloud pubsub subscriptions create [SUBSCRIPTION-NAME] --topic=gcr

gcloud pubsub subscriptions コマンドについて詳しくは、subscriptions ドキュメントをご覧ください。

Pub/Sub 権限の構成

Pub/Sub アクセス制御を使用して、プロジェクトとリソースの権限を設定できます。アクセス制御はリポジトリを安全に保ち、ロールベースのアクセスを使用してユーザー権限を管理できるようにします。

Pub/Sub アクセス制御は、Cloud Console の IAM ページまたは IAM API を使用して構成できます。

  • 公開の権限を構成するには、owner、editor、pubsub.admin、pubsub.editor、pubsub.publisher のいずれかの役割を使用します。

  • 登録の権限を構成するには、owner、editor、pubsub.admin、pubsub.editor、pubsub.subscriber のいずれかの役割を使用します。

通知の例

通知は、JSON 形式の文字列として送信されます。以下は、Pub/Sub から Container Registry 通知を受信するときに期待されるものの例です。

イメージが Container Registry に push されるときの通知ペイロードは次のようになります。

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5..."
}

新しいタグが Container Registry に push されるときの通知ペイロードは次のようになります。

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5...",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

メッセージは、digest または tag キーを使用して関連イメージを識別します。

タグが Container Registry から削除されるときの通知ペイロードは次のようになります。

{
  "action":"DELETE",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

メッセージには、action キーの値として DELETE または INSERT が含まれている場合があります。

次のステップ