4.3.4. 3scale カスタムポリシーへの外部 Lua 依存関係の追加
外部の Lua 依存関係をカスタムポリシーに追加して、APIcast がまだ 3scale イメージにない Lua ライブラリーを使用できるようにすることができます。
以下の手順では、レスポンスボディーを JSON から XML に変換するカスタムポリシーの例 を使用して、この作業を行う方法を説明します。カスタムポリシーの例には、Lua で書かれた xml2lua
XML パーサーが必要です。完全な例は、ビルドおよびテストを簡潔に示していますが、サンプル手順のみに従ってカスタムポリシーをデプロイすることはできません。外部の Lua 依存関係を持つカスタムポリシーをデプロイするには、この手順と共に 別の OpenShift Container Platform 上の 3scale へのカスタムポリシーの追加 の手順を実施する必要があります。
JSON to XML
カスタムポリシーは、例としてのみ提示しています。実稼働環境で使用するためのものではありません。
前提条件
- 3scale カスタムポリシー
- 外部 Lua ライブラリーへのアクセス
手順
カスタムポリシーが含まれるディレクトリーに、外部 Lua ライブラリーを識別するファイルを追加します。
ファイルの名前は
Roverfile
である必要があります。JSON to XML
カスタムポリシーの例では、Roverfile
の内容は以下のようになります。luarocks { group 'production' { module { 'xml2lua' }, } }
lua-rover
は LuaRocks のラッパーです。lua-rover
は依存関係の推移ロックを提供します。LuaRocks は、Lua モジュールのパッケージマネージャーです。カスタムポリシーが含まれるディレクトリーに、
lua-rover
ロックファイルを追加します。ファイルの名前は
Roverfile.lock
である必要があります。JSON to XML
カスタムポリシーの例では、Roverfile.lock
の内容は以下のようになります。xml2lua 1.5-2||productionbash-4.4
Roverfile
およびRoverfile.lock
を併用することで、APIcast または 3scale operator が依存関係ライブラリーをフェッチできます。カスタムポリシーを定義するファイルで、Lua 依存関係を指定する行を追加します。
JSON to XML
カスタムポリシーの例では、以下の行を指定します。local xml2lua = require("xml2lua")
カスタムポリシーの構築に使用する 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 を使用してポリシーをビルドすることができます。
カスタムポリシーの
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.12 -t $(TARGET_IMAGE)
次のステップ
外部 Lua 依存関係を持つカスタムポリシーをデプロイする残りの手順は、他のカスタムポリシーのデプロイと同じです。つまり、イメージをリポジトリーにプッシュし、APIcast イメージをビルドしたばかりのイメージに置き換える必要があります。
関連情報