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