検索

第6章 Fuse のポリシーエクステンションを使用した 3scale メッセージコンテンツの変換

download PDF

Red Hat Fuse を使用して、Red Hat 3scale API Management 用の非常に柔軟なポリシーエクステンションを作成することができます。そのためには、Fuse on OpenShift でポリシーエクステンションを作成し、それらを 3scale 管理ポータルで設定します。これにより、APIcast プロキシーポリシーを使用して、リクエスト/レスポンスのメッセージコンテンツに対する複雑な変換を実施することができます (例: XML から JSON への変換)。この変換は、Apache Camel インテグレーションのフレームワークに実装されます。

これにより、静的な APIcast コンテナーイメージを再ビルドして再デプロイする代わりに、Camel でカスタムポリシーエクステンションを動的に追加または変更することもできます。Camel Domain Specific Language (DSL) を使用することで、利用可能な任意の Camel Enterprise Integration Pattern (EIP) により、APIcast ポリシーエクステンションを実装することができます。これにより、Java や XML 等の使い慣れたプログラミング言語を使用して、ポリシーエクステンションを作成することができます。本トピックの例では、Camel Netty4 HTTP コンポーネントを使用して、HTTP プロキシーを Java で実装しています。

必要なソフトウェアコンポーネント

以下の Red Hat Integration コンポーネントを同じ OpenShift クラスターにデプロイしている必要があります。

  • Fuse on OpenShift 7.6
  • オンプレミス型 3scale
  • Self-managed APIcast または Embedded APIcast
注記

これらのコンポーネントを同じ OpenShift クラスターにインストールする必要があります。ただし、同じ namespace またはプロジェクトである必要はありません。Fuse と 3scale が直接通信することはありません。すべての通信は、OpenShift を通じてしか実施されません。

アーキテクチャー的には、3scale とは異なるプロジェクトで Fuse カスタムコードを実行するのが最良です。ただし、両プロジェクト間で通信ができるようにしてください。詳細については、『Networking』の「Configuring network policy with OpenShift SDN」を参照してください。

その他のリソース

6.1. APIcast と Fuse の Apache Camel による変換のインテグレーション

APIcast と Fuse on OpenShift で Apache Camel アプリケーションとして記述された変換を統合することができます。ポリシーエクステンションによる変換が 3scale に設定およびデプロイされると、3scale トラフィックは Camel ポリシーエクステンションを通過し、メッセージのコンテンツが変換されます。この場合、Camel はリバース HTTP プロキシーとして機能し、APIcast は Camel に 3scale トラフィックを送信し、Camel がそのトラフィックを API バックエンドに送信します。

本トピックの例では、Camel Netty4 HTTP コンポーネントを使用して HTTP プロキシーを作成しています。

  • HTTP プロキシープロトコルを通じて受け取ったリクエストは、HTTP ボディーが大文字に変換されて目的のサービスに転送されます。
  • 目的のサービスからのレスポンスは大文字への変換処理を受け、続いてクライアントに戻されます。

前提条件

  • Fuse on OpenShift 7.6 および 3scale 2.8 を、同じ OpenShift クラスターにデプロイしている必要があります。インストールの詳細については、以下のドキュメントを参照してください。

  • Fuse on OpenShift および 3scale をインストールしてプロジェクトを作成するには、クラスターの管理者権限が必要です。ただし、プロジェクトごとの編集アクセス権限で、デプロイ設定の作成、Pod のデプロイ、およびサービスの作成が可能です。

手順

  1. Camel netty4-http コンポーネントを使用して Java で Apache Camel アプリケーションを作成し、HTTP プロキシーを実装します。これにより、任意の Camel コンポーネントを使用して、メッセージを変換することができます。

    以下に示す簡単な例では、リクエストおよびサービスからのレスポンスを大文字に変換します。

    import java.util.Locale;
    import org.apache.camel.Exchange;
    import org.apache.camel.Message;
    import org.apache.camel.builder.RouteBuilder;
    
    public class ProxyRoute extends RouteBuilder {
    
        @Override
        public void configure() throws Exception {
            from("netty4-http:proxy://0.0.0.0:8080")
                .process(ProxyRoute::uppercase)
                .toD("netty4-http:"
                    + "${headers." + Exchange.HTTP_SCHEME + "}://"
                    + "${headers." + Exchange.HTTP_HOST + "}:"
                    + "${headers." + Exchange.HTTP_PORT + "}"
                    + "${headers." + Exchange.HTTP_PATH + "}")
                .process(ProxyRoute::uppercase);
        }
    
        public static void uppercase(final Exchange exchange) {
            final Message message = exchange.getIn();
            final String body = message.getBody(String.class);
            message.setBody(body.toUpperCase(Locale.US));
        }
    }
  2. 『Fuse on OpenShift ガイド』の「Fuse on OpenShift でのアプリケーションの作成およびデプロイ」の説明に従って、Camel アプリケーションをデプロイします。
注記

この例では、HTTP over TLS (HTTPS) プロトコルはサポートされません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.