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"