このトピックでは、Docker コンテナで Edge Microgateway を実行する方法について説明します。このトピックの手順は、Docker、Docker コマンド、Edge Microgateway の設定と構成について、読者に基本的な知識があることを前提としています。詳しくは、Docker と Edge Microgateway のドキュメントをご覧ください。
前提条件
Edge Microgateway を Docker コンテナで実行する前に、次の作業を行う必要があります。
Edge Microgateway を Apigee の組織 / 環境向けに構成します。
edgemicro configure -o your_org -e your_env -u your_username
構成の詳細については、パート 1: Edge Microgateway の構成をご覧ください。
構成の手順を実施した後、構成ファイルを見つけます。デフォルトの場所は次のとおりです。
$HOME/.edgemicro/your_org-your_env-config.yaml
ここで
your_org
とyour_env
は、edgemicro config
コマンドを実行したときに使用した組織と環境です。このファイルは、Docker コンテナで Edge Microgateway を起動するときに必要になります。edgemicro config
コマンドを実行したときに返されたキーとシークレットの認証情報があることを確認します。次に例を示します。The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
Docker コンテナで Edge Microgateway を起動する前に、認証付きの API プロキシ呼び出しを行うために必要な、Apigee Edge エンティティを作成する(または作成済みである)必要があります。このエンティティには、Edge Microgateway-aware プロキシ、API プロダクト、デベロッパー、デベロッパー アプリが含まれます。手順の詳細については、Apigee Edge でエンティティを作成するをご覧ください。
Docker コンテナとして Edge Micro を実行する
Edge Microgateway 用の Docker イメージをダウンロードします。
docker pull gcr.io/apigee-microgateway/edgemicro:latest
次の手順に進む前に、前提条件のセクションのすべての手順を実施済みであることを確認してください。
次のコマンドを実行して、
$HOME/.edgemicro
にある Edge Microgateway 構成ファイルを base64 エンコードします。export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
ここで
your_org
とyour_env
は、edgemicro config
コマンドを実行したときに使用した組織と環境です。コマンドの前後に、忘れずにバッククォート(`)を付けてください。次に例を示します。
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway をコンテナとして実行します。このコマンドで、コンテナ ランタイムが Edge Microgateway を起動するために使用するいくつかの環境変数を設定します。
docker run -P -p 8000:8000 -d --name edgemicro \ -e EDGEMICRO_DOCKER=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG \ -e SERVICE_NAME=edgemicro gcr.io/apigee-microgateway/edgemicro
パラメータ
パラメータの詳細については、Docker の実行リファレンスをご覧ください。
パラメータ 説明 -P
開放したポートをすべてホストに公開します。 -p
1 つまたは一定範囲のポートを明示的にマッピングします。 -d
デタッチ モードで実行します。 EDGEMICRO_ORG
Edge Microgateway の構成に使用した Apigee 組織の名前。 EDGEMICRO_ENV
Edge Microgateway の構成に使用した Apigee 環境の名前。 EDGEMICRO_DOCKER
1 に設定する必要があります。Kubernetes でコンテナを実行している場合はこのパラメータを設定しないでください。 EDGEMICRO_KEY
Edge Microgateway を構成したときに返されたキー。 EDGEMICRO_SECRET
Edge Microgateway を構成したときに返されたシークレット。 EDGEMICRO_CONFIG
base64 エンコードされた Edge Microgateway 構成ファイルを含む変数。 SERVICE_NAME
Kubernetes でコンテナを実行する場合、このパラメータを edgemicro
に設定します。例:
docker run -P -p 8000:8000 -d --name edgemicro \ -e EDGEMICRO_DOCKER=1 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG \ -e SERVICE_NAME=edgemicro gcr.io/apigee-microgateway/edgemicro
コンテナが実行中であることを確認するには、次のようにします。
docker ps
出力は次のようになります。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
API 呼び出しのテスト
コンテナで Edge Microgateway を起動すると、API 呼び出しを実施できます。たとえば API のベースパスが /hello
の場合、次のようにします。
http://localhost:8000/hello
出力例:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
このレスポンスが表示された場合、Edge Microgateway が API 呼び出しを正常に処理したことを意味します。ただしデフォルトでは、Edge Microgateway は認証に API キーを必要とします。次のセクションでは、有効な API キーを使用して API をテストします。
有効な API キーを使用して API をテストする
Edge UI で、以前作成したデベロッパー アプリに移動します。[Developer App] ページで、コンシューマ キーを表示してコピーします。この値が API キーです。このキーを使用して、認証付きの API 呼び出しを行います。
次のように、x-api-key
ヘッダーを使用して API を呼び出します。デベロッパー アプリからコピーしたコンシューマ キーの値が API キーです。デフォルトでは、Edge Microgateway はこのキーが次のように x-api-key
というヘッダーで渡されることを期待しています。
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
例:
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
API キーと OAuth トークンを使用し、Edge Microgateway を介して認証付きの API 呼び出しを行う方法の詳細については、パート 4: Edge Microgateway を保護するをご覧ください。
Edge Microgateway の停止
Edge Microgateway を停止するには、次の Docker コマンドを使用します。
docker stop edgemicro
Edge Microgateway の再起動
Edge Microgateway を停止した後で再起動するには、次の Docker コマンドを使用します。
docker start $(docker ps -aqf name=edgemicro)
カスタム プラグインの追加
カスタム プラグインを作成することで、マイクロゲートウェイに新しい機能を追加できます。カスタム プラグインを使用すると、マイクロゲートウェイを通過するリクエストやレスポンスをプログラムで操作できます。
このセクションでは、プラグインをパッケージ化して、Docker コンテナで実行されている Edge Microgateway インスタンスにデプロイする方法について説明します。
このセクションの残りの部分は、標準の Edge Microgateway 設定用プラグインの作成と構成について読者が精通していることを前提としています。そうでない場合は、カスタム プラグインの作成をご覧ください。
プラグインのパッケージ化
カスタム プラグインをパッケージ化するには、次の手順を実施します。
単純なプラグインを作成するの説明に従ってプラグインを作成し、テストします。
プラグイン コードを適切なディレクトリ構造に配置します。プラグインのディレクトリは、決められた構造に従う必要があります。その構造を次の例に示します。ここで
response-uppercase
とrequest-headers
は、カスタム プラグイン コードを含むフォルダの名前です(この名前は単なる例で、実際のフォルダ名に異なる名前をつけても構いません)。plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
plugin
フォルダにcd
します。plugin
フォルダで、plugins
フォルダ全体を zip 圧縮します。zip -r plugins.zip plugins/
Docker イメージを作成する
次に Dockerfile を作成して、プラグイン コードを Edge Microgateway イメージに追加します。
- 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 ["/tmp/entrypoint.sh"]
プラグインを含む新しい Edge Microgateway Docker イメージを作成します。
docker build -t image-name .
例:
docker build -t edgemicroplugins .
Edge Microgateway の構成を更新する
プラグインをパッケージ化したら、Edge Microgateway 構成ファイルに追加する必要があります。
Edge Microgateway 構成ファイルをエディタで開きます。
$HOME/.edgemicro/org-env-config.yaml
例:
vi $HOME/.edgemicro/myorg-test-config.yaml
プラグイン ディレクトリを構成ファイルに追加します。次の例では、
dir
属性でプラグイン コードの場所(Dockerfile で指定したもの)を指定しています。プラグイン ディレクトリの名前も指定する必要があります。この例ではresponse-uppercase
です。edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
Microgateway を起動する
最後に、コンテナでマイクロゲートウェイを起動する必要があります。
次のコマンドを実行して、
$HOME/.edgemicro
にある Edge Microgateway 構成ファイルを base64 エンコードします。export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
ここで
your_org
とyour_env
は、edgemicro config
コマンドを実行したときに使用した組織と環境です。コマンドの前後に、忘れずにバッククォート(`)を付けてください。次に例を示します。
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway をコンテナとして実行します。このコマンドで、コンテナ ランタイムが Edge Microgateway を起動するために使用するいくつかの環境変数を設定します。
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_DOCKER=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG \ -e SERVICE_NAME=edgemicroplugins image_name
例:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_DOCKER=1 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
API を呼び出してプラグインをテストします。
プラグイン コードの実行をテストするには、API を呼び出して想定どおりの出力が得られることを確認します。
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
たとえば、
response-uppercase
プラグインは次のようなレスポンスを返します。curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!