VPC ピアリングを使用して評価組織をプロビジョニングする

このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。

Apigee Edge のドキュメントを表示する。

ステップの概要

このドキュメントでは、コマンドラインから Apigee 評価組織(または評価組織)をインストールして構成する方法について説明します。評価組織は 60 日後に期限切れになり、他の制限が適用される場合もあります。評価組織と有料組織の比較もご覧ください。

プロビジョニングの手順は次のとおりです。

ステップ 1: 環境変数を定義する

gcloud を設定し、後の手順で使用する環境変数を定義します。

  1. 前提条件に記載されている要件を完了していることを確認してください。
  2. gcloud CLI がインストールされている必要があります。インストールする必要がある場合は、gcloud CLI をインストールするをご覧ください。
  3. gcloud CLI の初期化で説明しているように、gcloud CLI を初期化します。CLI がすでに初期化されている場合は、前提条件で作成した Google Cloud プロジェクトが gcloud のデフォルト プロジェクトとして設定されていることを確認します。
  4. 次の環境変数を定義します。
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    ここで

    • AUTH は、署名なしトークンを含む Authentication ヘッダーを定義します。このヘッダーは、Apigee API を呼び出すときに使用します。トークンは一定期間経過すると期限切れになります。期限が切れた場合は、同じコマンドを使用して簡単に再生成できます。詳細については、print-access-token コマンドのリファレンス ページをご覧ください。
    • PROJECT_ID は、前提条件で作成した Cloud プロジェクト ID です。
    • RUNTIME_LOCATION は、Apigee インスタンスが配置されている物理的な場所です。使用可能なランタイム ロケーションのリストについては、Apigee のロケーションをご覧ください。

    • ANALYTICS_REGION は、Apigee 分析データが保存される物理的なロケーションです。使用可能な Apigee API Analytics のリージョンのリストについては、Apigee のロケーションをご覧ください。

      RUNTIME_LOCATIONANALYTICS_REGION は同じリージョンにできますが、同じである必要はありません。ただし、同じであれば、パフォーマンス上のメリットが得られることがあります。

  5. (省略可)設定した値をエコーして作業内容を確認します。コマンドで変数を使用する場合は、変数名の前にドル記号($)を付けます。
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    echo コマンドに対するレスポンスは次のようになります。

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

ステップ 2: API を有効にする

  1. Apigee では、いくつかの Google Cloud APIs を有効にする必要があります。services enable コマンドを実行して有効にします。

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (省略可)処理を確認するには、services list コマンドを使用して、有効な API をすべて表示します。

    gcloud services list

    レスポンスには、有効にした API(Apigee、Service Networking、Cloud KMS、Compute Engine)を含む、有効になっているすべての API が表示されます。

ステップ 3: サービス ネットワーキングを構成する

  1. 次の環境変数を作成します。
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    ここで

    • RANGE_NAME は、作成する IP アドレス範囲の名前です。範囲の名前は自由に設定できます。例: google-svcs
    • NETWORK_NAME は、アドレスが予約されたネットワーク リソースの名前です。Google により、新しいプロジェクトごとにデフォルト ネットワーク(名前は default)が作成されるため、このネットワークを使用できます。ただし、テスト以外のネットワークには、デフォルト ネットワークの使用はおすすめしません。
  2. CIDR 長が /22 の IP 範囲を作成します。
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    ここで、--addresses にはオプションで /22 の接頭辞長に 1 つ以上のアドレス IP を指定できます。たとえば、CIDR ブロック 192.168.0.0/22 を割り振るには、アドレスに 192.168.0.0 を指定し、プレフィックスの長さに 22 を指定します。IP 割り振りを作成するもご覧ください。

    --addresses パラメータを指定しない場合、使用可能なアドレス範囲が gcloud により選択されます。

    成功すると、gcloud は次のレスポンスを返します。

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    IP アドレスの範囲を作成すると、そのアドレスを解放するまで、アドレスがプロジェクトに関連付けられます。

  3. CIDR 長が /28 の 2 つ目の IP 範囲を作成します。この範囲はトラブルシューティングの目的で Apigee によって使用されます。カスタマイズや変更はできません。
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    ここで、--addresses にはオプションで /28 の接頭辞長に 1 つ以上のアドレス IP を指定できます。たとえば、CIDR ブロック 192.168.0.0/28 を割り振るには、アドレスに 192.168.0.0 を指定し、プレフィックスの長さに 28 を指定します。IP 割り振りを作成するもご覧ください。

    --addresses パラメータを指定しない場合、使用可能なアドレス範囲が gcloud により選択されます。

  4. 次のコマンドを使用して、サービスをネットワークに接続します。
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    このオペレーションは、完了するまでに数分かかることがあります。成功すると、gcloud は次のレスポンスを返します。

    Operation "operations/OPERATION_ID" finished successfully.

    ここで、OPERATION_ID は LRO(Long-Running Operation、長時間実行オペレーション)の UUID です。

    Apigee は、お客様のネットワークと Google のサービスの間の接続を作成します。具体的には、VPC ピアリングを介してプロジェクトを Service Networking API に接続します。また、Apigee は IP アドレスをプロジェクトに関連付けます。

ステップ 4: 組織を作成する

組織は、Apigee Edge の最上位コンテナです。組織にはすべての API プロキシと関連リソースが含まれています。詳細については、組織についてをご覧ください。

  1. gcloud alpha apigee organizations コマンドを使用して新しい評価組織を作成します。
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    ここで、--authorized-network はカスタム ピアリング ネットワークの名前です。例: default

  2. provision コマンドを実行すると、Google は LRO を起動して、評価組織を作成します。このオペレーションは、完了するまでに最大 40 分かかります。その間、gcloud には次の情報が表示されます。

    Provisioning organization...

    評価組織とそれに関連付けられたランタイム インスタンスが作成されると、gcloud から次のメッセージが返されます。

    Provisioning organization...done.
  3. 次のコマンドを実行します。

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    すべての UUID が FINISHED になっていることが確認できます。次に例を示します。

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

ステップ 5: ルーティングを構成する

外部アクセスを許可するか、内部アクセスのみを許可するかを決定します。

アクセスタイプ 構成とデプロイ プロセスの説明
内部

API プロキシへの内部アクセスのみを許可します。

ネットワーク内に新しい VM を作成して接続する必要があります。新しい VM から Apigee API プロキシにリクエストを送信できます。

外部

API プロキシへの外部アクセスを許可します。

Private Service Connect(PSC)を使用して、サービス プロデューサー(Apigee)とサービス コンシューマー(ピアリングされた VPC プロジェクトと自身が制御する 1 つ以上の他のクラウド プロジェクト)間のプライベート接続を有効にします。この方式では、リクエストはグローバル外部ロードバランサを通過して、サービス アタッチメントと呼ばれる単一のアタッチメント ポイントに到達します。この構成では、ネットワークが有効になっている任意のマシンから Apigee API プロキシ リクエストを送信できます。

それぞれのルーティング方法については、次のタブで説明します。

内部ルーティング

コマンドラインを使用して内部アクセス専用の API プロキシを設定する場合、このステップで実施するタスクはありません。ステップ 6: サンプル API プロキシを呼び出すに進み、API プロキシにリクエストを送信します。

外部ルーティング

このセクションでは、Apigee と管理している VPC 間の通信を許可するために Private Service Connect(PSC)を使用して外部ルーティングを構成する方法について説明します。外部クライアントから Apigee ランタイム インスタンスにリクエストを送信する前に、この操作を行う必要があります。

外部構成の手順は次のとおりです。

ステップ 5a: ネットワーク エンドポイント グループ(NEG)を作成する
ステップ 5b: ロードバランサを構成する

それぞれの手順は、次のセクションで説明します。

ステップ 5a: ネットワーク エンドポイント グループ(NEG)を作成する

  1. Apigee インスタンスサービス アタッチメントを取得します。
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    次のサンプル出力では、serviceAttachment 値が太字で表示されています。

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. 前のステップでインスタンスのレスポンス本文から取得したサービス アタッチメントを参照する Private Service Connect ネットワーク エンドポイント グループ(NEG)を作成します。

    gcloud compute network-endpoint-groups create NEG_NAME \
      --network-endpoint-type=private-service-connect \
      --psc-target-service=TARGET_SERVICE \
      --region=$RUNTIME_LOCATION \
      --network=$NETWORK_NAME \
      --subnet=SUBNET_NAME \
      --project=$PROJECT_ID
    

    次のように置き換えます。

    • NEG_NAME: ネットワーク エンドポイント グループの名前。
    • TARGET_SERVICE: 接続するサービス アタッチメント。例: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME: プロデューサーへのプライベート接続に使用されるサブネットの名前。サブネット サイズは小さくすることができます。PSC NEG にはサブネットから 1 つの IP のみが必要です。Apigee の場合、リージョンごとに必要な PSC NEG は 1 つだけです。サブネットは、VM または他のエンティティによって共有され、使用できます。サブネットが指定されていない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属している可能性があります。

ステップ 5b: ロードバランサを構成する

グローバル外部 HTTP(S) ロードバランサEXTERNAL_MANAGED に設定されたロード バランシング スキーム)を構成します。

Private Service Connect NEG はリージョナルですが、この構成の他のロード バランシング コンポーネントはグローバルです。

  1. ロードバランサにグローバル外部 IPv4 アドレスを予約します。
    gcloud compute addresses create ADDRESS_NAME \
      --ip-version=IPV4 --global --project=$PROJECT_ID

    ADDRESS_NAME は、IP アドレス リソースの名前に置き換えます。

    予約済み IP アドレスを表示するには、次のコマンドを実行します。

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID
  2. NEG のバックエンド サービスを作成します。
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。

  4. バックエンド サービスを NEG に追加します。
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    次のように置き換えます。

    • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
    • NEG_NAME: ネットワーク エンドポイント グループの名前。
  5. ロードバランサの URL マップを作成します。

    URL マップでは、デフォルトのバックエンド サービスを参照する必要があります。作成したバックエンド サービスをデフォルトとして設定します。

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --global --project=$PROJECT_ID

    次のように置き換えます。

    • URL_MAP_NAME: URL マップの名前。
    • DEFAULT_BACKEND_SERVICE_NAME: ロードバランサのデフォルト バックエンド サービスの名前。このデフォルトは、指定されたホスト名に一致するホストルールがない場合に使用されます。
  6. HTTPS ターゲット プロキシの SSL 証明書を作成します。

    HTTPS ロードバランサを作成するには、HTTPS ターゲット プロキシで使用する SSL 証明書リソースが必要です。SSL 証明書リソースは、Google マネージド SSL 証明書またはセルフマネージド SSL 証明書を使用して作成できます。

    次のコマンドを使用して、Google マネージド SSL 証明書リソースを作成します。

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    次のように置き換えます。

    • CERTIFICATE: 証明書の名前。
    • DOMAIN: 外部ロードバランサに使用するドメイン名。

    セルフマネージド SSL 証明書を作成するには、ローカル秘密鍵ファイルとローカル証明書ファイルが必要です。これらのファイルを作成する必要がある場合は、セルフマネージド SSL 証明書の使用をご覧ください。

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    次のように置き換えます。

    • CERTIFICATE: 証明書の名前。
    • LB_CERT: セルフ マネージド証明書の PEM 形式の証明書ファイルのパス。
    • LB_PRIVATE_KEY: セルフ マネージド証明書の PEM 形式の秘密鍵ファイルのパス。
  7. 証明書のプロビジョニングには最長で 1 時間かかることがあります。プロビジョニングのステータスを確認するには、次のコマンドを実行します。

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. 作成された Apigee 環境グループにドメインを追加します。環境グループの名前は eval-group です。
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. 環境グループ オペレーションのステータスを確認します。
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. SSL 証明書リソースを使用して、ターゲット HTTPS プロキシを作成します。

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    次のように置き換えます。

    • PROXY_NAME: ターゲット HTTPS プロキシの名前。
    • URL_MAP_NAME: URL マップの名前。
    • CERTIFICATE: 証明書リソースの名前。
  11. 転送ルールを作成します。
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443 \
      --global --project=$PROJECT_ID

    次のように置き換えます。

    • FWD_RULE: 転送ルールの名前。
    • ADDRESS_NAME: 転送ルールに使用するために予約した IP アドレス リソース。
    • PROXY_NAME: ターゲット HTTPS プロキシの名前。

Apigee のプロビジョニングが完了しました。

ステップ 6: サンプル API プロキシを呼び出す

プロビジョニング時に hello-world という API プロキシが作成され、デプロイされます。このステップでは、このプロキシを呼び出して新しい評価組織をテストします。

内部ルーティングでプロキシを呼び出す

ステップ 5 で内部ルーティング オプションを選択した場合は、内部専用アクセスに制限された API プロキシの呼び出しの手順に沿って操作します。

外部ルーティングでプロキシを呼び出す

ステップ 5 で外部ルーティング オプションを選択した場合は、このセクションの手順に沿って操作してください。

  1. ドメインの DNS エントリを設定します。このタスクを実行するには、次の 2 つの方法があります。
    • 登録事業者側でドメインを指す A レコードを作成します。たとえば、ドメインが sales.example.com で IP が 10.23.0.2 の場合は、sales.example.com のレコードがアドレス 10.23.0.2 を参照するようにします。

      予約済み IP アドレスを表示するには、次のコマンドを実行します。

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • Google Cloud DNS を使用して URL を IP アドレスにマッピングします。
  2. hello-world プロキシがデプロイされていることを確認します。
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. API プロキシを呼び出します。

    次のコマンドを実行して、ネットワークが有効になっている任意のマシンから API プロキシにリクエストを送信します。

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    ここで、ステップ 5: ルーティングを構成するで説明したように、DOMAIN は、証明書に含まれ環境グループに追加したドメインです。必要に応じて、この API を使用して環境グループから DOMAIN 値を取得できます。

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    成功すると、サンプル API プロキシはレスポンスを返します。

    Hello, Guest!

    トラブルシューティングのヒント:

    handshake エラーが発生した場合は、SSL 証明書のステータスを確認します。セルフマネージド証明書と Google マネージド証明書のトラブルシューティングについては、SSL 証明書のトラブルシューティングをご覧ください。

    登録ドメインに、ステップ 5 で作成したグローバル外部 IPv4 アドレスの IP アドレスを指す A レコードがあることを確認します。予約済み IP アドレスを表示するには、次のコマンドを実行します。

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    ドメイン構成を解決できない場合は、次のコマンドでプロキシを呼び出してみてください。

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

次: API プロキシの構築とデプロイの詳細については、最初のプロキシの構築の概要をご覧ください。