6.5. 与功能相关的产品自定义资源
在新创建的租户中使用 Openshift Container Platform,您将配置产品及其对应的指标、方法、应用程序计划和映射规则,并且定义产品后端使用情况,并将您的产品链接到您的租户帐户。
先决条件
般先决条件 中列出的安装要求与以下注意事项相同:
- 3scale 帐户中的最低必要参数是产品名称。
6.5.1. 部署与功能相关的产品自定义资源
在新创建的租户中使用 Openshift Container Platform,您将配置新产品。
6.5.1.1. 部署基本产品自定义资源
步骤
- 在 OpenShift 帐户中,导航到 Installed operator。
- 单击 3scale 操作器。
- 在 3scale 产品 下,单击 Create Instance。
- 选择 YAML 视图。
创建 3scale 产品:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: <your_product_OpenShift_name> spec: name: "<your_product_name>"
例如:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1"
- 要保存您的更改,请点击 Create。
等待几秒钟,让产品在 OpenShift 和 3scale 帐户中创建。然后,您可以执行以下操作:
-
在 3scale 产品概述 页面中检查 Synced 条件标记为
True
,以确认该产品已在 OpenShift 中创建。 -
转至 3scale 帐户,您会看到该产品已创建好。在上例中,您将看到一个名为 Operated
Product 1
的新产品。
-
在 3scale 产品概述 页面中检查 Synced 条件标记为
另外,您可以为您创建的每个产品指定 APIcast 部署模式。有两种替代方案:
6.5.1.2. 使用 APIcast 托管部署产品
使用托管 APIcast 配置您的产品:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" deployment: apicastHosted: {}
6.5.1.3. 使用 APIcast 自助管理部署产品
使用 APIcast 自我管理配置您的产品。在这种情况下,指定一个 stagePublicBaseURL
和 productionPublicBaseURL
:
+
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" deployment: apicastSelfManaged: stagingPublicBaseURL: "https://staging.api.example.com" productionPublicBaseURL: "https://production.api.example.com"
+
6.5.2. 定义产品应用程序计划
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,使用 applicationPlans
对象在您的产品自定义资源中定义所需的应用计划。
请考虑以下观察:
-
applicationPlans
map 键名称将用作system_name
。在以下示例中:plan01
和plan02
。
步骤
在新的 3scale 产品中添加应用程序计划,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" applicationPlans: plan01: name: "My Plan 01" setupFee: "14.56" plan02: name: "My Plan 02" trialPeriod: 3 costMonth: 3
6.5.3. 为产品应用程序计划定义限制
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,通过使用 applicationPlans.limits
列表为您的产品应用计划定义所需的限制。
考虑以下观察:
-
period
、value
和metricMethodRef
是必填字段。 -
metricMethodRef
引用可以是产品,也可以是后端引用。使用可选的backend
字段来引用 backend 指标的所有者。
步骤
为 3scale 产品的应用程序计划定义限值,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" metrics: hits: description: Number of API hits friendlyName: Hits unit: "hit" applicationPlans: plan01: name: "My Plan 01" limits: - period: month value: 300 metricMethodRef: systemName: hits backend: backendA - period: week value: 100 metricMethodRef: systemName: hits
6.5.4. 定义产品应用程序计划的定价规则
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,通过使用 applicationPlans.pricingRules
列表为您的产品应用程序计划定义所需的定价规则。
考虑以下观察:
-
price
PerUnit
和metricMethodRef
是必填字段。 -
将
验证来自
和 的。对于任何规则,不允许使用 的值(从
小于 到 )以及
同一指标的重叠范围。 -
metricMethodRef
引用可以是产品,也可以是后端引用。使用可选的backend
字段来引用 backend 指标的所有者。
步骤
为 3scale 产品的应用计划定义定价规则,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" metrics: hits: description: Number of API hits friendlyName: Hits unit: "hit" applicationPlans: plan01: name: "My Plan 01" pricingRules: - from: 1 to: 100 pricePerUnit: "15.45" metricMethodRef: systemName: hits - from: 1 to: 300 pricePerUnit: "15.45" metricMethodRef: systemName: hits backend: backendA
6.5.5. 定义产品指标
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,使用 metrics
对象在产品自定义资源中定义所需的指标。
考虑以下观察:
-
指标
映射键名称将用作system_name
。在以下示例中:metric01
和hits
。 -
在所有指标和方法中,指标
映射
键名称都必须是唯一的。 -
单元
和friendlyName
是必填字段。 -
如果没有添加
hits
指标,它将由操作器创建。
步骤
在新的 3scale 后端中添加产品指标,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" metrics: metric01: friendlyName: Metric01 unit: "1" hits: description: Number of API hits friendlyName: Hits unit: "hit"
6.5.6. 定义产品方法
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,使用 method 对象在产品自定义资源中定义所需的 方法
。
考虑以下观察:
-
映射键名称
的方法
将用作system_name
。在以下示例中:Method01
和Method02.
-
在所有指标和方法中,
方法
映射键名称必须是唯一的。 -
friendlyName
是一个必填字段。
步骤
在新的 3scale 产品中添加方法,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" methods: method01: friendlyName: Method01 method02: friendlyName: Method02
6.5.7. 定义产品映射规则
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,使用 mappingRules
对象在产品自定义资源中定义所需的映射规则。
考虑以下观察:
-
httpMethod
、mode、in
c
rement 和metricMethodRef
是必填字段。 -
metricMethodRef
包含对现有指标或方法映射键名称system_name
的引用。在以下示例中,按s键
。
步骤
将产品映射规则添加到新的 3scale 后端,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" metrics: hits: description: Number of API hits friendlyName: Hits unit: "hit" methods: method01: friendlyName: Method01 mappingRules: - httpMethod: GET pattern: "/pets" increment: 1 metricMethodRef: hits - httpMethod: GET pattern: "/cars" increment: 1 metricMethodRef: method01
6.5.8. 定义产品后端使用情况
将 Openshift Container Platform 与新创建的 3scale 租户一起使用,通过应用 backendUsages
对象来定义所需的后端以声明方式添加到产品中。
考虑以下观察:
-
path
是必填字段。 -
backendUsages
映射密钥名称引用后端的system_name
。在以下示例中:backendA
和backendB
。
步骤
在产品中添加后端以声明性地定义其使用情况,如下例所示:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" backendUsages: backendA: path: /A backendB: path: /B
6.5.9. 产品自定义资源的状态
status 字段显示对最终用户有用的资源信息。它不应手动更新,在每次资源更改时都会同步。
这些是 status 字段的属性:
-
productId
:3scale 产品的内部标识符。 条件
:表示status.Conditions
Kubernetes 通用模式。它有这些类型或状态:- 失败 :同步过程中出现错误。操作将重试。
- 同步 :产品已成功同步。
- 无效 :无效的对象。这不是临时错误,但它报告无效规格,应该进行更改。Operator 不会重试。
- 孤立 :该规范引用了不存在的资源。操作器将重试。
-
observedGeneration
:确认状态信息已使用最新的资源规格更新。 -
State
:3scale 产品内部状态从 3scale API 中读取。 -
providerAccountHost
:将后端同步到的 3scale 提供程序帐户 URL。
同步资源示例:
status: conditions: - lastTransitionTime: "2020-10-21T18:07:01Z" status: "False" type: Failed - lastTransitionTime: "2020-10-21T18:06:54Z" status: "False" type: Invalid - lastTransitionTime: "2020-10-21T18:07:01Z" status: "False" type: Orphan - lastTransitionTime: "2020-10-21T18:07:01Z" status: "True" type: Synced observedGeneration: 1 productId: 2555417872138 providerAccountHost: https://3scale-admin.example.com state: incomplete
6.5.10. 链接到租户帐户的产品自定义资源
当 3scale 操作器找到新的 3scale 资源时,LookupProviderAccount 进程从识别拥有该资源的租户开始。
进程检查租户凭据来源。如果未找到,则引发错误。
以下步骤描述了进程如何验证租户凭证源:
检查 providerAccountRef resource 属性中的凭据。这是一个 secret 本地引用,例如 mytenant:
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" providerAccountRef: name: mytenant
mytenant secret 必须具有填充租户凭据的 adminURL 和 令牌 字段。例如:
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 帐户)收集所需的凭证。