Como configurar notificações do Cloud Pub/Sub

Você pode receber notificações do Cloud Pub/Sub quando forem feitas alterações no repositório do Container Registry, como o envio, a marcação ou a exclusão de imagens.

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 Cloud 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 Cloud Pub/Sub, a fim de controlar como os usuários interagem com o repositório.

Criar um tópico do Cloud Pub/Sub

Para cada projeto do Container Registry para o qual você quer receber notificações, é necessário criar um tópico do Cloud Pub/Sub usando um aplicativo do editor do Cloud Pub/Sub.

O aplicativo de publicação envia as mensagens para o tópico do repositório quando o estado do repositório é alterado. É possível criar um tópico usando o Console do GCP ou a ferramenta de linha de comando gcloud.

Ao criar um tópico, é necessário usar um URI qualificado para o repositório. O URI qualificado é:

projects/[PROJECT-ID]/topics/gcr

em que [PROJECT-ID] é o código do projeto no Google Cloud Platform.

Para criar um tópico:

Console

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

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

  2. Clique em Criar tópico.

  3. Digite um nome de tópico com o URI:

    projects/[PROJECT-ID]/topics/gcr
    

    em que [PROJECT-ID] é o código do projeto do GCP.

  4. Clique em Criar.

gcloud

No sistema em que as imagens do Docker são enviadas ou marcadas, execute o seguinte comando no shell ou na janela do terminal:

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

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

Criar uma inscrição do Cloud Pub/Sub

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

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 modelo de extração.

Para criar uma assinatura:

Console

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

    Acessar 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.

Como configurar permissões do Cloud Pub/Sub

Você pode usar o controle de acesso do Cloud Pub/Sub para configurar permissões para seu projeto e 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 Cloud Pub/Sub na página do IAM no console do GCP ou por meio da API IAM.

  • Para configurar permissões de publicação, use qualquer um dos seguintes papéis: proprietário, editor, PubSub.Admin, PubSub.Editor, PubSub.Publisher

  • Para configurar permissões para assinatura, use qualquer um dos seguintes 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 Cloud 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 chave 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 da chave action.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…