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 no Container Analysis sobre atividades como novos resultados de verificação de vulnerabilidades, consulte a documentação do Container Analysis.
Criar um tópico do Pub/Sub
Para cada projeto do Container Registry de que você queira receber notificações, é necessário criar um tópico do Pub/Sub usando um aplicativo de publicação do 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 Cloud 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 ID do projeto no
Google Cloud.
Para criar um tópico:
Console
Acesse a página de tópicos do Pub/Sub no Console do Cloud:
Clique em Criar tópico.
Digite um nome de tópico com o URI:
projects/[PROJECT-ID]/topics/gcr
em que
[PROJECT-ID]
é o ID do projeto no Google Cloud.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 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
Acesse a página de tópicos do Pub/Sub no Console do Cloud:
Clique no tópico do projeto.
Clique em Criar assinatura.
Insira o nome da assinatura:
projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
Deixe "Tipo de entrega" configurado como "Pull".
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
Você pode usar o controle de acesso do Pub/Sub para configurar as permissões para o projeto e os 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 as permissões para publicação, use qualquer um dos seguintes papéis: proprietário, editor, pubsub.admin, pubsub.editor, pubsub.publisher.
Para configurar as 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 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
- Leia a documentação do Pub/Sub.
- Para ver uma explicação detalhada do Pub/Sub, consulte O que é o Pub/Sub?
- Saiba mais sobre os papéis de controle de acesso do Pub/Sub.