ポリシーの機能をテストできるように、Flex Gateway ポリシー開発キット (PDK) は <root-directory>/playground/config ディレクトリに設定済みの API インスタンスを用意しています。
PDK デバッグプレイグラウンドは、Docker コンテナのローカルモードで実行されている Flex Gateway のみをサポートします。接続モードで動作する Flex Gateway や別のプラットフォームにポリシーをデプロイする場合でも、まず Docker コンテナのローカルモードで実行されている Flex Gateway を使用して PDK でポリシーをテストしてください。
| ポリシーの開発とテストのみが目的であれば、Windows の Docker で Flex Gateway をローカルモードで実行することもできます。ただし、Flex Gateway は本番環境では Windows をサポートしていません。 |
ポリシーをテストするには、次のタスクを実行します。
ローカルモードでの Flex Gateway インスタンスの登録
make run コマンドを使用してカスタムポリシーのデバッグを開始するには、ローカルモードで Flex Gateway を登録します。
run コマンドが動作するためには、<root-directory>/playground/config ディレクトリに Flex Gateway の registration.yaml ファイルが存在する必要があります。このディレクトリで登録コマンドを実行してこのファイルを作成するか、または以前に登録してある Flex Gateway の registration.yaml ファイルをこのディレクトリに移動します。
make run コマンドは Docker コンテナのローカルモードで動作する Flex Gateway のみをサポートします。Flex Gateway の登録については、以下を参照してください。
登録コマンドのみを実行してください。Docker の開始コマンドは、make run コマンドがこのステップを完了するため、実行しないでください。
|
ポリシーをテストするデバイスごとに異なる登録ファイルを作成してください。
登録ファイルはリモートリポジトリへの保存では無視され、プロジェクトディレクトリのルートにある .gitignore ファイルにリストされます。
ポリシーの設定
policy-pdk-create-schema-definition.adocで設定した definition/gcl.yaml ファイルにリストされている設定内容によっては、ポリシーをローカルで実行する前にいくつかのパラメーターを設定する必要があります。
たとえば、gcl.yaml ファイルが次のようになっている場合:
apiVersion: gateway.mulesoft.com.v1alpha1
kind: Extension
metadata:
labels:
title: my-custom-policy
category: Security
spec:
extends:
- name: extension-definition
properties:
user:
type: string
default: user1
password:
type: string
description:
type: string
required:
- user
- password
/playground/config/api.yaml ファイルを設定値で更新します。
apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
name: ingress-http
spec:
address: http://0.0.0.0:8081
services:
upstream:
address: http://backend
routes:
- config:
destinationPath: /anything/echo/
policies:
- policyRef:
name: my-custom-policy
config:
password: 12345678
この例では、ユーザー名はデフォルト値の user1、パスワードは 12345678 に設定され、説明は提供されません。
ポリシーの追加
テスト用の API インスタンスにポリシーを追加して、他のポリシーと一緒にカスタムポリシーの動作をテストすることもできます。
ただし、開発中のポリシーを最初に指定する必要があります。例:
policies:
- policyRef:
name: my-custom-policy
config:
password: 12345678
- policyRef:
name: additional-policy
config:
PDK によるポリシーのデプロイ
これまでのステップを完了したら、ポリシーのルートディレクトリから make run コマンドを実行して、ポリシーをデプロイします。
make run
このコマンドは、<root-directory>/playground/docker-compose.yaml ファイルで 2 つの Docker コンテナを開始します。
-
Local-flex: カスタムポリシーを実行する Flex Gateway インスタンス Docker コンテナ。この Flex Gateway は localhost:8081 への要求をリスンします。 -
Backend: Flex Gateway インスタンスのバックエンドサービスを実行する Docker コンテナ。このバックエンドサービスは、受信した要求をエコーします。
Docker コンテナを停止するには、コンテナを実行している端末から、使用しているデバイスに応じて Cmd+c または Ctrl+c を押します。
|
コンテナが動作を開始したら、API インスタンスへの要求を実行できます。例:
curl --location --request POST 'http://0.0.0.0:8081/some/route' \
--header 'Token: mytoken'
バックエンドのサービスは、要求のルート、ボディ、ヘッダーを含むエコー応答を、カスタムポリシーや追加ポリシーによって実行された修正とともに返します。カスタムポリシーのソースコードに含まれるすべてのログは、コンテナが実行されている端末で表示されます。
loglevel の設定
PDK のデバッグ環境のデフォルトでは、debug loglevel (デバッグログレベル) が設定された状態でログが有効になっています。
loglevel を変更するには、<root-directory>/playground/config/logging.yaml の logging.runtimeLogs.logLevel を編集します。
Flex Gateway のログ設定ファイルの編集についての詳細は、Configuring External Logs for Omni Gateway in Local Modeを参照してください。
Rust デバッガーの使用
Visual Studio Code (VS Code) には、ユニットテストを実行できる Rust デバッガーが含まれています。ポリシーが Flex Gateway にデプロイされている間は、VS Code Debugger を使用できません。API のモックを作成するには、デバッグが必要なロジックに対してユニットテストを使用する必要があります。
VS Code で Rust コードをデバッグするには、 CodeLLDB Debugger Extension または同じ機能の他の VS Code 拡張機能をインストールする必要があります。VS Code での Rust のデバッグについての詳細は、 「Rust in Visual Studio Code (Visual Studio Code の Rust)」を参照してください。