Erreur de génération due à l'authentification pour extraction d'image
Virtual Private Cloud Infrastructure classique
Lorsqu'une génération, par exemple à partir du composant OperatorHub ou du catalogue de contenu de développeur intégré, tente d'extraire une image d'un registre Red Hat, elle peut échouer avec une erreur d'authentification similaire à celle illustrée ci-dessous :
error: build error: After retrying 2 times, Pull image still failed due to error: unauthorized: authentication required
Par défaut, votre cluster est configuré avec des secrets d'extraction d'image vers des registres Red Hat, tels que registry.redhat.io
, registry.connect.redhat.com
et cloud.openshift.com
. En outre, dans le
projet default
, votre cluster dispose de secrets d'extraction d'image pour accéder aux registres <region>.icr.io
pour IBM Cloud Container Registry.
Toutefois, si un opérateur ou un modèle intégré comporte un composant de génération qui doit extraire une image d'un registre privé, la génération peut échouer avec une erreur d'authentification car elle n'a pas accès aux secrets d'extraction d'image par défaut dans son compte de service. Par défaut, les générations ne peuvent extraire que les images stockées dans le registre interne.
Configurez la génération avec un accès à l'image, en extrayant l'image du registre privé ou en important l'image du registre privé dans le registre interne.
Pour plus d'informations, voir la documentationRed Hat OpenShift.
-
Consultez le fichier de configuration de génération afin de voir pour quel registre la génération doit disposer d'un accès pour extraction. Par exemple, si votre construction fait partie d'un modèle Red Hat OpenShift, la valeur build config
spec.strategy.sourceStrategy.from.name
fait référence au registre privéregistry.redhat.io
.oc -n openshift get template react-web-app-example -o yaml
Exemple de sortie
strategy: sourceStrategy: from: kind: DockerImage name: registry.redhat.io/rhoar-nodejs-tech-preview/rhoar-nodejs-10-webapp
-
Configurez la génération avec un accès pour extraction d'image. Vous pouvez choisir d'extraire l'image du registre privé ou d'utiliser un flux d'images à partir du registre interne.
- Extraction d'image à partir d'un registre privé :
-
Dans chaque projet, ajoutez un secret d'extraction d'image avec accès pour extraction au registre privé utilisé par la génération.
- Pour les registres Red Hat : copiez le secret
pull-secret
à partir du projetopenshift-config
. Ce secret inclut l'accès pour extraction aux registres privés suivants :cloud.openshift.com
,quay.io
,registry.connect.redhat.com
etregistry.redhat.io
. - Pour IBM Cloud Container Registry: Copiez les secrets
<region>.icr.io
à partir du projetdefault
. - Pour d'autres registres privés : créez un secret d'extraction d'image avec accès pour extraction d'image au registre privé.
- Pour les registres Red Hat : copiez le secret
-
Ajoutez le secret au compte de service de générateur ou spécifiez le secret d'extraction d'image dans le fichier de configuration de génération.
Exemple illustrant la liaison du secret au compte de service de générateur dans un projet :
oc secrets link builder <pull-secret>
Exemple illustrant la référence au secret dans le fichier de configuration de génération :
spec: output: to: kind: "DockerImage" name: "<private.registry.com>/<namespace>/<image>:<tag>" pushSecret: name: "<pull-secret>"
-
- Utilisez un flux d'images à partir du registre interne : créez un flux d'images dans le registre interne à partir d'une image importée depuis le registre privé. Ensuite, mettez à jour le fichier de configuration de génération pour faire référence au flux d'images au lieu d'extraire l'image directement à partir du registre privé.
- Extraction d'image à partir d'un registre privé :