Apigee Edge での Apigee Adapter for Envoy の使用

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

この例では、Apigee Edge で Apigee Adapter for Envoy を使用する方法を示します。

前提条件

始める前に、次のことを行います。

概要

この例では、Apigee Edge for Public Cloud で Apigee Adapter for Envoy を使用する方法について説明します。API プロキシの呼び出しは、Apigee Remote Service for Envoy を介して API 管理サービスを提供する Edge でネイティブ アプリケーションとして実行される Envoy を通過します。

Apigee Edge をプロビジョニングする

このステップでは、Remote Service CLI を使用して、Apigee Adapter for Envoy アセットを Apigee Edge にプロビジョニングします。プロビジョニング コマンドは、API プロキシを Apigee Edge にデプロイします。さらに、Apigee に証明書を設定して、Remote Service がシステムから Apigee に安全に接続する際に使用する認証情報を生成します。

  1. $CLI_HOME ディレクトリに移動します。
    cd $CLI_HOME
  2. 次の環境変数を作成します。次の変数は、プロビジョニング スクリプトのパラメータとして使用されます。
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    ここで

    変数 説明
    organization_name Apigee 組織の名前。
    environment_name 組織内の環境の名前。
    your_apigee_username Apigee アカウントのユーザー名。通常、ユーザー名はメールアドレスです。
    your_apigee_password Apigee のパスワード。
  3. 次のコマンドを実行して、Apigee Edge にリモート サービス プロキシをプロビジョニングします。

    アップグレードしない場合は、次のコマンドを使用して Apigee をプロビジョニングします。

    $CLI_HOME/apigee-remote-service-cli provision --legacy --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

    アップグレードする場合は、--force-proxy-install フラグを指定してこのコマンドを使用して Apigee をプロビジョニングします。

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml
  4. config.yaml ファイルの内容を確認します。次のようになります。
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75
       ...

    キーとシークレットの値は、Remote Service Proxy から Apigee Edge へのリクエストを検証するために使用されます。

Apigee Remote Service for Envoy サービスを実行する

Remote Service は、ネイティブ バイナリとして、または Docker で実行できます。

サービスをネイティブで実行する

プロビジョニング コマンドで出力された構成ファイルを使用して、サービス バイナリを実行します。

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Docker でサービスを実行する

Docker イメージはリリースタグ付きで公開されます。このインストールでは、最新バージョンを使用してください。次の 3 つのイメージのバリエーションから選択できます。

バリエーション 画像
Google distroless google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Boring Crypto を含む Ubuntu google/apigee-envoy-adapter:v2.0.0-boring

たとえば、ボリューム マウントを介してローカルの config.yaml/config.yaml として利用できる状態でスクラッチ イメージを実行するには、次のコマンドを使用します。

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.0

サンプル構成ファイルを作成する

CLI を使用して Envoy 構成ファイルを生成します。

  1. $ENVOY_HOME ディレクトリ内にいることを確認します。
  2. 使用可能な構成テンプレートを一覧表示します。
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. サンプル コマンドを実行します。TEMPLATE は、サポートされている Envoy テンプレートのいずれかに置き換えます。

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    このコマンドにより、./samples/envoy-config.yaml ファイルが作成されます。

詳しくは、サンプル コマンドをご覧ください。

Envoy プロキシをインストールして実行する

Envoy プロキシをインストールして実行する手順は次のとおりです。

  1. Envoy のバイナリをダウンロードするか、それをビルドするか、Docker を使用します。
  2. 以前に httpbin.org サービス用に生成したサンプル構成ファイルを使用して Envoy を実行します。
    envoy -c ./samples/envoy-config.yaml

インストールをテストする

  1. API キーを取得する方法に説明されているとおりに、API プロダクトを構成し、API キーを取得します。
  2. API キーなしで httpbin サービスを呼び出します。
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

    現在、サービスは Apigee によって管理されており、API キーが指定されていないため、次のエラーが返されます。

    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  3. キーを使用して API 呼び出しを行います。
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    呼び出しはステータス 200 で成功となり、レスポンスでヘッダーのリストを返します。次に例を示します。

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

次のステップ

現在、httpbin サービスへの API トラフィックは Apigee で管理されています。次のような機能を探して試すことができます。

  • API キーを取得する方法の説明に沿って API プロダクトを構成した場合、割り当て上限は 1 分あたり 5 件のリクエストに設定されています。httpbin サービスを複数回呼び出して割り当てをトリガーするようにします。割り当てが枯渇すると、HTTP ステータス 403 エラーが返されます。
  • Edge UI で Apigee Analytics にアクセスします。[Analyze] > [API Metrics] > [API Proxy Performance] に移動します。
  • API 呼び出しを認証するために、JWT トークンを生成して使用します。
  • CLI を使用して、トークンの管理、作成し、バインディングを制御します。CLI の詳細については、リファレンスをご覧ください。