Como configurar notificações do Pub/Sub

Quando são feitas alterações no seu repositório do Container Registry, como quando as imagens são enviadas, marcadas ou excluídas, você pode receber notificações usando o Pub/Sub.

O Pub/Sub publica mensagens sobre o repositório para recursos nomeados, chamados de tópicos. Essas mensagens são recebidas por aplicativos inscritos nos tópicos do Pub/Sub. Os aplicativos inscritos enviam notificações quando o estado do repositório é alterado.

Além disso, você pode configurar papéis e permissões para os tópicos do Pub/Sub, a fim de controlar como os usuários interagem com o repositório.

Para ser compatível com a transição do Container Registry para o Artifact Registry, o Artifact Registry publica mensagens no mesmo tópico que o Container Registry.

Para mais informações sobre como configurar notificações do Artifact Analysis sobre atividades como novos resultados de verificação de vulnerabilidades, consulte a documentação do Artifact Analysis.

Criar um tópico do Pub/Sub

Quando você ativa a API Container Registry em um projeto do Google Cloud, ela cria automaticamente um tópico do Pub/Sub com o ID gcr.

Se o tópico gcr foi excluído acidentalmente ou está ausente, você mesmo pode adicioná-lo. Por exemplo, o tópico pode estar ausente se a organização do Google Cloud tiver uma restrição de política da organização que exija a criptografia com chaves de criptografia gerenciadas pelo cliente (CMEK). Quando a API Pub/Sub está na lista de negação desta restrição, os serviços não podem criar automaticamente tópicos com chaves de criptografia gerenciadas pelo Google.

Para criar o tópico gcr com chaves de criptografia gerenciadas pelo Google:

Console

  1. Acesse a página de tópicos do Pub/Sub no console do Google Cloud.

    Acesse a página de tópicos do Cloud Pub/Sub

  2. Clique em Criar tópico.

  3. Digite o código do tópico gcr.

  4. Clique em Criar tópico.

gcloud

Execute este comando:

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

Substitua PROJECT-ID pelo ID do projeto do Google Cloud. Se você omitir a flag --project, o comando usará o projeto atual.

Para saber mais sobre o comando gcloud pubsub topics, consulte a documentação de topics.

Para criar o tópico gcr com criptografia CMEK, consulte as instruções do Pub/Sub para criptografar tópicos.

Depois de criar o tópico gcr ou verificar se ele existe, é possível criar uma assinatura para o tópico.

Criar uma assinatura no Pub/Sub

Todos os tópicos de Pub/Sub devem ter uma assinatura.

O aplicativo inscrito recebe as mensagens do tópico do repositório. Os assinantes realizam tarefas, como notificações de eventos, login no sistema e comunicação entre aplicativos.

É possível configurar as assinaturas para usar um modelo de envio ou de extração.

Para criar uma assinatura:

Console

  1. Acesse a página de tópicos do Pub/Sub no console do Google Cloud.

    Acesse a página de tópicos do Cloud Pub/Sub

  2. Clique no tópico do projeto.

  3. Clique em Criar assinatura.

  4. Insira o nome da assinatura:

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

    Deixe "Tipo de entrega" configurado como "Pull".

  5. Clique em Criar.

gcloud

No sistema em que as imagens do Docker são enviadas ou marcadas com tag, execute este comando:

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

Para saber mais sobre o comando gcloud pubsub subscriptions, consulte a documentação de subscriptions.

Configurar permissões do Pub/Sub

Use o controle de acesso do Pub/Sub para configurar as permissões do projeto e dos recursos. Os controles de acesso mantêm o repositório seguro e permitem gerenciar as permissões de usuário usando acesso baseado em papéis.

É possível configurar os controles de acesso do Pub/Sub na página do IAM no console do Google Cloud ou pela API IAM.

  • Para configurar as permissões de publicação, use um destes papéis: proprietário, editor, pubsub.admin, pubsub.editor, pubsub.publisher. Os principais que enviam ou excluem imagens do registro precisam ter a permissão pubsub.topics.publish para publicar uma mensagem no Pub/Sub.

  • Para configurar as permissões de assinatura, use um destes papéis: proprietário, editor, pubsub.admin, pubsub.editor, pubsub.subscriber.

Exemplos de notificação

As notificações são enviadas como strings em formato JSON. Abaixo estão alguns exemplos de notificações do Container Registry que você pode receber do Pub/Sub.

Quando uma imagem é enviada para o Container Registry, o payload da notificação pode ter o seguinte aspecto:

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

Quando uma tag nova é enviado para o Container Registry, o payload da notificação pode ter o seguinte aspecto:

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

A mensagem identifica a imagem relevante usando uma tecla digest ou tag.

Quando um marcador é excluído do Container Registry, o conteúdo da notificação pode ter o seguinte aspecto:

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

A mensagem pode conter DELETE ou INSERT como valores para a tecla action.

A seguir