5장. 3scale 검색을 위한 API 서비스 준비

Red Hat 3scale API Management는 공용 인터넷의 API 서비스에 대한 액세스를 규제할 수 있는 Red Hat의 서비스입니다. 3scale 기능에는 SLA(서비스 수준 계약)를 적용하고, API 버전을 관리하고, 보안 및 인증 서비스를 제공하는 기능이 포함됩니다. Fuse는 3scale의 서비스 검색 기능을 지원하므로 3scale 관리 포털 UI에서 Fuse 서비스를 쉽게 검색할 수 있습니다. 서비스 검색을 사용하면 동일한 OpenShift 클러스터에서 실행 중인 Fuse 애플리케이션을 스캔하고 관련 API 정의를 3scale로 자동으로 가져올 수 있습니다.

사전 요구 사항

  • API 서비스를 제공하는 Fuse 애플리케이션이 OpenShift에서 배포 및 실행됩니다.
  • Fuse 애플리케이션에는 3scale에서 검색할 수 있도록 필요한 주석이 포함되어 있습니다.

    참고

    API Cryostat에서 생성된 Fuse 프로젝트는 필수 주석을 자동으로 제공하도록 사전 구성됩니다.

    API Cryostat에서 생성되지 않는 Fuse 프로젝트의 경우 API Cryostat에서 생성되지 않는 Fuse 프로젝트에 대한 주석 추가에 설명된 대로 프로젝트를 구성해야 합니다.

  • 3scale API Management 시스템은 검색할 API 서비스와 동일한 OpenShift 클러스터에 배포됩니다.

3scale에서 API 서비스를 검색하는 절차에 대한 자세한 내용은 Red Hat 3scale API Management 관리 포털 가이드의 서비스 검색 섹션을 참조하십시오.

5.1. API Cryostat에서 생성되지 않은 Fuse 프로젝트에 대한 주석 추가

3scale이 API 서비스를 검색하려면 API 서비스를 제공하는 Fuse 애플리케이션에는 검색할 수 있도록 Kubernetes Service Annotations가 포함되어야 합니다. 이러한 주석은 OpenShift Maven 플러그인의 일부인 Service Discovery Enricher에서 제공합니다.

Apache Camel Rest DSL 프로젝트의 경우 OpenShift Maven 플러그인은 기본적으로 Service Discovery Enricher를 실행합니다.

API Cryostat에서 생성된 Fuse 프로젝트는 필요한 주석을 자동으로 제공하도록 사전 구성됩니다.

절차

API Splunk에서 생성되지 않는 Fuse Rest DSL 프로젝트의 경우 다음과 같이 프로젝트를 구성합니다.

  1. 다음 예와 같이 Fuse 프로젝트의 pom.xml 파일을 편집하여 openshift-maven-plugin 종속성을 포함합니다.

    <plugin>
            <groupId>org.jboss.redhat-fuse</groupId>
            <artifactId>openshift-maven-plugin</artifactId>
            <version>${fuse.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>resource</goal>
                  <goal>build</goal>
                </goals>
              </execution>
            </executions>
      </plugin>

    OpenShift Maven 플러그인은 특정 프로젝트 수준 조건이 충족되면 Service Discovery Enricher를 실행합니다(예: 프로젝트가 Camel Rest DSL 프로젝트여야 함). 향상된 동작을 사용자 정의하려는 경우( API 서비스 주석 값 사용자 지정에 설명된 대로) pom.xml 파일의 종속성으로 Service Discovery Enricher를 지정할 필요가 없습니다.

  2. Fuse Rest DSL 프로젝트의 camel-context.xml 파일에서 restConfiguration 요소에 다음 속성을 지정합니다.

    • scheme: 서비스가 호스팅되는 URL의 스키마 부분입니다. "http" 또는 "https"를 지정할 수 있습니다.
    • contextPath: API 서비스가 호스팅되는 URL의 경로 부분입니다.
    • apiContextPath: API 서비스 설명 문서가 호스팅되는 위치 경로입니다. 문서가 자체 호스팅되는 경우 상대 경로 또는 문서가 외부적으로 호스팅되는 경우 전체 URL을 지정할 수 있습니다.

      예제 camel-context.xml 파일의 다음 발췌 내용은 restConfiguration 요소의 주석 특성 값을 보여줍니다.

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="
             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
             http://camel.apache.org/schema/spring       http://camel.apache.org/schema/spring/camel-spring.xsd">
      
          <camelContext xmlns="http://camel.apache.org/schema/spring">
              <restConfiguration component="servlet" scheme="https"
                    contextPath="myapi" apiContextPath="myapi/openapi.json"/>
      ...

번영자는 이러한 restConfiguration 요소 속성 값에서 제공하는 정보를 사용하여 discovery.3scale.net/scheme,discovery.3scale.net/path, discovery.3scale.net/description-path 주석에 대한 값을 생성하므로 Red Hat 3scale API 관리 포털의 서비스 검색 섹션을 확인하는 데 설명된 대로 프로젝트의 배포된 OpenShift 서비스를 3scale 로 검색할 수 있습니다.

보강자는 다음 레이블 및 주석을 추가하여 3scale에서 서비스를 검색할 수 있도록 합니다.

  • discovery.3scale.net 레이블: 기본적으로 richer는 이 값을 "true"로 설정합니다. 3scale은 선택기 정의를 실행하여 검색이 필요한 모든 서비스를 찾을 때 이 레이블을 사용합니다.
  • 다음 주석입니다.

    • discovery.3scale.net/discovery-version: (선택 사항) 3scale 검색 프로세스의 버전입니다. richer는 이 값을 기본적으로 "v1"로 설정합니다.
    • discovery.3scale.net/scheme: 서비스가 호스팅되는 URL의 스키마 부분입니다. restConfiguration 요소의 scheme 속성에서 재정의하지 않는 한 기본 "http"를 사용합니다. 다른 가능한 값은 "https"입니다.
    • discovery.3scale.net/path: 서비스가 호스팅되는 URL의 경로 부분입니다. 경로가 루트 "/"에 있을 때 이 주석은 생략됩니다. 번영자는 restConfiguration 요소의 path 속성에서 이 값을 가져옵니다.
    • discovery.3scale.net/port: 서비스의 포트입니다. 보강자는 표시되는 서비스의 포트 번호를 포함하는 Kubernetes 서비스 정의에서 이 값을 가져옵니다. Kubernetes 서비스 정의가 두 개 이상의 서비스를 노출하는 경우 보강자는 나열된 첫 번째 포트를 사용합니다.
    • discovery.3scale.net/description-path: (선택 사항) OpenAPI 서비스 설명 문서의 경로입니다. richer는 restConfiguration 요소의 contextPath 특성에서 이 값을 가져옵니다.

API 서비스 주석 값 사용자 지정 에 설명된 대로 Service Discovery Enricher의 동작을 사용자 지정할 수 있습니다.