Warum tritt bei mir ein Buildfehler aufgrund einer fehlgeschlagenen Authentifizierung bei einer Image-Pull-Operation auf?

Virtuelle private Cloud Klassische Infrastruktur

Wenn ein Build (wie z. B. von OperatorHub oder des integrierten Entwicklerinhaltskatalogs) versucht, ein Image aus einer Red Hat-Registry zu extrahieren, schlägt die Erstellung möglicherweise mit einem Authentifizierungsfehler wie in folgender Nachricht fehl.

error: build error: After retrying 2 times, Pull image still failed due to error: unauthorized: authentication required

Standardmäßig wird Ihr Cluster mit geheimen Schlüsseln für Image-Pull-Operationen für Red Hat-Registrys wie registry.redhat.io, registry.connect.redhat.com und cloud.openshift.com eingerichtet. Außerdem verfügt Ihr Cluster im default-Projekt über geheime Schlüssel für Image-Pull-Operationen, um auf die <region>.icr.io-Registrys für IBM Cloud Container Registry zuzugreifen.

Wenn jedoch ein Operator oder eine integrierte Vorlage über eine Buildkomponente verfügt, die ein Image aus einer privaten Registry extrahieren muss, kann der Build mit einem Authentifizierungsfehler fehlschlagen, weil der Build keinen Zugriff auf die standardmäßig verwendeten geheimen Schlüssel für Image-Pull-Operationen in seinem Servicekonto hat. Builds können standardmäßig Images extrahieren, die nur in der internen Registry gespeichert sind.

Richten Sie den Build mit Zugriff auf das Image ein - entweder indem Sie das Image aus der privaten Registry extrahieren oder indem Sie das Image aus der privaten Registry in die interne Registry importieren.

Weitere Informationen finden Sie in der Red Hat OpenShift-Dokumentation.

  1. Ermitteln Sie anhand der Buildkonfigurationsdatei, auf welche Registry der Build zugreifen soll. Wenn Ihr Build beispielsweise Teil einer „ Red Hat OpenShift “-Vorlage ist, verweist der Wert „ spec.strategy.sourceStrategy.from.name “ in der Build-Konfiguration auf die private Registry unter registry.redhat.io.

    oc -n openshift get template react-web-app-example -o yaml
    

    Beispielausgabe

    strategy:
      sourceStrategy:
        from:
          kind: DockerImage
          name: registry.redhat.io/rhoar-nodejs-tech-preview/rhoar-nodejs-10-webapp
    
  2. Richten Sie den Build mit Image-Pull-Zugriff ein. Sie können auswählen, ob Sie das Image aus der privaten Registry extrahieren oder einen Image-Stream aus der internen Registry verwenden möchten.