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
Aceda à página de tópicos do Pub/Sub na Google Cloud consola.
Clique em Criar tópico.
Introduza o ID do tópico
gcr
.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
Aceda à página de tópicos do Pub/Sub na Google Cloud consola.
Clique no tópico do seu projeto.
Clique em Criar subscrição.
Introduza um nome da subscrição:
projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
Deixe o tipo de fornecimento definido como Extrair.
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?
- Leia a documentação do Pub/Sub.
- Para uma explicação detalhada do Pub/Sub, consulte o artigo O que é o Pub/Sub?
- Saiba mais sobre as funções de controlo de acesso do Pub/Sub.