6.2. OpenShift의 Fuse에서 Apache Camel을 사용하여 생성된 APIcast 정책 확장 구성

OpenShift에서 Fuse를 사용하여 Apache Camel 변환을 구현한 후에는 3scale 관리 포털을 사용하여 APIcast 정책 체인에서 정책 확장으로 구성할 수 있습니다.

정책 확장을 사용하면 Camel HTTP 프록시를 사용하도록 3scale 제품을 구성할 수 있습니다. 이 서비스는 HTTP 프록시를 통해 3scale 트래픽을 전송하여 타사 프록시에서 요청 응답 수정을 수행하는 데 사용됩니다. 이 경우 타사 프록시는 OpenShift에서 Fuse를 사용하여 구현된 Apache Camel입니다. TLS를 사용하여 안전하게 Camel HTTP 프록시 서비스에 연결하도록 APIcast를 구성할 수도 있습니다.

참고

정책 확장 코드는 OpenShift의 Fuse의 Apache Camel 애플리케이션에서 구현되며 3scale에서 수정하거나 삭제할 수 없습니다.

사전 요구 사항

절차

  1. 3scale 관리 포털에서 Integration > Policies 를 선택합니다.
  2. POLICIES > Add policy > Camel Service 를 선택합니다.
  3. 적절한 필드에서 Camel HTTP 프록시 서비스에 연결하는 데 사용되는 OpenShift 경로를 입력합니다.

    • https_proxy: http 프로토콜 및 TLS 포트를 사용하여 Camel HTTP 프록시에 연결합니다. 예를 들면 다음과 같습니다.

      http://camel-proxy.my-3scale-management-project.svc:8443
    • http_proxy: http 프로토콜 및 포트를 사용하여 Camel HTTP 프록시에 연결합니다. 예를 들면 다음과 같습니다.

      http://camel-proxy.my-3scale-management-project.svc:8080
    • all_proxy: 프로토콜을 지정하지 않은 경우 http 프로토콜 및 포트를 사용하여 Camel HTTP 프록시에 연결합니다. 예를 들면 다음과 같습니다.

      http://camel-proxy.my-3scale-management-project.svc:8080
  4. 업데이트된 정책 구성을 스테이징 또는 프로덕션 환경으로 승격합니다. 예를 들어 Promote v를 클릭합니다. 3 ~ Staging APIcast.
  5. 3scale curl 명령을 사용하여 APIcast 정책 구성을 테스트합니다. 예를 들면 다음과 같습니다.

    curl "https://testapi-3scale-apicast-staging.myuser.app.dev.3sca.net:443/?user_key=MY_USER_KEY" -k

    APIcast는 Camel HTTP 프록시에 연결하기 위한 새 TLS 세션을 설정합니다.

  6. 메시지 콘텐츠가 변환되었는지 확인합니다. 이 예에서는 대문자로 변환되었습니다.
  7. APIcast를 우회하고 TLS를 사용하여 Camel HTTP 프록시를 직접 테스트하려면 사용자 지정 HTTP 클라이언트를 사용해야 합니다. 예를 들어 netcat 명령을 사용할 수 있습니다.

    $ print "GET https://mybackend.example.com HTTP/1.1\nHost: mybackend.example.com\nAccept: */*\n\n" | ncat --no-shutdown --ssl my-camel-proxy 8443

    이 예제에서는 GET 이후 전체 URL을 사용하여 HTTP 프록시 요청을 생성하고 ncat --ssl 매개 변수를 사용하여 포트 8443my-camel-proxy 호스트에 대한 TLS 연결을 지정합니다.

    참고

    프록시가 CONNECT 메서드를 사용하여 HTTP 터널링을 지원하지 않으므로 curl 또는 기타 일반 HTTP 클라이언트를 사용하여 Camel HTTP 프록시를 직접 테스트할 수 없습니다. CONNECT 로 HTTP 터널링을 사용하는 경우 전송은 엔드 투 엔드 암호화로, Camel HTTP 프록시가 페이로드를 중재할 수 없습니다.