Você pode receber notificações do Pub/Sub sobre as alterações em um repositório do Docker. As notificações se aplicam a qualquer imagem de contêiner armazenada no repositório, incluindo gráficos do Helm 3 empacotados no formato OCI.
O Pub/Sub publica mensagens sobre os repositórios em recursos nomeados, chamados de tópicos. Os aplicativos que se inscrevem nos tópicos do Pub/Sub recebem essas mensagens e recebem notificações quando o estado de um repositório é alterado.
O Artifact Registry publica mensagens sobre as seguintes mudanças:
- Uploads de imagens
- Novas tags adicionadas às imagens
- Exclusão de imagens
Além disso, é possível configurar papéis e permissões para publicar ou se inscrever para receber notificações.
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.Visão geral
O Artifact Registry publica mensagens sobre alterações nos repositórios em um
tópico chamado gcr
.
Para receber notificações, é preciso:
- Crie um tópico chamado
gcr
no projeto com o Artifact Registry. - Crie uma assinatura no tópico.
- Configure o aplicativo de assinante para receber mensagens sobre alterações no repositório.
- Se apropriado, configure permissões para controlar o acesso ao seu tópico e à sua assinatura.
Como criar o tópico do Artifact Registry
Para criar o tópico gcr
com de propriedade e gerenciadas pelo Google do Google Cloud:
Console
Acesse a página de tópicos do Pub/Sub no console do Google Cloud.
Clique em Criar tópico.
Digite o código do tópico
gcr
.Clique em Criar tópico.
gcloud
Execute este comando:
gcloud pubsub topics create gcr --project=PROJECT-ID
Substitua PROJECT-ID pelo Google Cloud
ID do projeto. 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.
Como criar uma assinatura
Depois de criar um tópico para alterações no repositório, você pode configurar uma assinatura nele que use entrega por push ou entrega por pull. Recomendamos o uso da entrega por pull, porque os sistemas de CI/CD podem gerar inúmeras alterações em artefatos armazenados, e a entrega por pull é mais eficaz para um grande volume de mensagens.
Para criar uma assinatura com entrega por pull:
Console
Acesse a página de tópicos do Pub/Sub no console do Google Cloud.
Clique no tópico do projeto.
Clique em Criar assinatura.
Insira o nome da assinatura:
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
Deixe o Tipo de entrega configurado como Pull.
Clique em Criar.
gcloud
Execute este comando:
gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr
Substitua SUBSCRIPTION-NAME por um nome para a assinatura
Para saber mais sobre o comando gcloud pubsub subscriptions
, consulte a documentação de subscriptions
.
Agora você tem uma assinatura do tópico gcr
. A próxima etapa é
configurar permissões para as identidades que acionam alterações
nos repositórios.
Como configurar o aplicativo de assinante
Depois de criar um tópico e uma assinatura para ele, é possível configurar seu aplicativo de assinante, que recebe mensagens sobre alterações nos repositórios. Os aplicativos de assinante realizam tarefas como: notificações de eventos, geração de registros do sistema e comunicação entre aplicativos.
Quando um usuário de repositório envia ou exclui uma imagem, as seguintes etapas ocorrem:
A conta de serviço do Artifact Registry publica a alteração no seu tópico
gcr
. A conta de serviço é service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, em que PROJECT-NUMBER é o número do projeto Google Cloud . A conta de serviço do Artifact Registry tem a permissãopubsub.topics.publish
por padrão para que possa publicar alterações no tópico.Se um administrador tiver revogado as permissões
pubsub.topics.publish
da conta de serviço do Artifact Registry, o Artifact Registry tentará publicar a mensagem como o usuário do repositório. Nessa situação, a conta do usuário do repositório precisa ter a permissãopubsub.topics.publish
para publicar a mensagem.O Pub/Sub encaminha a mensagem do tópico para sua assinatura.
Quando seu aplicativo de assinante solicita mensagens, ele extrai a nova mensagem da assinatura.
A identidade que extrai mensagens em nome do assinante precisa ter permissões para acessar a assinatura. Use o papel de assinante do Pub/Sub para conceder essas permissões.
Para saber como configurar um assinante para receber mensagens de uma assinatura com entrega por pull, consulte Como receber mensagens usando pull.
Como configurar permissões
É possível usar permissões do Pub/Sub para controlar o acesso aos seus tópicos e suas assinaturas.
Para mais informações sobre permissões do Pub/Sub e concessão de acesso a tópicos e assinaturas, consulte a documentação de controle de acesso do Pub/Sub.
Exemplos de notificação
O Pub/Sub envia notificações como strings formatadas em JSON. Analise os exemplos a seguir para saber o que esperar ao receber notificações do Artifact Registry do Pub/Sub.
Quando uma imagem é enviada para o Container Registry, o payload da notificação pode ter o seguinte aspecto:
{
"action":"INSERT",
"digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}
Quando uma nova tag de imagem é enviada para o Artifact Registry, o payload da notificação tem esta aparência:
{
"action":"INSERT",
"digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
"tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
A mensagem identifica a imagem relevante usando uma tecla digest
ou tag
.
Quando uma tag de imagem é excluída do Artifact Registry, o payload da notificação pode ter o seguinte aspecto:
{
"action":"DELETE",
"tag":"us-west1-docker.pkg.dev/my-project/my-repo/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.