7.5. capabilities に関連するプロダクトカスタムリソース
新しく作成したテナントで Openshift Container Platform を使用し、プロダクト、それらに対応するメトリクス、メソッド、アプリケーションプラン、およびマッピングルールを設定し、プロダクトバックエンドの使用状況を定義すると共にプロダクトをテナントアカウントにリンクします。
前提条件
一般的な前提条件 に記載の条件と同じインストール要件が適用されます。ただし、以下の考慮事項に注意してください。
- 3scale アカウントから最低限必要なパラメーターは、プロダクト名です。
7.5.1. capabilities に関連するプロダクトカスタムリソースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
新しく作成したテナントで Openshift Container Platform を使用し、新規プロダクトを設定します。
7.5.1.1. 基本的なプロダクトカスタムリソースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
手順
- OpenShift アカウントで、Installed operators に移動します。
- 3scale operator をクリックします。
- 3scale Product セクションで、Create Instance をクリックします。
- YAML View を選択します。
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: <your_product_OpenShift_name> spec: name: "<your_product_name>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1"
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存するには、Create をクリックします。
OpenShift と 3scale アカウントの両方でプロダクトが作成されるまで数秒待機します。その後、以下の検証を実行できます。
-
3scale Product Overview ページで、Synced 状態が
Trueとマークされていることを確認して、プロダクトが OpenShift で作成されたことを確認します。 -
3scale アカウントに移動し、プロダクトが作成されたことを確認します。上記の例では、
OperatedProduct 1という新しいプロダクトが表示されます。
-
3scale Product Overview ページで、Synced 状態が
また、作成する各プロダクトに APIcast のデプロイメントモードを指定することもできます。以下の 2 つの方法があります。
7.5.1.2. Hosted APIcast を使用するプロダクトのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Hosted APIcast と共にプロダクトを設定します。
apiVersion: capabilities.3scale.net/v1beta1
kind: Product
metadata:
name: product1
spec:
name: "OperatedProduct 1"
deployment:
apicastHosted: {}
apiVersion: capabilities.3scale.net/v1beta1
kind: Product
metadata:
name: product1
spec:
name: "OperatedProduct 1"
deployment:
apicastHosted: {}
7.5.1.3. Self-managed APIcast を使用するプロダクトのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Self-managed APIcast と共にプロダクトを設定します。この場合、stagingPublicBaseURL および 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"
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"
+
7.5.2. プロダクトのアプリケーションプランの定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、applicationPlans オブジェクトを使用してプロダクトカスタムリソースに必要なアプリケーションプランを定義します。
以下の点について考慮してください。
-
applicationPlansマップキー名は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: 3apiVersion: 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: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3. プロダクトアプリケーションプランの制限の定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、applicationPlans.limits リストを使用してプロダクトアプリケーションプランに必要な制限を定義します。
以下の点について考慮してください。
-
period、value、およびmetricMethodRefは必須フィールドです。 -
metricMethodRef参照は、プロダクトまたはバックエンド参照のいずれかです。オプションの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: hitsapiVersion: 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: hitsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.4. プロダクトアプリケーションプランの課金ルールの定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、applicationPlans.pricingRules リストを使用してプロダクトアプリケーションプランに必要な課金ルールを定義します。
以下の点について考慮してください。
-
from、to、pricePerUnit、およびmetricMethodRefは必須フィールドです。 -
fromおよびtoは検証されます。すべてのルールで、fromの値がtoより小さい設定、および同じメトリクスで範囲が重複する設定は許されません。 -
metricMethodRef参照は、プロダクトまたはバックエンド参照のいずれかです。オプションの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: backendAapiVersion: 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: backendACopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.5. プロダクトメトリクスの定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、metrics オブジェクトを使用してプロダクトカスタムリソースに必要なメトリクスを定義します。
以下の点について考慮してください。
-
metricsマップキー名はsystem_nameとして使用されます。以下の例では、metric01およびhitsです。 -
metricsマップキー名は、すべてのメトリクスおよびメソッド間で一意である必要があります。 -
unitおよびfriendlyNameは必須フィールドです。 -
hitsメトリクスを追加しない場合は、operator によって作成されます。
手順
以下の例に示すように、新しい 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"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"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.6. プロダクトメソッドの定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、methods オブジェクトを使用してプロダクトカスタムリソースに必要なメソッドを定義します。
以下の点について考慮してください。
-
methodsマップキー名はsystem_nameとして使用されます。以下の例では、Method01とMethod02です。 -
methodsマップキー名は、すべてのメトリクスおよびメソッド間で一意である必要があります。 -
friendlyNameは必須フィールドです。
手順
以下の例のように、新しい 3scale プロダクトにメソッドを追加します。
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" methods: method01: friendlyName: Method01 method02: friendlyName: Method02apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" methods: method01: friendlyName: Method01 method02: friendlyName: Method02Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.7. プロダクトマッピングルールの定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、mappingRules オブジェクトを使用してプロダクトカスタムリソースに必要なマッピングルールを定義します。
以下の点について考慮してください。
-
httpMethod、pattern、increment、およびmetricMethodRefは必須フィールドです。 -
metricMethodRefは、既存のメトリクスまたはメソッドマップキー名system_nameへの参照を保持します。以下の例では、hitsです。
手順
以下の例に示すように、新しい 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: method01apiVersion: 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: method01Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.8. プロダクトバックエンドの使用状況の定義 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成した 3scale テナントで Openshift Container Platform を使用し、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: /BapiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" backendUsages: backendA: path: /A backendB: path: /BCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.9. プロダクトカスタムリソースのステータス リンクのコピーリンクがクリップボードにコピーされました!
status フィールドには、エンドユーザーに役立つリソース情報が表示されます。手動で更新することは意図されず、リソースの変更ごとに同期されます。
status フィールドの属性は以下のとおりです。
-
productid: 3scale プロダクトの内部 ID conditions:status.ConditionsKubernetes 共通パターンを表します。これには、以下のタイプまたは状態があります。- Failed: 同期中にエラーが発生しています。操作はリトライされます。
- Synced: プロダクトは正常に同期されています。
- Invalid: オブジェクトが無効です。これは一時的なエラーではなく、無効な使用が報告され、それを変更する必要があります。操作はリトライされません。
- Orphan: 仕様は存在しないリソースを参照しています。operator はリトライします。
-
observedGeneration: ステータス情報が最新のリソース仕様で更新されていることを確認します。 -
state: 3scale API から読み取られた 3scale プロダクトの内部状態。 -
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
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
7.5.10. テナントアカウントにリンクされたプロダクトカスタムリソース リンクのコピーリンクがクリップボードにコピーされました!
3scale operator が新しい 3scale リソースを見つけると、LookupProviderAccount プロセスは、リソースを所有するテナントを識別するために開始されます。
プロセスは、テナントのクレデンシャルソースを確認します。何も見つからない場合は、エラーが発生します。
以下の手順では、プロセスがテナントのクレデンシャルソースを検証する方法を説明します。
providerAccountRef リソース属性からのクレデンシャルを確認します。これはシークレットのローカル参照です (例: mytenant)。
apiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" providerAccountRef: name: mytenantapiVersion: capabilities.3scale.net/v1beta1 kind: Product metadata: name: product1 spec: name: "OperatedProduct 1" providerAccountRef: name: mytenantCopy to Clipboard Copied! Toggle word wrap Toggle overflow mytenant シークレットの adminURL および tokenフィールドには、テナントクレデンシャルが設定されている必要があります。以下に例を示します。
apiVersion: v1 kind: Secret metadata: name: mytenant type: Opaque stringData: adminURL: https://my3scale-admin.example.com:443 token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
apiVersion: v1 kind: Secret metadata: name: mytenant type: Opaque stringData: adminURL: https://my3scale-admin.example.com:443 token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトの 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
oc create secret generic threescale-provider-account --from-literal=adminURL=https://3scale-admin.example.com --from-literal=token=123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 3scale デプロイメントの同じ namespace にあるデフォルトのプロバイダーアカウントを確認します。3scale インストール環境がカスタムリソースと同じ namespace にある場合、operator はデフォルトの 3scale テナント (プロバイダーアカウント) に必要なクレデンシャルを自動的に収集します。