2.2. 配置对经过身份验证的 registry 的支持
作为 3scale 2.6 发行版本的一部分,容器镜像已从 registry.access.redhat.com
迁移到 registry.redhat.io
中的经过身份验证的 registry。按照以下步骤准备现有的 3scale 基础架构,以支持新的经过身份验证的 registry:
在新的 Red Hat 身份验证 registry 中创建凭证,位于
registry.redhat.io
中。-
创建名为 Registry Service Account 的 Registry Token。此 registry 令牌应该在 3scale 平台中用于进行
registry.redhat.io
进行身份验证。 - 有关如何创建凭证的详情,请参阅 Red Hat Container Registry Authentication。
-
创建名为 Registry Service Account 的 Registry Token。此 registry 令牌应该在 3scale 平台中用于进行
当一个 Registry Service Account 可用时,在部署 3scale 基础架构的 OpenShift 项目中创建一个新 secret:
- 进入到 Red Hat Service Accounts 面板来获取 OpenShift secret 定义。
- 选择用于 3scale 基础架构的 Registry Service Account。
- 选择 OpenShift Secret 选项卡,再点下载 secret 链接。
从 Red Hat Service Accounts 面板下载 OpenShift secret 后,修改 YAML 文件的 metadata 部分中的 name 字段,将现有名称替换为
threescale-registry-auth
名称。secret 类似于以下内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并在当前部署的 3scale 2.5 的 OpenShift 项目中创建 secret:
oc create -f the-secret-name.yml
$ oc create -f the-secret-name.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 secret 后,您可以检查其是否存在。以下命令返回一个包含内容的 secret:
oc get secret threescale-registry-auth
$ oc get secret threescale-registry-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用 3scale
-registry-auth
secret 的amp
服务帐户。要做到这一点,使用以下内容创建文件amp-sa.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署
amp
服务帐户:oc create -f amp-sa.yml
$ oc create -f amp-sa.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保已正确创建了
amp
服务帐户。以下命令会返回创建的服务帐户,其内容为 3scale-registry-auth
,作为 imagePullSecrets 部分中的一个元素之一:oc get sa amp -o yaml
$ oc get sa amp -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在应用到现有 3scale 项目的默认服务帐户后,验证权限是否复制到新的
amp
服务帐户。如果在服务账户身份验证模式下配置了服务发现,请按照 在没有 OAuth 服务器的情况下配置 中的说明,为
system:serviceaccount:<3scale-project>:default
用户授予 cluster-role view 权限,相同的权限现在需要应用到system:serviceaccount:<3scale-project>:amp
:oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
$ oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更新所有现有 DeploymentConfig 以使用新的
amp
服务帐户:THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database"
$ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database" for component in ${THREESCALE_DC_NAMES}; do oc patch dc $component --patch '{"spec":{"template": {"spec": {"serviceAccountName": "amp"}}}}' ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令的输出包含这些行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上一命令还会重新部署所有 3scale 现有 DeploymentConfig,从而触发它们的重启。
当 DeploymentConfig 被重启时,您可能会观察其状态中的更改。等待所有 DeploymentConfig 都为 Ready。
您可以通过输入以下命令来检查 DeploymentConfig 的状态,并验证每个 DeploymentConfig 的状态是否为 Desired 和 Current 列的值相同,并不是零:
oc get dc
$ oc get dc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
另外,验证所有 pod 都处于 Running 状态,并且所有 pod 都是 Ready。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令检查所有 DeploymentConfig 是否设置了
amp
服务帐户:for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
$ for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 由于上一命令,可以看到在以前设置 THREESCALE_DC_NAMES 环境变量中定义的元素数多次重复执行以下行:
serviceAccountName: amp
serviceAccountName: amp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 此时,DeploymentConfigurations 已准备好使用红帽经过身份验证的 registry 镜像。