Artifact Registry は、コンテナ イメージを管理するための推奨サービスです。Container Registry のサポートは継続されますが、重要なセキュリティ修正のみが適用されます。Artifact 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 トピックを作成する必要があります。

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

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

Console

  1. Google Cloud コンソールで Pub/Sub トピックページに移動します。

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

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

  3. ID gcr を入力します。

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

gcloud

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

gcloud pubsub topics create gcr --project=PROJECT-ID

PROJECT-ID は、実際の Google Cloud プロジェクト ID に置き換えます。--project フラグを省略した場合、このコマンドでは、現在のプロジェクトが使用されます。

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

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

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

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

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

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

Console

  1. Google Cloud コンソールで 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 アクセス制御は、Google Cloud コンソールの 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 が含まれている場合があります。

次のステップ