Configurar notificações do Pub/Sub

Quando são feitas alterações ao seu repositório do Container Registry, como quando as imagens são enviadas, etiquetadas ou eliminadas, pode receber notificações através do Pub/Sub.

O Pub/Sub publica mensagens sobre o seu repositório em recursos denominados tópicos. Estas mensagens são recebidas por aplicações subscritas em tópicos do Pub/Sub. As aplicações de subscrição enviam notificações quando o estado do seu repositório muda.

Além disso, pode configurar funções e autorizações para os seus tópicos do Pub/Sub para controlar a forma como os utilizadores interagem com o seu repositório.

Para suportar a transição do Container Registry para o Artifact Registry, o Artifact Registry publica mensagens no mesmo tópico que o Container Registry.

Para obter informações sobre a configuração de notificações da Artifact Analysis para atividade, como novos resultados da análise de vulnerabilidades, consulte a documentação da Artifact Analysis.

Crie um tópico do Pub/Sub

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

Se o tópico gcr tiver sido eliminado acidentalmente ou estiver em falta, pode adicioná-lo manualmente. Por exemplo, o tópico pode estar em falta se a sua Google Cloud organização tiver uma restrição da política da organização que exija a encriptação com chaves de encriptação geridas pelo cliente (CMEK). Quando a API Pub/Sub está na lista de recusa desta restrição, os serviços não podem criar automaticamente tópicos com Google-owned and Google-managed encryption keys.

Para criar o tópico gcr com Google-owned and Google-managed encryption keys:

Consola

  1. Aceda à página de tópicos do Pub/Sub na Google Cloud consola.

    Aceda à página de tópicos do Pub/Sub

  2. Clique em Criar tópico.

  3. Introduza o ID do tópico gcr.

  4. Clique em Criar tópico.

gcloud

Execute o seguinte comando:

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

Substitua PROJECT-ID pelo seu Google Cloud ID do projeto. Se omitir a flag --project, o comando usa o projeto atual.

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

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

Depois de criar o tópico gcr ou verificar que existe, pode criar uma subscrição do tópico.

Crie uma subscrição do Pub/Sub

Todos os tópicos do Pub/Sub devem ter uma subscrição.

Uma aplicação de subscritor recebe mensagens do tópico do seu repositório. Os subscritores cumprem tarefas como notificações de eventos, registo do sistema e comunicação entre aplicações.

As subscrições podem ser configuradas para usar um modelo push ou um modelo pull.

Para criar uma subscrição:

Consola

  1. Aceda à página de tópicos do Pub/Sub na Google Cloud consola.

    Aceda à página de tópicos do Pub/Sub

  2. Clique no tópico do seu projeto.

  3. Clique em Criar subscrição.

  4. Introduza um nome da subscrição:

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

    Deixe o tipo de fornecimento definido como Extrair.

  5. Clique em Criar.

gcloud

No sistema onde as imagens de Docker são enviadas ou etiquetadas, execute o seguinte comando:

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

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

Configurar autorizações do Pub/Sub

Use o controlo de acesso do Pub/Sub para configurar autorizações para o seu projeto e recursos. Os controlos de acesso mantêm o repositório seguro e permitem-lhe gerir as autorizações dos utilizadores através do acesso baseado em funções.

Pode configurar os controlos de acesso do Pub/Sub na Google Cloud página IAM da consola ou através da API IAM.

  • Para configurar autorizações de publicação, use qualquer uma das seguintes funções: proprietário, editor, pubsub.admin, pubsub.editor, pubsub.publisher. Os principais que enviam imagens ou eliminam imagens do registo têm de ter a autorização pubsub.topics.publish para publicar uma mensagem no Pub/Sub.

  • Para configurar autorizações para a subscrição, use qualquer uma das seguintes funções: proprietário, editor, pubsub.admin, pubsub.editor, pubsub.subscriber.

Exemplos de notificações

As notificações são enviadas como strings formatadas em JSON. Seguem-se exemplos do que esperar quando receber notificações do Container Registry do Pub/Sub.

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

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

Quando uma nova etiqueta é enviada para o Container Registry, o payload da notificação pode ter o seguinte aspeto:

{
  "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 através de uma chave digest ou tag.

Quando uma etiqueta é eliminada do Container Registry, a carga útil da notificação pode ter o seguinte aspeto:

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

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

O que se segue?