Resolva problemas de imagens de contentores

Saiba mais sobre os passos de resolução de problemas que podem ser úteis se tiver problemas com a gestão de imagens de contentores no Artifact Registry.

Não é possível extrair uma imagem ou implementar num Google Cloud ambiente de tempo de execução

Verifique o seguinte:

  1. Verifique se o caminho completo da imagem que está a enviar é correto. O caminho tem de incluir o nome de anfitrião do registo, Google Cloud, o ID do projeto, o repositório e a imagem. Por exemplo:
    us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1
    Para mais informações, consulte o artigo Nomes de repositórios e imagens.
  2. Verifique se a conta que está a extrair a imagem tem as autorizações corretas para ler a partir do repositório. Se tiver desativado a concessão automática de funções a contas de serviço, tem de conceder funções do Artifact Registry às contas de serviço de tempo de execução.
    • Para as contas de serviço do Compute Engine, do Cloud Run e do Google Kubernetes Engine, tem de conceder a função Leitor do Artifact Registry (roles/artifactregistry.reader) à conta de serviço de tempo de execução.
    • Para a sua conta de serviço do Cloud Build, tem de conceder a função de escritor do Artifact Registry (roles/artifactregistry.writer) à conta de serviço que executa compilações.
    • Se estiver a usar o Docker ou outra ferramenta de terceiros, tem de:

Não é possível enviar uma imagem para o Artifact Registry

Experimente o seguinte:

  1. Verifique se o repositório existe. Ao contrário do Container Registry, a criação do repositório é uma operação separada do envio da primeira imagem. Se o repositório não existir, então crie-o.
  2. Verifique se o caminho completo da imagem que está a enviar é correto. O caminho tem de incluir o nome do anfitrião do registo, o ID do projeto, o repositório e a imagem. Google Cloud Por exemplo:
    us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1
      

    Cada repositório do Artifact Registry é um recurso separado, pelo que não pode enviar uma imagem para um caminho sem um repositório. Por exemplo, us-west1-docker.pkg.dev/my-project/my-image:v1 é um caminho de imagem inválido.

    Para mais informações, consulte o artigo Nomes de repositórios e imagens.

  3. Verifique se a conta que está a enviar a imagem tem autorizações para escrever no repositório. Se tiver desativado a concessão automática de funções a contas de serviço, tem de conceder funções do Artifact Registry às contas de serviço de tempo de execução.
    • Para as contas de serviço do Compute Engine, Cloud Run e Google Kubernetes Engine, tem de conceder a função de escritor do Artifact Registry (roles/artifactregistry.writer) à conta de serviço de tempo de execução.
    • Para a sua conta de serviço do Cloud Build, tem de conceder a função de escritor do Artifact Registry (roles/artifactregistry.writer) à conta de serviço que executa compilações.
  4. Se o Artifact Registry devolveu a mensagem The repository has enabled tag immutability, significa que a imutabilidade das etiquetas está configurada para o repositório. Não pode enviar uma imagem com uma etiqueta que já seja usada para outra versão da mesma imagem no repositório. Tente enviar a imagem novamente com uma etiqueta que não seja usada por outras versões armazenadas da imagem.

    Para verificar se um repositório está configurado para etiquetas de imagens imutáveis, consulte a coluna Etiquetas de imagens imutáveis na lista de repositórios na Google Cloud consola ou execute o seguinte comando:

    gcloud artifacts repositories describe REPOSITORY \
          --project=PROJECT-ID \
          --location=LOCATION
      

Mensagens ImagePullBackOff e ErrImagePull

As mensagens com ImagePullBackOff e ErrImagePull indicam que o GKE não consegue obter uma imagem do registo.