8장. 서비스 검색
3scale에서 제공하는 서비스 검색 기능을 사용하면 OpenShift에서 서비스를 가져올 수 있습니다.
8.1. 서비스 검색 정보 링크 복사링크가 클립보드에 복사되었습니다!
Service Discovery를 사용하면 동일한 OpenShift 클러스터에서 실행 중인 검색 가능한 API 서비스를 검색하고 관련 API 정의를 3scale로 자동으로 가져올 수 있습니다.
API 통합 및 Open API 사양을 언제든지 업데이트하여 나중에 클러스터와 동기화 할 수 있습니다.
Service Discovery는 다음과 같은 기능을 제공합니다.
- 클러스터 API를 사용하여 검색에 적절하게 주석이 추가된 서비스를 쿼리합니다.
- 클러스터 내부의 내부 엔드포인트를 사용하여 서비스에 액세스하도록 3scale을 구성합니다.
- 서비스와 관련된 OpenAPI 사양인 3scale ActiveDocs를 가져옵니다.
- OpenShift 및 RH SSO(Red Hat Single Sign-On) 권한 부여 흐름을 지원합니다.
- Fuse 버전 7.2부터 Red Hat Fuse와 함께 작동합니다.
검색 가능한 서비스를 가져올 때 해당 네임스페이스를 속하는 프로젝트 내에 유지합니다. 가져온 서비스는 새로운 고객용 API, 제품 및 해당 내부 API, 백엔드가 됩니다.
- 온프레미스 3scale의 경우 3scale API 공급자에 자체 네임스페이스 및 서비스가 있을 수 있습니다. 검색된 서비스는 기존 3scale 및 네이티브 서비스와 함께 존재할 수 있습니다.
- Fuse 검색 가능한 서비스는 Fuse 프로덕션 네임스페이스에 배포됩니다.
8.1.1. 검색 가능한 서비스에 대한 기준 링크 복사링크가 클립보드에 복사되었습니다!
3scale이 OpenShift 클러스터에서 API를 찾으려면 API가 아래 각 요소에 대한 기준을 충족해야 합니다.
content-Type
헤더
API 사양의 Content-Type
헤더는 다음 값 중 하나여야 합니다.
-
application/swagger+json
-
application/vnd.oai.openapi+json
-
application/json
OpenShift Service 오브젝트 YAML 정의
OpenShift Service 오브젝트 YAML 정의에는 다음 메타데이터가 포함되어야 합니다.
-
discovery.3scale.net
레이블: (필수) "true"로 설정합니다. 3scale은 검색이 필요한 모든 서비스를 찾기 위해 선택기 정의를 실행할 때 이 레이블을 사용합니다. 다음 주석:
discovery.3scale.net/discovery-version
: (선택 사항) 3scale 검색 프로세스의 버전입니다.discovery.3scale.net/scheme
: (필수) 서비스가 호스팅되는 URL의 체계 부분입니다. 가능한 값은 "http" 또는 "https"입니다.discovery.3scale.net/port
: (필수) 클러스터 내의 서비스의 포트 번호입니다.discovery.3scale.net/path
: (선택 사항) 서비스가 호스팅되는 URL의 상대 기본 경로입니다. 루트에 경로가 "/"에 있을 때 이 주석을 생략할 수 있습니다.discovery.3scale.net/description-path
: 서비스에 대한 OpenAPI 서비스 설명 문서의 경로입니다.예를 들어 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리 권한이 있는 OpenShift 사용자인 경우 OpenShift Console에서 API 서비스의 YAML 파일을 볼 수 있습니다.
- 애플리케이션> 서비스 을 선택합니다.
-
서비스를 선택합니다(예:
i-task-api
)를 선택하여 세부 정보 페이지를 엽니다. - 작업> YAML 편집 을 선택하여 YAML 파일을 엽니다.
- 보기를 완료하면 취소 를 선택합니다.
-
ovs-networkpolicy
플러그인이 있는 클러스터
-
OpenShift와 3scale 프로젝트 간 트래픽을 허용하려면
ovs-networkpolicy
플러그인이 있는 클러스터에 애플리케이션 프로젝트 내에서 NetworkPolicy 오브젝트가 필요합니다. - NetworkPolicy 오브젝트 구성에 대한 자세한 내용은 네트워크 정책정보를 참조하십시오.