Por que ocorre um erro em minha construção devido à autenticação de extração de imagem?
Nuvem privada virtual Infraestrutura clássica
Quando uma construção, como do Operator Hub ou do catálogo de conteúdo do desenvolvedor integrado, tenta extrair uma imagem de um registro do Red Hat, a construção pode falhar com um erro de autenticação semelhante ao seguinte.
error: build error: After retrying 2 times, Pull image still failed due to error: unauthorized: authentication required
Por padrão, seu cluster é configurado com segredos de extração de imagem para registros do Red Hat, como registry.redhat.io, registry.connect.redhat.com e cloud.openshift.com. Além disso, no projeto default,
seu cluster tem segredos de extração de imagem para acessar os registros <region>.icr.io para o IBM Cloud Container Registry.
No entanto, se um operador ou um modelo integrado tiver um componente de construção que deva fazer extração de uma imagem de um registro privado, a construção poderá falhar com um erro de autenticação porque a construção não terá acesso aos segredos de extração de imagem padrão em sua conta do serviço. Por padrão, as construções podem extrair imagens que são armazenadas somente no registro interno.
Configure a construção com acesso à imagem, extraindo a imagem do registro privado ou importando a imagem do registro privado para o registro interno.
Para obter mais informações, consulte o Red Hat OpenShift documentação.
-
Verifique o arquivo de configuração de construção para ver a qual registro a construção precisa de acesso de extração. Por exemplo, se sua compilação fizer parte de um modelo do Red Hat OpenShift, o valor
spec.strategy.sourceStrategy.from.namena configuração da compilação se refere ao registro privadoregistry.redhat.io.oc -n openshift get template react-web-app-example -o yamlSaída de exemplo
strategy: sourceStrategy: from: kind: DockerImage name: registry.redhat.io/rhoar-nodejs-tech-preview/rhoar-nodejs-10-webapp -
Configure a construção com acesso de extração de imagem. É possível escolher entre extrair a imagem do registro privado ou usar um fluxo de imagem do registro interno.
- Extrair imagem de um registro privado:
-
Em cada projeto, inclua um segredo de extração de imagem com acesso de extração ao registro privado que a construção usa.
- Para registros do Red Hat: copie o segredo
pull-secretdo projetoopenshift-config. Esse segredo inclui o acesso de extração aos registros privados a seguir:cloud.openshift.com,quay.io,registry.connect.redhat.comeregistry.redhat.io. - Para o IBM Cloud Container Registry: Copie os segredos
<region>.icr.iopor meio do projetodefault. - Para outros registros privados: crie um segredo de extração de imagem com acesso de extração de imagem ao registro privado.
- Para registros do Red Hat: copie o segredo
-
Inclua o segredo para a conta do serviço do construtor ou especifique o segredo de extração de imagem no arquivo de configuração de construção.
Exemplo para vincular o segredo à conta do serviço do construtor em um projeto.
oc secrets link builder <pull-secret>Exemplo para referir-se ao segredo no arquivo de configuração de construção.
spec: output: to: kind: "DockerImage" name: "<private.registry.com>/<namespace>/<image>:<tag>" pushSecret: name: "<pull-secret>"
-
- Use um fluxo de imagem por meio do registro interno: Crie um fluxo de imagem no registro interno por meio de uma imagem importada do registro privado. Em seguida, atualize o arquivo de configuração de construção para referir-se ao fluxo de imagem em vez de extrair a imagem diretamente do registro privado.
- Extrair imagem de um registro privado: