4.4. APIcast へのカスタムポリシーの追加
カスタムポリシーを作成したら、それを APIcast に追加する必要があります。その手順は、APIcast がデプロイされている場所により異なります。
以下に示す Self-managed APIcast デプロイメントに、カスタムポリシーを追加することができます。
- Embedded APIcast ゲートウェイ (OpenShift 上の 3scale オンプレミスデプロイメントの一部)
- OpenShift および Docker コンテナー環境上の APIcast
カスタムポリシーを Hosted APIcast に追加することはできません。
決して、実稼働環境のゲートウェイで直接ポリシーを変更しないでください。変更を必ずテストしてください。
4.4.1. Embedded APIcast へのカスタムポリシーの追加
オンプレミスデプロイメントにカスタム APIcast ポリシーを追加するには、カスタムポリシーが含まれる OpenShift イメージをビルドし、それをデプロイメントに追加する必要があります。Red Hat 3scale では、サンプルリポジトリーを提供しています。このリポジトリーを、カスタムポリシーを作成してオンプレミスデプロイメントに追加するためのフレームワークとして使用することができます。
このサンプルリポジトリーには、カスタムポリシー用の正しいディレクトリー構造に加えて、イメージストリームを作成するテンプレート、および作成するカスタムポリシーが含まれる新しい APIcast OpenShift イメージをビルドするための BuildConfigs が含まれています。
apicast-custom-policies
をビルドすると、ビルドプロセスは新しいイメージを amp-apicast:latest
タグにプッシュします。このイメージストリームタグ (:latest
) でイメージが変更されると、デフォルトでは apicast-staging および apicast-production タグの両方が自動的に新しいデプロイメントを開始するように設定されています。実稼働環境 (あるいは、必要であればステージング環境) のサービスが中断されるのを避けるためには、自動デプロイメントを無効にするか (Automatically start a new deployment when the image changesチェックボックス) か、実稼働環境用に別のイメージストリームタグ (例: amp-apicast:production
) を設定することをお勧めします。
カスタムポリシーをオンプレミスデプロイメントに追加するには、以下の手順に従います。
- https://github.com/3scale/apicast-example-policy (ポリシーの例が含まれる公開リポジトリー) をフォークするか、そのコンテンツが含まれるプライベートリポジトリーを作成します。OpenShift がイメージをビルドするには、Git リポジトリーでカスタムポリシーのコードが必要です。プライベート Git リポジトリーを使用するには、OpenShift でシークレットを設定する必要がある点に注意してください。
- リポジトリーをローカルにクローンし、ポリシーの実装を追加し、変更をご自分の Git リポジトリーにプッシュします。
openshift.yml
テンプレートを更新します。具体的には、以下のパラメーターを変更します。-
spec.source.git.uri: https://github.com/3scale/apicast-example-policy.git
(ポリシーの BuildConfig): ご自分の Git リポジトリーの場所に変更します。 -
spec.source.images[0].paths.sourcePath: /opt/app-root/policies/example
(カスタムポリシーの BuildConfig):example
をリポジトリーのpolicies
ディレクトリーに追加したカスタムポリシーの名前に変更します。 -
オプションで、OpenShift オブジェクト名およびイメージタグを更新します。ただし、変更の一貫性が維持されるようにする必要があります (例:
apicast-example-policy
BuildConfig がapicast-policy:example
イメージをビルドおよびプッシュし、それをapicast-custom-policies
BuildConfig がソースとして使用する。これによりダグの一貫性が維持されます)。
-
以下のコマンドを実行して OpenShift オブジェクトを作成します。
oc new-app -f openshift.yml --param AMP_RELEASE=2.6.0
ビルドが自動的に開始されない場合には、以下の 2 つのコマンドを実行します。
apicast-example-policy
を変更している場合には、ご自分の BuildConfig 名に置き換えます (例:apicast-<name>-policy
)。最初のコマンドが完了するのを待ってから、2 番目のコマンドを実行してください。oc start-build apicast-example-policy oc start-build apicast-custom-policies
Embedded APIcast のイメージに amp-apicast:latest
イメージストリームの変更を追跡するトリガーがある場合には、APIcast の新しいデプロイメントが開始されます。apicast-staging
が再開されたら管理ポータルの Integration ページに移動し、Add Policy ボタンをクリックしてご自分のカスタムポリシーがリストに表示されるのを確認します。カスタムポリシーを選択して設定したら、Update & test in Staging Environment をクリックし、カスタムポリシーをステージング APIcast で動作状態にします。