5.2. Fuse on OpenShift の Apache Camel を使用して作成された APIcast ポリシーエクステンションの設定

Fuse on OpenShift を使用した Apache Camel による変換を実装したら、3scale 管理ポータルを使用して APIcast ポリシーチェーンのポリシーエクステンションとして設定することができます。

ポリシーエクステンションにより、Camel HTTP プロキシーを使用するように 3scale プロダクトを設定することができます。このサービスを使用して HTTP プロキシー経由で 3scale トラフィックを送信し、サードパーティープロキシーでリクエスト/レスポンスの変更を実施します。ここでは、サードパーティープロキシーは Fuse on OpenShift を使用して実装された Apache Camel です。TLS を使用して Camel HTTP プロキシーサービスにセキュアに接続するように、APIcast を設定することもできます。

注記

ポリシーエクステンションコードは Fuse on OpenShift の Apache Camel アプリケーションで実装されており、3scale から変更したり削除したりすることはできません。

前提条件

手順

  1. 3scale 管理ポータルで Integration > Policies の順に選択します。
  2. POLICIES > Add policy > Camel Service の順に選択します。
  3. 適切なフィールドに、Camel HTTP プロキシーサービスに接続するための OpenShift ルートを入力します。

    • https_proxy: http プロトコルおよび TLS ポートを使用して、Camel HTTPS プロキシーに接続します。以下に例を示します。

      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 to 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 プロキシーはペイロードを仲介することはできません。

関連情報