Menu Close

8.5.3. OpenAPI カスタムリソースを定義する際のインポートルール

インポートルールは、3scale デプロイメントの OpenAPI ドキュメントを設定する際に、OpenAPI Specification(OAS)が 3scale とどのように機能するかを指定します。

プロダクト名

デフォルトのプロダクトシステム名は、OpenAPI ドキュメントの info.title フィールドから取得されます。OpenAPI ドキュメントのプロダクト名を上書きするには、OpenAPI カスタムリソース(CR)の spec.productSystemName フィールドを指定します。

プライベートベース URL

プライベートベース URL は OpenAPI CR servers[0].url フィールドから読み込まれます。OpenAPI CR の spec.privateBaseURL フィールドを使用して、これを上書きできます。

3scale メソッド

インポートされた OpenAPI ドキュメントで定義される各操作は、プロダクトレベルで 1 つの 3scale メソッドに変換されます。メソッド名は、操作オブジェクトの operationId フィールドから読み取られます。

3scale のマッピングルール

インポートされた OpenAPI ドキュメントで定義される各操作は、プロダクトレベルで 1 つの 3scale マッピングルールに変換されます。以前の既存のマッピングルールは OpenAPI CR でインポートされたルールに置き換えられました。

OpenAPI ドキュメントでは、paths オブジェクトは動詞およびパターンプロパティーのマッピングルールを提供します。3scale メソッドは operationId に応じて関連付けられます。

delta の値は 1 にハードコーディングされます。

デフォルトでは、Strict マッチング ポリシーが設定されます。マッチングポリシーは、OpenAPI CRD の spec.PrefixMatching フィールドを使用して、プレフィックスマッチング に切り替えることができます。

認証

1つのトップレベルのセキュリティ要件のみがサポートされます。操作レベルのセキュリティー要件はサポートされていません。

サポートされるセキュリティースキームは apiKey です。

apiKey セキュリティースキームタイプ:

  • クレデンシャルの場所 は、セキュリティースキームオブジェクトの OpenAPI ドキュメント in フィールドから読み込まれます。
  • 認証ユーザー キーは、セキュリティースキームオブジェクトの OpenAPI ドキュメント name フィールドから読み込まれます。

以下は、apiKey セキュリティー要件のある OAS 3.0.2 の例の一部です。

openapi: "3.0.2"
security:
  - petstore_api_key: []
components:
  securitySchemes:
    petstore_api_key:
      type: apiKey
      name: api_key
      in: header

OpenAPI ドキュメントがセキュリティー要件を指定しない場合、以下が適用されます。

  • プロダクト認証が apiKey に設定されます。
  • クレデンシャルの場所 はデフォルトで 3scale の値 As query parameters (GET) or body parameters (POST/PUT/DELETE) に設定されます。
  • Auth ユーザー キーはデフォルトで 3scale の値 user_key に設定されます。

3scale 認証セキュリティー は、OpenAPI CRD の spec.privateAPIHostHeader フィールドおよび spec.privateAPISecretToken フィールドを使用して設定できます。

ActiveDocs

3scale ActiveDoc は作成されていません。

3scale プロダクトポリシーチェーン

3scale ポリシーチェーンは、3scale が作成するデフォルトのポリシーチェーンです。

3scale デプロイメントモード

デフォルトでは、設定した 3scale デプロイメントモードは APIcast 3scale により管理されます。しかし、spec.productionPublicBaseURL または spec.stagingPublicBaseURL、あるいは両方のフィールドが OpenAPI CR にある場合、プロダクトのデプロイメントモードは APIcast で自己管理されます。

カスタム公開ベース URL を持つ OpenAPI CR の例:

apiVersion: capabilities.3scale.net/v1beta1
kind: OpenAPI
metadata:
  name: openapi1
spec:
  openapiRef:
    url: "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml"
  productionPublicBaseURL: "https://production.my-gateway.example.com"
  stagingPublicBaseURL: "https://staging.my-gateway.example.com"