2.4. 配置容器 registry 身份验证

作为 3scale 管理员,在 OpenShift 中部署 3scale 容器镜像之前,使用 registry.redhat.io 配置身份验证。

先决条件

  • 集群管理员对 OpenShift Container Platform 集群的访问权限。
  • 已安装 OpenShift oc 客户端工具。如需了解更多详细信息,请参阅 OpenShift CLI 文档

流程

  1. 以管理员身份登录您的 OpenShift 集群:

    $ oc login -u system:admin
  2. 打开您要在其中部署 3scale 的项目:

    oc project your-openshift-project
  3. 使用您的红帽客户门户网站帐户创建一个 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
  4. 将机密链接到您的服务帐户,以使用机密拉取镜像。服务帐户名称必须与 OpenShift 容器集使用的名称匹配。这个示例使用 default 服务帐户:

    $ oc secrets link default threescale-registry-auth --for=pull
  5. 将 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 身份验证。

流程

  1. 进入 Registry Service Accounts 页面并登录。
  2. New Service Account。在 Create a New Registry Service Account 页面上填写表单。

    1. 服务帐户 添加名称。

      备注:您将在表单字段前面看到一个固定长度、随机生成的数字字符串。

  3. 输入 描述
  4. 点击 Create
  5. 切回到您的 服务帐户
  6. 您创建的 服务帐户。
  7. 记录用户名,包括前缀字符串,如 12345678|username 和您的密码。

    1. 此用户名和密码将用于登录 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 集群中:

流程

  1. 在终端会话中以集群管理员身份登录到 OpenShift:

    oc login
  2. 选择项目或创建新项目:

    oc project <project_name>
    oc new-project <project_name>
  3. 输入 oc new-app 命令:

    1. 使用您作为配置节点和权利的一部分下载的 amp.yml 文件的路径指定 --file 选项。
    2. 通过将 WILDCARD_DOMAIN 参数设置为 OpenShift 集群的域来指定 --param 选项:

      oc new-app --file /opt/amp/templates/amp.yml --param WILDCARD_DOMAIN=<WILDCARD_DOMAIN>

      终端会显示新创建的 3scale 管理门户的主和租户 URL 以及凭据。这个输出应包括以下信息:

      • master admin 用户名
      • master 密码
      • 主令牌信息
      • 租户用户名
      • 租户密码
      • 租户令牌信息
  4. 以 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'
  5. 记下这些详细信息,以备将来参考。
  6. 当命令返回时,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,执行以下步骤:

流程

  1. 下载 amp-s3.yml
  2. 从终端会话登录到 OpenShift:

    oc login
  3. 选择项目或创建新项目:

    oc project <project_name>

    或者

oc new-project <project_name>
  1. 输入 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 选项,以设置管理门户的自定义名称。如果省略,则默认为 3scale

      oc 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 密码
    • 主令牌信息
    • 租户用户名
    • 租户密码
    • 租户令牌信息
  2. 以 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'
    
    ...
  3. 记下这些详细信息,以备将来参考。
  4. 当命令返回时,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 执行以下步骤:

流程

  1. 下载 amp-postgresql.yml
  2. 从终端会话登录到 OpenShift:

    oc login
  3. 选择项目或创建新项目:

    oc project <project_name>

    或者

oc new-project <project_name>
  1. 输入 oc new-app 命令:

    • 使用 amp-postgresql.yml 文件的路径指定 --file 选项。
    • 使用以下值指定 --param 选项:
    • WILDCARD_DOMAIN : 参数设置为 OpenShift 集群的域。
    • (可选)使用 TENANT_NAME 参数指定 --param 选项,以设置管理门户的自定义名称。如果省略,则默认为 3scale

      oc 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 密码
    • 主令牌信息
    • 租户用户名
    • 租户密码
    • 租户令牌信息
  2. 以 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'
    
    ...
  3. 记下这些详细信息,以备将来参考。
  4. 当命令返回时,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 变量:

流程

  1. 如果您还没有登录,请登录到 OpenShift:

    oc login
    1. 使用 oc patch 命令,指定 system-smtpsecret 名称的 secret 类型,后跟 -p 选项,并在 JSON 中为以下变量写入新值:

      变量描述

      address

      允许您将远程邮件服务器指定为中继

      username

      指定您的邮件服务器用户名

      password

      指定您的邮件服务器密码

      domain

      指定 HELO 域

      port

      指定邮件服务器侦听新连接的端口

      身份验证

      指定邮件服务器的身份验证类型。允许的值: plain (发送明文中的密码)、login (发送密码 Base64 编码)或 cram_md5 (交换信息和加密消息目标 5 算法以散列重要信息)

      openssl.verify.mode

      指定在使用 TLS 时,OpenSSL 如何检查证书。允许的值:nonepeer

      示例

      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>"}}'
  2. 设置 secret 变量后,重新部署 system-appsystem-sidekiq pod:

    oc rollout latest dc/system-app
    oc rollout latest dc/system-sidekiq
  3. 检查推出部署的状态,以确保它已完成:

    oc rollout status dc/system-app
    oc rollout status dc/system-sidekiq