Resolver problemas de imagem do contêiner

Saiba mais sobre as etapas de solução de problemas que podem ser úteis se você tiver problemas ao 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 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
    

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

  2. Verifique se a conta que está extraindo a imagem tem permissões para ler 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 uma conta de serviço fornecida pelo usuário ou enviando e extraindo imagens entre projetos, conceda o papel Gravador do Artifact Registry à conta de serviço que executa as versões.
    • 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, você precisará conceder o papel de leitor do Artifact Registry à conta de serviço de ambiente de execução.
    • Se você estiver usando o Docker ou outra ferramenta de terceiros, será preciso:

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, a criação do repositório é uma operação separada do envio da primeira imagem. Se o repositório não existir, crie-o.

  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órios e imagens.

  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 uma conta de serviço fornecida pelo usuário ou enviando e extraindo imagens entre projetos, conceda o papel Gravador do Artifact Registry à conta de serviço que executa as versões.
    • 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 você estiver usando uma ferramenta de terceiros nesses ambientes para enviar imagens, será necessário conceder o papel de Gravador do Artifact Registry à conta de serviço de 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á esteja sendo usada para outra versão da mesma imagem no repositório. Tente enviar a imagem novamente com uma tag que não seja usada por outras versões armazenadas da imagem.

    Para verificar se o repositório está configurado para tags de imagem imutáveis, verifique a coluna Tags de imagem imutáveis na lista de repositórios no console do Google Cloud ou execute o seguinte comando:

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

Mensagens de ImagePullBackOff e ErrImagePull

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