Resolver problemas de imagem do contêiner

Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você se deparar com problemas para gerenciar imagens de contêiner no Artifact Registry.

Não é possível extrair uma imagem ou implantar em um ambiente de execução do Google Cloud

Verifique se:

  1. Verifique se o caminho completo da imagem que você está enviando está correto. O o caminho precisa incluir o nome do host do registro, o ID do projeto do Google Cloud, o repositório e imagem. Exemplo:

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    Para mais informações, consulte Nomes de repositório e imagem.

  2. Verifique se a conta que está extraindo a imagem tem permissões para ler do repositório.

    • A conta de serviço padrão do Cloud Build tem permissões de leitura e gravação para repositórios no mesmo projeto do Google Cloud. Se você estiver usando um conta de serviço fornecida pelo usuário ou envio e extração de imagens projetos, conceda o papel Gravador do Artifact Registry ao serviço que executa builds.
    • Por padrão, o Compute Engine, o Cloud Run e o Google Kubernetes Engine têm permissões de leitura para repositórios no mesmo projeto. Se o Artifact Registry estiver em um projeto diferente do ambiente de execução, conceda o papel "Leitor do Artifact Registry" à conta de serviço do ambiente de execução.
    • Se você estiver usando o Docker ou outra ferramenta de terceiros, faça o seguinte:

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

Verifique se:

  1. Verifique se o repositório existe. Ao contrário do Container Registry, o repositório criação é uma operação separada do envio da primeira imagem. Se o repositório não existir, crie um.

  2. Verifique se o caminho completo da imagem que você está enviando está correto. O caminho precisa incluir o nome do host do registro, o ID do projeto do Google Cloud, o repositório e a imagem. Exemplo:

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

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

    Para mais informações, consulte Nomes de repositório e imagem.

  3. Verifique se a conta que está enviando a imagem tem permissões para gravar no repositório.

    • A conta de serviço padrão do Cloud Build tem permissões de leitura e gravação para repositórios no mesmo projeto do Google Cloud. Se você estiver usando um conta de serviço fornecida pelo usuário ou envio e extração de imagens projetos, conceda o papel Gravador do Artifact Registry ao serviço que executa builds.
    • Por padrão, o Compute Engine, o Cloud Run e o Google Kubernetes Engine leem permissões para repositórios no mesmo projeto. Se você estiver usando um de terceiros nesses ambientes para enviar imagens, é preciso conceda o papel de Gravador do Artifact Registry à conta de serviço do ambiente de execução.
  4. Se o Artifact Registry retornar a mensagem The repository has enabled tag immutability, a imutabilidade da tag será configurada para o repositório. Não é possível enviar uma imagem com uma tag que já está em uso para outra versão da mesma imagem no repositório. Tente empurrar o imagem novamente com uma tag que não seja usada por outras versões armazenadas do imagem.

    Para confirmar se um repositório está configurado para tags de imagem imutáveis, consulte coluna Tags de imagem imutáveis na lista de repositórios em Console do Google Cloud ou execute o seguinte comando:

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

Mensagens ImagePullBackOff e ErrImagePull

Mensagens com ImagePullBackOff e ErrImagePull indicam que uma imagem não pode ser extraída do registro pelo GKE.