4.4. カスタム 3scale API Management APIcast ポリシー


APIcast の動作を変更するためのカスタムポリシーを設定します。まず、カスタムポリシーを含む APIcast ポリシーを設定するポリシーチェーンを定義し、続いてポリシーチェーンを APIcast に追加します。

注記

Red Hat 3scale でカスタムポリシーを追加することは可能ですが、そのカスタムポリシーはサポートの対象ではありません。

APIcast のカスタムポリシーは、3scale デプロイメントの設定によって異なります。

  • インストールした OpenShift およびコンテナー環境の APIcast 等の Self-managed APIcast デプロイメントに、カスタムポリシーを追加します。
  • カスタムポリシーを Hosted APIcast に追加することはできません。
警告

決して、実稼働環境のゲートウェイで直接ポリシーを変更しないでください。変更を必ずテストしてください。

4.4.1. 3scale API Management APIcast デプロイメントのカスタムポリシーについて

カスタム APIcast ポリシーを新規に作成することや、標準ポリシーを変更することができます。

カスタムポリシーを作成するには、以下の点を理解している必要があります。

  • ポリシーは Lua で記述される。
  • ポリシーは適切なファイルディレクトリーに保管しなければならない。
  • ポリシーチェーン内での設定場所により、ポリシーの動作が異なる。
  • カスタムポリシーを追加するインターフェイスは完全にサポートされているが、カスタムポリシー自体はサポートされていない。

3scale API Management インスタンスにカスタムポリシーを追加するには、3scale API Management Operator を使用したカスタムポリシーの挿入 を参照してください。

4.4.2. 別の OpenShift Container Platform 上の 3scale API Management へのカスタムポリシーの追加

カスタムポリシーを OpenShift Container Platform (OCP) 上の APIcast に追加することができます。そのためには、ご自分のカスタムポリシーが含まれる APIcast イメージを 統合 OpenShift Container Platform レジストリー から取得します。

手順

  1. 3scale API Management Operator を使用してカスタムポリシーを挿入 します。
  2. APIcast ゲートウェイをメインの OpenShift クラスターにデプロイしていない場合には、メインの OpenShift クラスター上の内部レジストリーへの アクセスを確立します
  3. 3scale 2.15 APIcast OpenShift テンプレートを ダウンロードします
  4. テンプレートを変更するには、デフォルトの image ディレクトリーを内部レジストリーの完全なイメージ名に置き換えます。

    image: <registry>/<project>/amp-apicast:latest
  5. カスタマイズしたイメージを指定し、OpenShift テンプレートを使用して APIcast をデプロイします

    $ oc new-app -f customizedApicast.yml
注記

カスタムポリシーが APIcast に追加されて新しいイメージがビルドされ、そのイメージを使用して APIcast がデプロイされると、管理ポータルではそれらのポリシーが利用可能なポリシーとして自動的に表示されます。既存のサービスはこの新しいポリシーを利用可能なポリシーリストで認識できるので、任意のポリシーチェーンで使用することができます。

カスタムポリシーがイメージから削除され、APIcast が再起動されると、そのポリシーはリスト上で利用可能なポリシーとは表示されなくなるので、ポリシーチェーンに追加することができなくなります。

4.4.3. 3scale API Management カスタムポリシーへの外部 Lua 依存関係の追加

外部の Lua 依存関係をカスタムポリシーに追加して、APIcast がまだ 3scale イメージにない Lua ライブラリーを使用できるようにすることができます。

以下の手順では、レスポンスボディーを JSON から XML に変換するカスタムポリシーの例 を使用して、この作業を行う方法を説明します。カスタムポリシーの例には、Lua で書かれた xml2lua XML パーサーが必要です。完全な例は、ビルドおよびテストを簡潔に示していますが、サンプル手順のみに従ってカスタムポリシーをデプロイすることはできません。外部 Lua 依存関係を持つカスタムポリシーをデプロイするには、この手順の手順とともに、別の OpenShift Container Platform の 3scale API Management へのカスタムポリシーの追加 の手順を実行する必要があります。

注記

JSON to XML カスタムポリシーは、例としてのみ提示しています。実稼働環境で使用するためのものではありません。

前提条件

  • 3scale カスタムポリシー。
  • 外部 Lua ライブラリーへのアクセス。

手順

  1. カスタムポリシーが含まれるディレクトリーに、外部 Lua ライブラリーを識別するファイルを追加します。

    ファイルの名前は Roverfile である必要があります。JSON to XML カスタムポリシーの例では、Roverfile の内容は以下のようになります。

    luarocks {
    	group 'production' {
    		module { 'xml2lua' },
    	}
    }

    lua-rover は、LuaRocks に関するラッパーです。lua-rover は、依存関係の推移ロックを提供します。LuaRocks は、Lua モジュールのパッケージマネージャーです。

  2. カスタムポリシーが含まれるディレクトリーに、lua-rover ロックファイルを追加します。

    ファイルの名前は Roverfile.lock である必要があります。JSON to XML カスタムポリシーの例では、Roverfile.lock の内容は以下のようになります。

    xml2lua 1.5-2||productionbash-4.4

    Roverfile および Roverfile.lock を併用することで、APIcast または 3scale Operator が依存関係ライブラリーをフェッチできます。

  3. カスタムポリシーを定義するファイルで、Lua 依存関係を指定する行を追加します。JSON to XML カスタムポリシーの例では、以下の行を指定します。

    local xml2lua = require("xml2lua")
  4. カスタムポリシーの構築に使用する Dockerfile で、Roverfile および Roverfile.lock をコピーし、rover install を実行します。JSON to XML カスタムポリシーの例では、以下の行を Dockerfile に追加します。

    COPY Roverfile .
    COPY Roverfile.lock .
    
    RUN rover install --roverfile=/opt/app-root/src/Roverfile

    Dockerfile は、APIcast または 3scale Operator を使用してポリシーをビルドすることができます。

  5. カスタムポリシーの Makefile で、他のカスタムポリシーと同様に build ターゲットを指定します。

    たとえば、build ターゲットは以下のようになります。

    TARGET_IMAGE="apicast/json_to_xml:latest"
    # IP="http://localhost:8080"
    
    build:
    	docker build . --build-arg IMAGE=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.15 -t $(TARGET_IMAGE)

次のステップ

外部 Lua 依存関係を持つカスタムポリシーをデプロイする残りの手順は、他のカスタムポリシーのデプロイと同じです。つまり、イメージをリポジトリーにプッシュし、APIcast イメージをビルドしたばかりのイメージに置き換える必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.