8.12. 通过部署自定义资源来管理 3scale 开发人员

作为 3scale 管理员,您可以使用自定义资源(CR)来部署将各个开发人员用户分组在一起的开发人员帐户。通过这些帐户,您可以在开发人员门户中组织和管理开发人员对 3scale 管理的 API 的访问权限。

租户可以包含任意数量的开发人员帐户,每个开发人员帐户链接到正好一个租户。开发人员帐户可以包含任意数量的开发人员用户和每个开发人员用户链接到正好一个开发人员帐户。租户计划决定您可以创建的开发人员帐户数量以及每个开发人员帐户中可以分组多少开发人员用户。

若要使用开发人员自定义资源,3scale 操作员必须已安装 3scale。您只能在包含 3scale 操作器的命名空间中部署开发人员自定义资源。部署开发人员自定义资源是使用 3scale 管理门户或 3scale 内部 API 来管理开发人员的替代选择。

重要

通过部署自定义资源创建开发人员帐户或开发人员用户时,您无法使用管理门户或内部 3scale API 来更新这些开发人员帐户或开发人员用户。务必要注意这一点,因为在部署开发人员 CR 后,管理门户在其帐户页面中会显示新的开发人员帐户或新开发人员用户。如果您尝试使用管理门户或 API 更新使用 CR 部署的开发人员帐户或开发人员用户,3scale 操作器将还原更改以反映部署的 CR。这是预期在以后的发行版本中删除的限制。但是,您可以使用管理门户或 API 删除您通过部署 CR 创建的开发人员帐户或开发人员用户。

8.12.1. 先决条件

  • 3scale 由 3scale 操作器安装。
  • 帐户管理 API 范围内具有读写权限的访问令牌,为 3scale 提供管理员特权。

8.12.2. 通过部署 DeveloperAccount 自定义资源来管理 3scale 开发人员帐户

当使用 3scale 操作器安装 3scale 时,您可以部署 DeveloperAccountDeveloperUser 自定义资源(CR)。这些 CR 允许您创建和更新开发人员对 Developer Portal 中 3scale 管理的 API 的访问帐户。

要部署新的 DeveloperAccount CR,还必须为具有 admin 角色的用户部署 DeveloperUser CR。此处提供的步骤是部署新的 DeveloperAccount CR。部署 DeveloperAccount CR 后,更新或删除它的过程与任何其他 CR 相同。

您只能在包含 3scale Operator 的命名空间中部署 CR。

先决条件

  • 了解 3scale 操作器如何标识自定义资源链接的租户。
  • 如果您要创建一个 DeveloperAccount 自定义资源,该资源没有链接到位于同一命名空间中的 3scale 实例中的默认租户,则包含 DeveloperAccount CR 的命名空间包含一个 secret,用于标识 DeveloperAccount CR 链接的租户。secret 的名称是以下之一:

    • threescale-provider-account
    • 用户定义

    此机密包含 3scale 实例的 URL 和令牌,其中包含用于访问 3scale 实例中某一租户的凭据。

  • 您至少有一位开发人员用户的用户名、密码和电子邮件地址,该用户在新的 DeveloperAccount CR 中拥有 admin 角色。

流程

  1. 在包含 3scale 操作器的命名空间中,创建并保存资源文件,以定义一个含有开发人员帐户资源中的 admin 角色的用户用户名和密码的机密。例如,my username01.yaml 文件可能包含:

    apiVersion: v1
    kind: Secret
    metadata:
      name: myusername01
    stringData:
      password: "123456"
  2. 创建 secret.例如:

    oc create -f myusername01.yaml

    对于给定示例,输出为:

    secret/myusername01 created
  3. 创建并保存一个 .yaml 文件,为拥有 admin 角色的用户定义 DeveloperUser CR。3scale 操作器需要此 DeveloperUser CR 来部署新的 DeveloperAccount CR。例如,developeruser01.yaml 文件可能包含:

    apiVersion: capabilities.3scale.net/v1beta1
    kind: DeveloperUser
    metadata:
      name: developeruser01
    spec:
      username: myusername01
      email: myusername01@example.com
      passwordCredentialsRef:
        name: myusername01
      role: admin
      developerAccountRef:
        name: developeraccount1
      providerAccountRef:
        name: mytenant

    DeveloperUser CR 中:

    • 开发人员用户帐户名称、用户名和电子邮件必须在包含 DeveloperAccount 链接的租户中唯一。
    • 您在此指定的开发人员帐户名称必须与在此流程中 部署的 DeveloperAccount CR 的名称匹配。在创建此 DeveloperUser CR 之前或之后创建 DeveloperAccount CR 都无关紧要。
    • DeveloperUser CR 链接的租户必须是与指定的 DeveloperAccount CR 链接相同的租户。
  4. 创建您刚刚定义的资源。例如:

    oc create -f developeruser01.yaml

    对于给定示例,输出为:

    developeruser.capabilities.3scale.net/developeruser01 created
  5. 创建并保存定义 DeveloperAccount CR 的 .yaml 文件。在这个 .yaml 文件中,spec.OrgName 字段必须指定一个机构名称。例如,developeraccount01.yaml 文件可能包含:

    apiVersion: capabilities.3scale.net/v1beta1
    kind: DeveloperAccount
    metadata:
      name: developeraccount01
    spec:
      orgName: Ecorp
      providerAccountRef:
        name: mytenant
  6. 创建您刚刚定义的资源。例如:

    oc create -f developeraccount01.yaml

    对于给定示例,输出为:

    developeraccount.capabilities.3scale.net/developeraccount01 created

后续步骤

3scale 操作器需要几秒钟时间才能更新 3scale 配置来反映新的或更新的自定义资源。要检查 Operator 是否成功传播自定义资源信息,请检查 DeveloperAccount 自定义资源 status 字段或运行 oc wait 命令,例如:

oc wait --for=condition=Ready --timeout=30s developeraccount/developeraccount1

如果失败,自定义资源的 status 字段指示错误是临时还是永久性的,并提供有助于解决问题的错误消息。

通知任何新的开发人员用户,他们可以登录开发人员门户。您可能还需要传达其登录凭据。

您可以像更新或删除任何其他自定义资源一样更新或删除部署的 DeveloperAccount 自定义资源。但是,当删除 DeveloperAccount CR 时,3scale 操作器不会实际将其删除。如果您尝试部署一个新的 DeveloperAccount CR,其名称与您删除的 DeveloperAccount CR 的名称相同,您会收到一条消息:具有该名称的 DeveloperAccount CR 已存在。您必须为新的 DeveloperAccount CR 指定不同的名称。

8.12.3. 通过部署 DeveloperUser 自定义资源来管理 3scale 开发人员用户

当使用 3scale 操作器安装 3scale 时,您可以部署 DeveloperUser 自定义资源(CR)来管理开发人员对 Developer Portal 中 3scale 管理的 API 的访问。此处提供的步骤是部署新的 DeveloperUser CR。部署 DeveloperUser CR 后,更新或删除它的过程与任何其他 CR 相同。

您只能在包含 3scale Operator 的命名空间中部署 CR。

先决条件

  • 了解 3scale 操作器如何标识自定义资源链接的租户。
  • 至少一个部署的 DeveloperAccount 自定义资源包含至少一个部署的 DeveloperUser CR,用于具有 admin 角色的用户。如果您要创建一个 DeveloperUser 自定义资源,该资源没有链接到同一命名空间中的 3scale 实例中的默认租户,则包含 DeveloperUser CR 的命名空间包含一个 secret,用于标识 DeveloperUser CR 链接的租户。secret 的名称是以下之一:

    • threescale-provider-account
    • 用户定义

    此机密包含 3scale 实例的 URL 和令牌,其中包含用于访问 3scale 实例中某一租户的凭据。

  • 对于新的 DeveloperUser 自定义资源,您有该开发人员的用户名、密码和电子邮件地址。

流程

  1. 在包含 3scale 操作器的命名空间中,创建并保存一个资源文件,以定义一个包含开发人员用户的用户名和密码的 secret。例如,myusername02.yaml 文件可能包含:

    apiVersion: v1
    kind: Secret
    metadata:
      name: myusername02
    stringData:
      password: "987654321"
  2. 创建 secret.例如:

    oc create -f myusername02.yaml

    对于给定示例,输出为:

    secret/myusername02 created
  3. 创建并保存定义 DeveloperUser CR 的一个 .yaml 文件。在 spec.role 字段中,指定 adminmember。例如,developeruser02.yaml 文件可能包含:

    apiVersion: capabilities.3scale.net/v1beta1
    kind: DeveloperUser
    metadata:
      name: developeruser02
    spec:
      username: myusername02
      email: myusername02@example.com
      passwordCredentialsRef:
        name: myusername02
      role: member
      developerAccountRef:
        name: developeraccount1
      providerAccountRef:
        name: mytenant

    DeveloperUser CR 中:

    • 开发人员用户名(在 metadata.name 字段中指定),用户名和电子邮件必须在包含 DeveloperAccount 链接的租户中唯一。
    • developerAccountRef 字段必须指定已部署的 DeveloperAccount CR 的名称。
    • DeveloperUser CR 链接的租户必须是与指定的 DeveloperAccount CR 链接相同的租户。
  4. 创建您刚刚定义的资源。例如:

    oc create -f developefuser02.yaml

    对于给定示例,输出为:

    developeruser.capabilities.3scale.net/developeruser02 created

后续步骤

3scale 操作器需要几秒钟时间才能更新 3scale 配置来反映新的或更新的自定义资源。要检查 Operator 是否成功传播自定义资源信息,请检查 DeveloperUser 自定义资源 status 字段或运行 oc wait 命令,例如:

oc wait --for=condition=Ready --timeout=30s developeruser/developeruser02

如果失败,自定义资源的 status 字段指示错误是临时还是永久性的,并提供有助于解决问题的错误消息。

通知任何新的开发人员用户,他们可以登录开发人员门户。您可能还需要传达其登录凭据。

您可以像更新或删除任何其他自定义资源一样更新或删除部署的 DeveloperUser 自定义资源。但是,当删除 DeveloperUser CR 时,3scale 操作器不会实际将其删除。如果您尝试部署具有与您删除的 DeveloperUser CR 相同的帐户名称、用户名或电子邮件的新 DeveloperUser CR,您会收到 DeveloperUser CR 已存在的消息。您必须为新的 DeveloperUser CR 指定不同的开发人员用户帐户名称、用户名或电子邮件。