6장. Fuse의 정책 확장을 사용하여 3scale API Management 메시지 콘텐츠 변환


Red Hat Fuse를 사용하여 Red Hat 3scale API Management를 위한 매우 유연한 정책 확장을 생성할 수 있습니다. OpenShift의 Fuse에 정책 확장을 생성한 다음 3scale 관리 포털에서 정책 확장을 정책으로 구성할 수 있습니다. APIcast Camel 프록시 정책을 사용하면 요청 및 응답 메시지 콘텐츠(예: Apache Camel 통합 프레임워크에서 구현된 XML~JSON)에서 복잡한 변환을 수행할 수 있습니다.

또한 정적 APIcast 컨테이너 이미지를 다시 빌드하고 재배포하는 대신 Camel에서 동적으로 사용자 지정 정책 확장을 추가하거나 수정할 수 있습니다. Camel DSL(Domain Specific Language)로 작성된 Camel Enterprise Integration Pattern(EIP)을 사용하여 APIcast 정책 확장을 구현할 수 있습니다. 이를 통해 Java 또는 XML과 같은 친숙한 프로그래밍 언어를 사용하여 정책 확장을 작성할 수 있습니다. 이 항목의 예제에서는 Camel Netty4 HTTP 구성 요소를 사용하여 Java에서 HTTP 프록시를 구현합니다.

참고

3scale API 백엔드에서 Fuse Camel 애플리케이션을 이미 사용하고 있는 경우에는 이 기능이 필요하지 않습니다. 이 경우 기존 Fuse Camel 애플리케이션을 사용하여 변환을 수행할 수 있습니다.

필수 소프트웨어 구성 요소

동일한 OpenShift 클러스터에 다음과 같은 Red Hat Integration 구성 요소가 배포되어 있어야 합니다.

  • OpenShift 7.10의 Fuse.
  • 3scale 온-프레미스 2.15.
  • APIcast 내장(기본 스테이징 및 프로덕션) 또는 APIcast 자체 관리.

3scale이 아닌 다른 OpenShift 프로젝트에 사용자 지정 Fuse 정책을 배포할 수 있지만 필수는 아닙니다. 그러나 두 프로젝트 간 통신이 가능한지 확인해야 합니다. 자세한 내용은 OpenShift SDN을 사용하여 네트워크 정책 구성을 참조하십시오.

6.1. Fuse의 Apache Camel 변환과 APIcast 통합

OpenShift의 Fuse에서 Apache Camel 애플리케이션으로 작성된 변환과 APIcast를 통합할 수 있습니다. 정책 확장 변환을 3scale에 구성하고 배포하면 3scale 트래픽이 Camel 정책 확장을 통해 메시지 콘텐츠를 변환합니다. 이 경우 Camel은 역방향 HTTP 프록시로 작동합니다. 여기서 APIcast는 3scale 트래픽을 Camel로 전송하고 Camel은 트래픽을 API 백엔드로 보냅니다.

이 항목의 예제에서는 Camel Netty4 HTTP 구성 요소를 사용하여 HTTP 프록시를 생성합니다.

  • HTTP 프록시 프로토콜을 통해 수신된 요청은 HTTP 본문이 대문자로 변환된 상태로 대상 서비스로 전달됩니다.
  • 대상 서비스의 응답은 대문자로 변환한 다음 클라이언트로 반환하여 처리됩니다.
  • 이 예에서는 HTTP 및 HTTPS 사용 사례에 필요한 구성을 보여줍니다.

사전 요구 사항

  • OpenShift 7.10 및 3scale 2.15의 Fuse가 동일한 OpenShift 클러스터에 배포되어 있어야 합니다. 설치 세부 정보는 다음을 참조하십시오.

  • OpenShift 및 3scale에 Fuse를 설치하고 프로젝트를 생성하려면 클러스터 관리자 권한이 있어야 합니다. 그러나 배포 구성을 생성하거나 pod를 배포하거나 프로젝트당 액세스 권한을 편집하여 서비스를 생성할 수 있습니다.

프로세스

  1. Camel netty4-http 구성 요소를 사용하여 HTTP 프록시를 구현하여 Java에 Apache Camel 애플리케이션을 작성합니다. 그런 다음 Camel 구성 요소를 사용하여 메시지를 변환할 수 있습니다.

    다음 간단한 예제에서는 서비스에서 요청 및 응답을 대문자 변환을 수행합니다.

    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.util.Locale;
    
    import org.apache.camel.Exchange;
    import org.apache.camel.Message;
    import org.apache.camel.builder.RouteBuilder;
    import org.apache.camel.model.RouteDefinition;
    
    public class ProxyRoute extends RouteBuilder {
    
        @Override
        public void configure() throws Exception {
            final RouteDefinition from;
            if (Files.exists(keystorePath())) {
                from = from("netty4-http:proxy://0.0.0.0:8443?ssl=true&keyStoreFile=/tls/keystore.jks&passphrase=changeit&trustStoreFile=/tls/keystore.jks"); 
    1
    
            } else {
                from = from("netty4-http:proxy://0.0.0.0:8080");
            }
    
            from
                .process(ProxyRoute::uppercase)
                .toD("netty4-http:"
                    + "${headers." + Exchange.HTTP_SCHEME + "}://" 
    2
    
                    + "${headers." + Exchange.HTTP_HOST + "}:"
                    + "${headers." + Exchange.HTTP_PORT + "}"
                    + "${headers." + Exchange.HTTP_PATH + "}")
                .process(ProxyRoute::uppercase);
        }
    
        Path keystorePath() {
            return Path.of("/tls", "keystore.jks");
        }
    
        public static void uppercase(final Exchange exchange) { 
    3
    
            final Message message = exchange.getIn();
            final String body = message.getBody(String.class);
            message.setBody(body.toUpperCase(Locale.US));
        }
    
    }
    Copy to Clipboard Toggle word wrap
    1
    이 간단한 예에서 Java 키 저장소 파일이 /tls/keystore.jks 에 마운트된 경우 수신 포트가 8443 으로 설정됩니다.
    2
    Camel 프록시 정책이 3scale에서 호출되면 3scale의 백엔드 API에 대해 구성된 값에 따라 HTTP_SCHEME,HTTP_HOST,HTTP_PORTHTTP_PATH 헤더의 값이 자동으로 설정됩니다.
    3
    이 간단한 예제에서는 메시지 콘텐츠를 대문자로 변환합니다. Camel Enterprise Integration Patterns를 사용하여 요청 및 응답 메시지 콘텐츠(예: XML에서 JSON으로)에 대해 더 복잡한 변환을 수행할 수 있습니다.
  2. OpenShift에 Camel 애플리케이션을 배포하고 서비스로 노출합니다. 자세한 내용은 OpenShift에서 Fuse에서 애플리케이션 생성 및 배포를 참조하십시오.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat