IBM Cloud Docs
イメージのプル認証が原因でビルド・エラーが発生するのはなぜですか?

イメージのプル認証が原因でビルド・エラーが発生するのはなぜですか?

仮想プライベート・クラウド クラシック・インフラストラクチャー

Operator Hub や組み込みの開発者コンテンツ・カタログなどから取得したビルドが、Red Hat レジストリーからイメージをプルしようとすると、以下のような認証エラーが発生してビルドが失敗することがあります。

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

デフォルトでは、Red Hat レジストリーに対するイメージ・プル・シークレット (registry.redhat.ioregistry.connect.redhat.comcloud.openshift.com など) を使用してクラスターがセットアップされます。 さらに、default プロジェクトには、IBM Cloud Container Registry の <region>.icr.io レジストリーにアクセスするためのイメージ・プル・シークレットがクラスターにあります。

しかし、オペレーターまたは組み込みのテンプレートに、プライベート・レジストリーからイメージをプルする必要があるビルド・コンポーネントが含まれている場合は、認証エラーが発生してビルドが失敗することがあります。そのビルドは、サービス・アカウントにあるデフォルトのイメージ・プル・シークレットにアクセスできないためです。 デフォルトでは、ビルドは、内部レジストリーに保管されているイメージのみをプルできます。

プライベート・レジストリーからイメージをプルするか、プライベート・レジストリーから内部レジストリーにイメージをインポートすることによって、ビルドがイメージにアクセスできるようにセットアップします。

詳しくは、 Red Hat OpenShift 資料を参照してください。

  1. ビルド構成ファイルを確認して、ビルドからのプル・アクセスの対象となっているレジストリーを調べます。 例えば、あなたのビルドが Red Hat OpenShift テンプレートの一部である場合、ビルド設定 spec.strategy.sourceStrategy.from.name の値は、 registry.redhat.io プライベートレジストリを参照する。

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

    出力例

    strategy:
      sourceStrategy:
        from:
          kind: DockerImage
          name: registry.redhat.io/rhoar-nodejs-tech-preview/rhoar-nodejs-10-webapp
    
  2. イメージ・プル・アクセス権限を設定したビルドをセットアップします。 プライベート・レジストリーからイメージをプルするか、または内部レジストリーからイメージ・ストリームを使用するかのいずれかを選択できます。