8.6.3. OpenAPI 사용자 정의 리소스를 정의할 때 규칙 가져오기
가져오기 규칙은 3scale 배포에 대한 OpenAPI 문서를 설정할 때 OAS(OpenAPI Specification)가 3scale에서 작동하는 방식을 지정합니다.
제품 이름
기본 제품 시스템 이름은 OpenAPI 문서의 info.title 필드에서 가져옵니다. OpenAPI 문서의 제품 이름을 재정의하려면 OpenAPI CR(사용자 정의 리소스)에서 spec.productSystemName 필드를 지정합니다.
개인 기본 URL
개인 기본 URL은 OpenAPI CR servers[0].url 필드에서 읽습니다. OpenAPI CR의 spec.privateBaseURL 필드를 사용하여 이 작업을 덮어쓸 수 있습니다.
3scale 방법
가져온 OpenAPI 문서에 정의된 각 작업은 제품 수준에서 하나의 3scale 메서드로 변환됩니다. 메서드 이름은 작업 오브젝트의 operationId 필드에서 읽습니다.
3scale 매핑 규칙
가져온 OpenAPI 문서에 정의된 각 작업은 제품 수준에서 하나의 3scale 매핑 규칙으로 변환됩니다. 이전의 기존 매핑 규칙은 OpenAPI CR로 가져온 규칙으로 대체되었습니다.
OpenAPI 문서에서 paths 오브젝트는 동사 및 패턴 속성에 대한 매핑 규칙을 제공합니다. 3scale 메서드는 이에 따라 operationId 에 연결됩니다.
delta 값은 1 로 하드 코딩됩니다.
기본적으로 Strict 일치하는 정책이 구성됩니다. OpenAPI CRD의 spec.PrefixMatching 필드를 사용하여 일치 정책을 Prefix 일치 로 전환할 수 있습니다.
인증
최상위 수준의 보안 요구 사항이 하나만 지원됩니다. 운영 수준 보안 요구 사항은 지원되지 않습니다.
지원되는 보안 스키마는 apiKey 입니다.
apiKey 보안 스키마 유형:
-
자격 증명 위치는 보안 체계 오브젝트 필드의 OpenAPI
문서에서읽습니다. -
인증 사용자 키는 보안 스키마 개체의 OpenAPI 문서
이름필드에서 읽습니다.
다음은 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에 대해 구성됩니다. -
자격 증명 위치는
쿼리 매개 변수(GET) 또는 본문 매개 변수(POST/PUT/DELETE)로 기본 설정됩니다. -
Auth 사용자 키의 기본값은 3scale 값
user_key입니다.
3scale 인증 보안은 spec.privateAPIHostHeader 및 OpenAPI CRD의 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"