<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
カスタム プラグインの追加
custom プラグインをご覧ください。カスタム プラグインを使用すると、プログラムでリクエストを操作できる レスポンスが返されます。
このセクションでは、プラグインをパッケージ化して Edge Appliance にデプロイする方法について説明します。 インスタンスを実行します。
このセクションの残りの部分では、 Google Cloud 環境で記述、構成する慣れ親しんだ 使用しています。ない場合は、カスタム プラグインを開発するをご覧ください。
プラグインをパッケージ化する
カスタム プラグインをパッケージ化する手順は次のとおりです。
シンプルなプラグインを作成するの手順に沿ってプラグインを作成し、テストします。
プラグイン コードを適切なディレクトリ構造に配置します。プラグインのディレクトリは、あらかじめ定められた構造に沿って作成する必要があります。次の例は、トレーニング データに基づく 従う必要があります。ここで、
response-uppercase
とrequest-headers
は、 カスタム・プラグイン・コードを含むフォルダの名前(これらの名前は一例であり、 フォルダ名が異なる場合があります)。plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
でplugin
フォルダに移動します。plugin
フォルダで、plugins
フォルダ全体を圧縮します。zip -r plugins.zip plugins/
Docker イメージを作成する
- zip ファイルがあるディレクトリに、
Dockerfile
という新しいファイルを作成します。 次のコードを
Dockerfile
に追加し、ファイルを保存します。FROM gcr.io/apigee-microgateway/edgemicro:latest RUN apt-get install unzip COPY plugins.zip /opt/apigee/ RUN chown apigee:apigee /opt/apigee/plugins.zip RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee" EXPOSE 8000 EXPOSE 8443 ENTRYPOINT ["entrypoint"]
プラグインを含む新しい Edge Appliance Docker イメージを作成し、push します。 Docker レジストリにイメージをダウンロードします。環境変数には、任意のレジストリを使用できます。
docker.io
またはgcr.io
として:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
例:
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker push gcr.io/my-project/edgemicroplugins
Edge Appliance の構成を更新する
Edge AppSheet 構成ファイルにプラグインを追加します。詳しくは、 構成ファイルをここに挿入します。
$HOME/.edgemicro/org-env-config.yaml
例:
$HOME/.edgemicro/myorg-test-config.yaml
次のサンプル構成では、カスタム プラグイン response-uppercase
が追加されています。
oauth
プラグインは、デフォルトですでに存在しています。
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
Kubernetes クラスタを更新する
最後のステップでは、構成の変更を Kubernetes クラスタに適用します。Kubernetes Container Registry に push したプラグイン コードを含む新しいイメージを pull し、 表示されます。
Edge Appliance をサービスとしてデプロイした場合
edgemicroctl
コマンドを使用して、更新された Edge AppSheet 構成を挿入します。
新しいイメージで Edge Appliance のデプロイを更新します。例:
kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)
ここで
your_organization
-edgemicro configure
コマンドで指定した Apigee 組織。your_environment
-edgemicro configure
コマンドで指定した環境。configuration_key
-edgemicro configure
コマンドから返されたキー。configuration_secret
-edgemicro configure
コマンドから返されたシークレット。config_file_path
-edgemicro configure
コマンドから返された Edge Micro 構成ファイルのパス。container-registry
- イメージを push した Docker レジストリ。たとえば、gcr.io
やdocker.io
などです。your_project_name
- Docker イメージを push した Docker リポジトリのプロジェクト名。image_name
- push した Docker イメージの名前。
例:
kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
プラグインをテストします。API を呼び出して、期待される動作が発生するかどうかを確認します。対象 例: "response uppercase"レスポンス テキストがすべての文字列に 次のように大文字にします。
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
出力:
HELLO WORLD
新しい構成を手動で挿入する
手動インジェクションは、新しい構成を挿入する単純なアプローチです。 使用できます。
次のコマンドを実行します。
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)
ここで
your_org
-edgemicro configure
コマンドで指定した Apigee 組織。your_env
-edgemicro configure
コマンドで指定した環境。your_key
-edgemicro configure
コマンドから返されたキー。your_secret
-edgemicro configure
コマンドから返されたシークレット。config_file_path
-edgemicro configure
コマンドから返された Edge Micro 構成ファイルのパス。container-registry
- イメージを push した Docker レジストリ。たとえば、gcr.io
やdocker.io
などです。your_project_name
- Docker イメージを push した Docker リポジトリのプロジェクト名。image_name
- push した Docker イメージの名前。service_deployment_file
- サービスのデプロイ ファイルのパス 適用されます。例:samples/helloworld/helloworld.yaml
。
例:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
プラグインをテストします。サービス API を呼び出して 想定どおりの動作が行えるかを確認します。例: 「response uppercase」の場合 次のようにレスポンス テキストがすべて大文字に変換されます。
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
出力:
HELLO WORLD
Edge Appliance の構成変更
場合によっては、Edge AppSheet の構成の変更が必要になることがあります。たとえば、 新しいプラグインを Edge Appliance に追加したり、構成パラメータを変更したりする必要がある場合があります。この セクションでは、Edge Gateway に構成を変更して適用する方法について説明します。 実行されています。
次のように構成ファイル
secret.yaml
を作成します。apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIG
EDGEMICRO_ORG
、EDGEMICRO_ENV
、EDGEMICRO_KEY
、EDGEMICRO_SECRET
を base64 でエンコードした値を指定します。echo -n "your-org" | base64 | tr -d '\n'
echo -n "your-org-env" | base64 | tr -d '\n'
echo -n "your-mg-key" | base64 | tr -d '\n'
echo -n "your-mg-secret" | base64 | tr -d '\n'
組織の Edge AppSheet 構成ファイルに変更を加え、 環境:
$HOME/.edgemicro/your_org-your_env-config.yaml
2 倍の Base64 エンコード。 構成ファイルの内容:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
サービスが実行されている Namespace 上の Kubernetes に変更を適用します。
kubectl apply -f secret.yaml -n
これらの新しい変更は、既存の Microgateway Pod によって自動的に取得されません。ただし、 新しい Pod が変更を取得します。既存の Pod を削除して、 Deployment によって、変更を反映する新しい Pod が作成されます。
サービスの例
次の例は、新しい Deployment でサービスのデプロイを更新する方法を示しています。
Pod を取得します。
kubectl get pods
出力例:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1d
edge-microgateway
Pod を削除します。kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
出力例:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Pod を再度取得します。新しい Pod がスピンアップし、構成の変更が取得されます。
kubectl get pods
出力例:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
デプロイのスケーリング
このセクションでは、Kubernetes のスケーリング原則を使用して、 Deployment をスケーリングできます。
サービスのデプロイをスケーリングする
Deployment を確認します。
kubectl get deployments
出力例:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1d
出力には、1 つのレプリカがデプロイされていることが示されます。
Deployment を 1 つから必要な数のレプリカにスケールします。この例では、
edge-microgateway
サービスがスケーリングされています。kubectl scale deployment edge-microgateway --replicas=2
(省略可)自動スケーリングを使用する場合は、次のコマンドを使用します。
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Deployment を調べて、スケーリングが有効になっていることを確認します。
kubectl get deployments
出力例:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1d
状態は 2 つのレプリカを含むように変更されました。
Pod を確認します。
kubectl get pods
出力例:
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 18h edge-microgateway-57ccc7776b-rvfz4 1/1 Running 0 41s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
出力には、両方のレプリカが実行状態にあることが示されます。
複数の Edge Controls 構成に名前空間を使用する
複数のエッジ ファイアウォール サービスのインスタンスをデプロイして構成できます。 使用します。このユースケースでは、各マイクロゲートウェイ インスタンスを構成できます。 独自のプラグインとパラメータのセットを提供します。例:
- Edge AppSheet Service A には、Spike Arrest プラグインのみが必要です。
- Edge Gateway サービス B には、Quota と oauth プラグインが必要ですが、Spike Arrest は必要ありません。
このユースケースに対応するには、Kubernetes の Namespace を使用します。たとえば
Edge Appliance Service A を Namespace foo
に、Edge Gateway サービス B を Namespace にマッピングします。
Namespace bar
。
次の例では、組織 OrgA
に構成された Edge Appliance がサービスとして Namespace にデプロイされます。
-n
オプションを使用した foo
:
kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo
同様に、次の例では、組織 OrgB
に構成された Edge Dataproc です。
-n
オプションを使用して、Namespace bar
にサービスとしてデプロイされます。
kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar