8.8. 与功能相关的后端自定义资源
在新创建的租户中使用 Openshift Container Platform,您将配置后端、对应的指标、方法和映射规则。您还将了解 backend 自定义资源的状态,以及如何将后端链接到租户帐户。
前提条件
常规先决条件 中列出的安装要求与以下事项相同:
- 3scale 帐户中所需的最小参数是管理门户 URL 地址和访问令牌。
8.8.1. 部署与功能相关的后端自定义资源
在新创建的租户中使用 Openshift Container Platform,您将配置一个新的后端。
流程
- 在 OpenShift 帐户中,导航到 Installed operator。
- 单击 3scale 操作器。
- 在 3scale Backend 下,点 Create Instance。
- 选择 YAML 视图。
创建指向特定 3scale Admin URL 地址的 3scale 后端:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: <your_backend_OpenShift_name> spec: name: "<your_backend_name>" privateBaseURL: "<your_admin_portal_URL>"
例如:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: backend-1 spec: name: "My Backend Name" privateBaseURL: "https://api.example.com"
- 要保存您的更改,请点击 Create。
等待几秒钟,以在 OpenShift 和 3scale 帐户中创建后端。然后,您可以执行以下操作:
-
在 3scale Backend Overview 页面中检查 Synced 条件标记为
True
,确认 OpenShift 中已创建了后端。 -
进入 3scale 帐户,您会看到已创建了后端。在上例中,您将看到一个名为
My Backend Name
的新后端。
-
在 3scale Backend Overview 页面中检查 Synced 条件标记为
8.8.2. 定义后端指标
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,在后端自定义资源中定义所需的后端指标。
考虑以下观察:
-
metrics
映射键名称将用作system_name
。在以下示例中:metric01
、metric02
和hits
。 -
在所有指标和方法中,指标
metrics
键名称都必须是唯一的。 -
unit
和friendlyName
是必填字段。 -
如果没有添加
hits
指标,Operator 将创建这个指标。
流程
在新的 3scale 后端中添加后端指标,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: backend-1 spec: name: "My Backend Name" privateBaseURL: "https://api.example.com" metrics: metric01: friendlyName: Metric01 unit: "1" metric02: friendlyName: Metric02 unit: "1" hits: description: Number of API hits friendlyName: Hits unit: "hit
8.8.3. 定义后端方法
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,在后端自定义资源中定义所需的后端方法。
考虑以下观察:
-
映射键名称的
methods
将用作system_name
。在以下示例中:Method01
和Method02
。 -
在所有指标和方法中,
methods
映射键名称必须是唯一的。 -
friendlyName
是一个必填字段。
流程
在新的 3scale 后端中添加后端方法,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: backend-1 spec: name: "My Backend Name" privateBaseURL: "https://api.example.com" methods: method01: friendlyName: Method01 method02: friendlyName: Method02
8.8.4. 定义后端映射规则
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,在后端自定义资源中定义所需的后端映射规则。
考虑以下观察:
-
httpMethod
,pattern
,increment
和metricMethodRef
是必填字段。 -
metricMethodRef
包含对现有指标或方法映射键名称system_name
的引用。在以下示例中,hits
。
流程
将后端映射规则添加到新的 3scale 后端,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: backend-1 spec: name: "My Backend Name" privateBaseURL: "https://api.example.com" mappingRules: - httpMethod: GET pattern: "/pets" increment: 1 metricMethodRef: hits - httpMethod: GET pattern: "/pets/id" increment: 1 metricMethodRef: hits metrics: hits: description: Number of API hits friendlyName: Hits unit: "hit"
8.8.5. backend 自定义资源的状态
status 字段显示对最终用户有用的资源信息。它不应手动更新,在每次资源更改时都会同步。
这些是 status 字段的属性:
-
backendId
:3scale 后端的内部标识符。 Conditions
:代表status.Conditions
Kubernetes 通用模式。它有这些类型或状态:-
Invalid: 不支持在
BackendSpec
中配置的组合。这不是临时错误,但表示在进行进度前必须修复的状态。 - Synced :后端已成功同步。
- Failed :同步过程中发生了错误。
-
Invalid: 不支持在
-
observedGeneration
:这是一个帮助字段,用于确认状态信息已更新为最新的资源规格。
同步资源示例:
status: backendId: 59978 conditions: - lastTransitionTime: "2020-06-22T10:50:33Z" status: "False" type: Failed - lastTransitionTime: "2020-06-22T10:50:33Z" status: "False" type: Invalid - lastTransitionTime: "2020-06-22T10:50:33Z" status: "True" type: Synced observedGeneration: 2
8.8.6. 链接到租户帐户的后端自定义资源
当 3scale 操作器找到新的 3scale 资源时,LookupProviderAccount 进程从识别拥有该资源的租户开始。
进程检查租户凭据来源。如果未找到,则引发错误。
以下步骤描述了进程如何验证租户凭证源:
检查 providerAccountRef resource 属性中的凭据。这是一个 secret 本地引用,例如 mytenant:
apiVersion: capabilities.3scale.net/v1beta1 kind: Backend metadata: name: backend-1 spec: name: "My Backend Name" privateBaseURL: "https://api.example.com" providerAccountRef: name: mytenant
mytenant secret 必须具有填充租户凭据的 adminURL 和 token 字段。例如:
apiVersion: v1 kind: Secret metadata: name: mytenant type: Opaque stringData: adminURL: https://my3scale-admin.example.com:443 token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
检查默认的 threescale-provider-account 机密。例如:
adminURL=https://3scale-admin.example.com
和token=123456
:oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456
- 在 3scale 部署的相同命名空间中检查默认供应商账户:如果 3scale 安装位于与自定义资源相同的命名空间中,Operator 将自动为默认的 3scale 租户(provider 帐户)收集所需的凭证。
8.8.7. 删除后端自定义资源
您可以通过删除管理它的后端
自定义资源 (CR) 来删除后端实体。当您删除一个 后端
CR 时,3scale operator 会更新部署的 Product
CR,该 CR 引用已删除的后端。更新在这些属性中:
-
backendUsages
-
applicationPlans
这些属性不再引用已删除的后端。
删除后端
CR 定义的唯一方法是按照此处所述的步骤进行操作。不要使用 Admin Portal 或 3scale API 来删除部署为自定义资源的后端。
前提条件
3scale 管理员权限或具有删除命名空间中具有删除权限的 OpenShift 角色,其中包含您要删除的
后端
CR。要识别谁可以删除特定的后端
自定义资源,请运行oc policy who-can delete
命令。例如,如果 CR 中的名称是mybackend
,则运行这个命令:oc policy who-can delete product.capabilities.3scale.net/mybackend
-
要删除至有效租户的
后端
CR 的链接。
流程
运行
oc delete
命令删除后端
自定义资源。例如,如果您部署了mybackend.yaml
文件中定义的后端
,则可运行以下命令:oc delete -f mybackend.yaml
或者,您可以运行
oc delete
命令并指定其定义中指定的后端名称。例如:oc delete backend.capabilities.3scale.net/mybackend