2.9.2. 经过身份验证的用户 registry 的错误或缺少凭证
问题
Pod 没有启动。镜像流显示以下错误:
! error: Import failed (InternalError): ...unauthorized: Please login to the Red Hat Registry
原因
在 OpenShift 4.x 上安装 3scale 时,OpenShift 无法启动 pod,因为 ImageStreams 无法拉取它们引用的镜像。这是因为 pod 无法针对它们所指向的 registry 进行身份验证。
解决方案
流程
键入以下命令以验证容器 registry 身份验证的配置:
$ oc get secret
如果 secret 存在,您会在终端中看到以下输出:
threescale-registry-auth kubernetes.io/dockerconfigjson 1 4m9s
- 但是,如果没有看到输出结果,您必须执行以下操作:
- 在创建 registry 服务帐户时,使用之前设置的凭证来创建您的 secret。
-
使用在 OpenShift 中配置 registry 身份验证的步骤,替换
oc create secret
命令中的<your-registry-service-account-username>
and<your-registry-service-account-password>
。 在与 APIManager 资源相同的命名空间中生成
threescale-registry-auth
secret。您必须在<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