2.4. 配置容器 registry 身份验证
作为 3scale 管理员,在 OpenShift 中部署 3scale 容器镜像之前,使用 registry.redhat.io
配置身份验证。
先决条件
- 集群管理员对 OpenShift Container Platform 集群的访问权限。
-
已安装 OpenShift
oc
客户端工具。如需了解更多详细信息,请参阅 OpenShift CLI 文档。
流程
以管理员身份登录您的 OpenShift 集群:
$ oc login -u system:admin
打开您要在其中部署 3scale 的项目:
oc project your-openshift-project
使用您的红帽客户门户网站帐户创建一个
docker-registry
secret,将threescale-registry-auth
替换为要创建的 secret:$ oc create secret docker-registry threescale-registry-auth \ --docker-server=registry.redhat.io \ --docker-username=CUSTOMER_PORTAL_USERNAME \ --docker-password=CUSTOMER_PORTAL_PASSWORD \ --docker-email=EMAIL_ADDRESS
您将看到以下输出:
secret/threescale-registry-auth created
将机密链接到您的服务帐户,以使用机密拉取镜像。服务帐户名称必须与 OpenShift 容器集使用的名称匹配。这个示例使用
default
服务帐户:$ oc secrets link default threescale-registry-auth --for=pull
将 secret 链接到
builder
服务帐户,以使用 secret 推送和拉取构建镜像:$ oc secrets link builder threescale-registry-auth
其它资源
有关向容器镜像进行身份验证的更多详情:
2.4.1. 创建 registry 服务帐户
要在 OpenShift 上部署的 3scale 2.11 共享环境中使用来自 registry.redhat.io
的容器镜像,您必须使用 Registry Service 帐户而不是单独的用户的 客户门户网站凭证。
这是一个 3scale 2.8 或更高选项的要求,您可以按照以下步骤操作,然后再使用模板或在 OpenShift 上部署,因为这两种选项都使用 registry 身份验证。
流程
- 进入 Registry Service Accounts 页面并登录。
点 New Service Account。在 Create a New Registry Service Account 页面上填写表单。
为 服务帐户 添加名称。
备注:您将在表单字段前面看到一个固定长度、随机生成的数字字符串。
- 输入 描述。
- 点击 Create。
- 切回到您的 服务帐户。
- 点 您创建的 服务帐户。
记录用户名,包括前缀字符串,如 12345678|username 和您的密码。
此用户名和密码将用于登录
registry.redhat.io
。注意Token Information 页面中提供了相应的选项卡,用于显示如何使用身份验证令牌。例如,Token Information 选项卡显示用户名 12345678|username,及其下面的密码字符串。
2.4.2. 修改 registry 服务帐户
可以修改或删除服务帐户。这可从 Registry Service Account 页面,使用表中每个身份验证令牌右侧的弹出菜单。
重新生成或删除服务帐户会影响使用令牌进行身份验证并从 registry.redhat.io
检索内容的系统。
每个功能的描述如下:
重新生成令牌:允许授权用户重置与服务帐户关联的 密码。
备注:服务帐户的用户名不能更改。
- 更新描述:允许授权用户更新服务帐户的描述。
- 删除帐户:允许授权用户删除服务帐户。
2.4.3. 导入 3scale 模板
从 3scale 2.6 开始,通配符路由已被删除。
- 这个功能由 Zync 在后台处理。
- 创建、更新或删除 API 提供程序时,路由会自动反映这些更改。
执行以下步骤将 3scale 模板导入到 OpenShift 集群中:
流程
在终端会话中以集群管理员身份登录到 OpenShift:
oc login
选择项目或创建新项目:
oc project <project_name>
oc new-project <project_name>
输入
oc new-app
命令:-
使用您作为配置节点和权利的一部分下载的 amp.yml 文件的路径指定
--file
选项。 通过将
WILDCARD_DOMAIN
参数设置为 OpenShift 集群的域来指定--param
选项:oc new-app --file /opt/amp/templates/amp.yml --param WILDCARD_DOMAIN=<WILDCARD_DOMAIN>
终端会显示新创建的 3scale 管理门户的主和租户 URL 以及凭据。这个输出应包括以下信息:
- master admin 用户名
- master 密码
- 主令牌信息
- 租户用户名
- 租户密码
- 租户令牌信息
-
使用您作为配置节点和权利的一部分下载的 amp.yml 文件的路径指定
以 admin/xXxXyz123 身份登录 https://user-admin.3scale-project.example.com。
* With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com'
- 记下这些详细信息,以备将来参考。
当命令返回时,OpenShift 上的 3scale 部署成功:
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注意当 OpenShift 上的 3scale 部署成功时,您的登录凭据将正常工作。
2.4.4. 获取管理门户 URL
当使用模板部署 3scale 时,会创建一个带有固定 URL 的默认租户:3scale-admin.${wildcardDomain}
3scale 控制面板显示租户的新门户 URL。例如,如果 <wildCardDomain> 是 3scale-project.example.com
,则管理门户 URL 为 :https://3scale-admin.3scale-project.example.com
。
wildcardDomain
是您在安装过程中提供的 <wildCardDomain> 参数。使用这个命令在浏览器中打开这个唯一 URL:
xdg-open https://3scale-admin.3scale-project.example.com
另外,您还可以在 MASTER 门户 URL 上创建新的租户:master.${wildcardDomain}
2.4.5. 使用 Amazon Simple Storage Service 部署 3scale
使用 Amazon Simple Storage Service(Amazon S3)部署 3scale 是一个可选流程。通过 Amazon S3 部署 3scale,执行以下步骤:
流程
- 下载 amp-s3.yml。
从终端会话登录到 OpenShift:
oc login
选择项目或创建新项目:
oc project <project_name>
或者
oc new-project <project_name>
输入 oc new-app 命令:
-
使用 amp-s3.yml 文件的路径指定
--file
选项。 使用以下值指定
--param
选项:-
WILDCARD_DOMAIN
: 参数设置为 OpenShift 集群的域。 -
AWS_BUCKET
: 带有您的目标存储桶名称。 -
AWS_ACCESS_KEY_ID
: 您的 AWS 凭证 ID。 -
AWS_SECRET_ACCESS_KEY
: 您的 AWS 凭证 KEY。 -
AWS_REGION: with the AWS
: 您的存储桶的区域。 -
AWS_HOSTNAME
:默认:Amazon 端点 - AWS S3 兼容供应商端点主机名。 -
AWS_PROTOCOL
:默认:HTTPS - AWS S3 兼容供应商端点协议。 -
AWS_PATH_STYLE
:默认:false
- 当设置为true
时,存储桶名称始终保留在请求 URI 中,并且永远不会作为子域移到主机。
-
(可选)使用
TENANT_NAME
参数指定--param
选项,以设置管理门户的自定义名称。如果省略,则默认为 3scaleoc new-app --file /path/to/amp-s3.yml \ --param WILDCARD_DOMAIN=<a-domain-that-resolves-to-your-ocp-cluster.com> \ --param TENANT_NAME=3scale \ --param AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \ --param AWS_SECRET_ACCESS_KEY=<your-aws-access-key-secret> \ --param AWS_BUCKET=<your-target-bucket-name> \ --param AWS_REGION=<your-aws-bucket-region> \ --param FILE_UPLOAD_STORAGE=s3
终端会显示 master 和租户 URL,以及新创建的 3scale 管理门户的凭据。这个输出应包括以下信息:
- master admin 用户名
- master 密码
- 主令牌信息
- 租户用户名
- 租户密码
- 租户令牌信息
-
使用 amp-s3.yml 文件的路径指定
以 admin/xXxXyz123 身份登录 https://user-admin.3scale-project.example.com。
... * With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user ... * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated ... --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com' Access your application via route 'apicast-wildcard.3scale-project.example.com' ...
- 记下这些详细信息,以备将来参考。
当命令返回时,OpenShift 上的 3scale 部署成功:
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注意当 OpenShift 上的 3scale 部署成功时,您的登录凭据将正常工作。
2.4.6. 使用 PostgreSQL 部署 3scale
使用 PostgreSQL 部署 3scale 是一个可选过程。使用 PostgreSQL 部署 3scale 执行以下步骤:
流程
- 下载 amp-postgresql.yml。
从终端会话登录到 OpenShift:
oc login
选择项目或创建新项目:
oc project <project_name>
或者
oc new-project <project_name>
输入 oc new-app 命令:
-
使用 amp-postgresql.yml 文件的路径指定
--file
选项。 -
使用以下值指定
--param
选项: -
WILDCARD_DOMAIN
: 参数设置为 OpenShift 集群的域。 (可选)使用
TENANT_NAME
参数指定--param
选项,以设置管理门户的自定义名称。如果省略,则默认为 3scaleoc new-app --file /path/to/amp-postgresql.yml \ --param WILDCARD_DOMAIN=<a-domain-that-resolves-to-your-ocp-cluster.com> \ --param TENANT_NAME=3scale \
终端会显示 master 和租户 URL,以及新创建的 3scale 管理门户的凭据。这个输出应包括以下信息:
- master admin 用户名
- master 密码
- 主令牌信息
- 租户用户名
- 租户密码
- 租户令牌信息
-
使用 amp-postgresql.yml 文件的路径指定
以 admin/xXxXyz123 身份登录 https://user-admin.3scale-project.example.com。
... * With parameters: * ADMIN_PASSWORD=xXxXyz123 # generated * ADMIN_USERNAME=admin * TENANT_NAME=user ... * MASTER_NAME=master * MASTER_USER=master * MASTER_PASSWORD=xXxXyz123 # generated ... --> Success Access your application via route 'user-admin.3scale-project.example.com' Access your application via route 'master-admin.3scale-project.example.com' Access your application via route 'backend-user.3scale-project.example.com' Access your application via route 'user.3scale-project.example.com' Access your application via route 'api-user-apicast-staging.3scale-project.example.com' Access your application via route 'api-user-apicast-production.3scale-project.example.com' Access your application via route 'apicast-wildcard.3scale-project.example.com' ...
- 记下这些详细信息,以备将来参考。
当命令返回时,OpenShift 上的 3scale 部署成功:
oc wait --for=condition=available --timeout=-1s $(oc get dc --output=name)
注意当 OpenShift 上的 3scale 部署成功时,您的登录和凭据将正常工作。
2.4.7. 配置 SMTP 变量(可选)
OpenShift 使用电子邮件发送通知并邀请新用户。如果要使用这些功能,则必须提供自己的 SMTP 服务器并在 system-smtp
机密中配置 SMTP 变量。
执行以下步骤在 system-smtp
secret 中配置 SMTP 变量:
流程
如果您还没有登录,请登录到 OpenShift:
oc login
使用
oc patch
命令,指定system-smtp
是secret
名称的 secret 类型,后跟-p
选项,并在 JSON 中为以下变量写入新值:变量 描述 address
允许您将远程邮件服务器指定为中继
username
指定您的邮件服务器用户名
password
指定您的邮件服务器密码
domain
指定 HELO 域
port
指定邮件服务器侦听新连接的端口
身份验证
指定邮件服务器的身份验证类型。允许的值:
plain
(发送明文中的密码)、login
(发送密码 Base64 编码)或cram_md5
(交换信息和加密消息目标 5 算法以散列重要信息)openssl.verify.mode
指定在使用 TLS 时,OpenSSL 如何检查证书。允许的值:
none
或peer
。示例
oc patch secret system-smtp -p '{"stringData":{"address":"<your_address>"}}' oc patch secret system-smtp -p '{"stringData":{"username":"<your_username>"}}' oc patch secret system-smtp -p '{"stringData":{"password":"<your_password>"}}'
设置 secret 变量后,重新部署
system-app
和system-sidekiq
pod:oc rollout latest dc/system-app oc rollout latest dc/system-sidekiq
检查推出部署的状态,以确保它已完成:
oc rollout status dc/system-app oc rollout status dc/system-sidekiq