2.9.2. 認証されたイメージレジストリーの認証情報が間違っているか、欠落している
問題
Pod が起動していません。ImageStreams に次のエラーが表示されます。
! error: Import failed (InternalError): ...unauthorized: Please login to the Red Hat Registry
原因
OpenShift 4.x に 3scale をインストールすると、ImageStreams が参照するイメージをプルできないため、OpenShift は Pod の起動に失敗します。これは、Pod が指しているレジストリーに対して認証できないために発生します。
解決方法
手順
次のコマンドを入力して、コンテナーレジストリー認証の設定を確認します。
$ oc get secret
シークレットが存在する場合は、ターミナルに次の出力が表示されます。
threescale-registry-auth kubernetes.io/dockerconfigjson 1 4m9s
- ただし、出力が表示されない場合は、次の操作を行う必要があります。
- レジストリーサービスアカウントの作成 中に以前に設定した認証情報を使用して、シークレットを作成します。
-
提供されている
oc create secret
コマンドの<your-registry-service-account-username>
および<your-registry-service-account-password>
を置き換えて、OpenShift でのレジストリー認証の設定 の手順を使用します。 APIManager リソースと同じ名前空間で
threescale-registry-auth
シークレットを生成します。<project-name>
内で次を実行する必要があります。oc project <project-name> oc create secret docker-registry threescale-registry-auth \ --docker-server=registry.redhat.io \ --docker-username="<your-registry-service-account-username>" \ --docker-password="<your-registry-service-account-password>" --docker-email="<email-address>"
APIManager リソースを削除して再作成します。
$ oc delete -f apimanager.yaml apimanager.apps.3scale.net "example-apimanager" deleted $ oc create -f apimanager.yaml apimanager.apps.3scale.net/example-apimanager created
検証
次のコマンドを入力して、デプロイのステータスが
Starting
またはReady
であることを確認します。その後、Pod が以下を生成し始めます。$ oc describe apimanager (...) Status: Deployments: Ready: apicast-staging system-memcache system-mysql system-redis zync zync-database zync-que Starting: apicast-production backend-cron backend-worker system-sidekiq system-sphinx Stopped: backend-listener backend-redis system-app
以下のコマンドを実行して、各 Pod のステータスを確認します。
$ oc get pods NAME READY STATUS RESTARTS AGE 3scale-operator-66cc6d857b-sxhgm 1/1 Running 0 17h apicast-production-1-deploy 1/1 Running 0 17m apicast-production-1-pxkqm 0/1 Pending 0 17m apicast-staging-1-dbwcw 1/1 Running 0 17m apicast-staging-1-deploy 0/1 Completed 0 17m backend-cron-1-deploy 1/1 Running 0 17m