フィードバックを送信
VPC ピアリングを使用して有料組織をプロビジョニングする
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このページの内容は Apigee に適用されます。Apigee ハイブリッド には適用されません。
Apigee Edge のドキュメントを表示する。
このドキュメントでは、VPC ピアリングを使用して コマンドラインから Apigee をインストールして構成する方法について説明します。これらの手順は、データ所在地 が有効であるかどうかにかかわらず、有料組織のサブスクリプション モデルと従量課金制モデルの両方に適用されます。
ステップの概要
プロビジョニングの手順は次のとおりです。
ステップ 1: 環境変数を定義する
gcloud
を設定し、後の手順で使用する環境変数を定義します。
始める前に に記載されている設定要件を満たしていることを確認してください。
Cloud SDK がインストールされている必要があります。インストールする必要がある場合は、Cloud SDK のインストール をご覧ください。
gcloud CLI の初期化 の説明に従って Cloud SDK を初期化するか、前提条件 で作成した Google Cloud プロジェクトが gcloud
のデフォルト プロジェクトであることを確認します。
コマンド ターミナルで次の環境変数を定義します。必要な組織のタイプに対応するタブ、[データ所在地なし ] または [データ所在地 ] ありを選択します。ヒント: 環境変数をテキスト ファイルに保存すると、必要に応じて簡単に復元できます。
データ所在地を使用しない場合
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
ANALYTICS_REGION ="YOUR_ANALYTICS_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
注 : 組織のポリシーでリソース ロケーションの制約 が適用された Google Cloud プロジェクト内に新しい Apigee 組織をプロビジョニングする場合は、ロケーションの制約が global
に設定されていることを確認します。デフォルトでは、Apigee コントロール プレーンはグローバル エンティティであるため、global
以外の制約が適用されると、プロビジョニングは失敗します。詳細については、データ所在地の概要 をご覧ください。
ここで
AUTH は、署名なしトークンを含む Authentication
ヘッダーを定義します。
このヘッダーは、Apigee API を呼び出すときに使用します。なお、トークンは一定期間経過すると期限切れになりますが、同じコマンドを使用して簡単に再生成できます。詳細については、print-access-token コマンド のリファレンス ページをご覧ください。
PROJECT_ID は、前提条件 で作成した Cloud プロジェクト ID です。
PROJECT_NUMBER は、前提条件 で作成した Cloud プロジェクト番号です。
RUNTIME_LOCATION は、後で作成する Apigee インスタンスが配置される物理的なロケーションです。使用可能なランタイム ロケーションのリストについては、Apigee のロケーション をご覧ください。
注: RUNTIME_LOCATION
には、ゾーン名ではなくリージョン 名を使用してください。 たとえば、us-west1
はリージョン名、us-west1-a
はリージョン内のゾーンです。リージョンとゾーンの識別 もご覧ください。
ANALYTICS_REGION は、Apigee 分析データが保存される物理的なロケーションです。使用可能な Apigee API Analytics のリージョンのリストについては、Apigee のロケーション をご覧ください。
RUNTIME_LOCATION と ANALYTICS_REGION は同じリージョンにできますが、同じである必要はありません。
BILLING_TYPE は、作成する組織の請求タイプです。指定できる値は次のとおりです。
データ所在地を使用する場合
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
CONTROL_PLANE_LOCATION ="YOUR_CONTROL_PLANE_LOCATION "
CONSUMER_DATA_REGION ="YOUR_CONSUMER_DATA_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
重要: データ所在地を使用する場合、コントロール プレーンのロケーションは、含まれるリージョンです。他のすべてのリージョンは、コントロール プレーンのロケーション内に存在する必要があります。コントロール プレーンのロケーションが us
の場合、コンシューマー データ リージョンとランタイム ロケーションも us
内に存在する必要があります。たとえば、us-west1
は使用できますが、europe-west1
は使用できません。
ここで
(省略可)設定した値をエコーして作業内容を確認します。コマンドで変数を使用する場合は、変数名の前にドル記号($ )を付けます。
データ所在地を使用しない場合
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
echo
コマンドに対するレスポンスは次のようになります。
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us-west1
SUBSCRIPTION
データ所在地を使用する場合
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
echo
コマンドに対するレスポンスは次のようになります。
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us
us-west1
SUBSCRIPTION
ステップ 2: API を有効にする
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要な最小権限を付与することもできます。事前定義ロール と API 有効化権限 をご覧ください。
Apigee では、いくつかの Google Cloud APIs を有効にする必要があります。次の services enable
コマンドを実行して有効にします。
gcloud services enable apigee.googleapis.com \
servicenetworking.googleapis.com \
compute.googleapis.com \
cloudkms.googleapis.com --project=$PROJECT_ID
(省略可)処理を確認するには、services list
コマンドを使用して、有効な API をすべて表示します。
gcloud services list
レスポンスには、有効にした API を含むすべての有効なサービスが表示されます。
ステップ 3: Apigee サービス ID を作成する
警告: サービス アカウント は、Apigee がランタイム インスタンスをプロビジョニングするために必要な特別なアカウントです。サービス アカウントを削除すると、ランタイム インスタンスが使用できなくなります。
Apigee サービス ID を作成します。
gcloud beta services identity create --service=apigee.googleapis.com \
--project=$PROJECT_ID
エージェントが正常に作成されたことを確認します。レスポンスに service-PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com
の形式でエージェントの名前が表示されます。例:
Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
ステップ 4: サービス ネットワーキングを構成する
このステップでは、IP アドレス範囲(/22 と /28 CIDR 範囲)のペアを Apigee に割り振り、ネットワークと Apigee のネットワークの間の VPC ピアリングを実行します。各 Apigee インスタンスには、重複しない /22 CIDR 範囲と /28 CIDR 範囲が必要です。Apigee ランタイム プレーンには、この CIDR 範囲内の IP アドレスが割り当てられます。このため、範囲が Apigee 用に予約されており、VPC ネットワークの他のアプリケーションで使用されないようにする必要があります。詳細と重要な考慮事項については、ピアリングの範囲について もご覧ください。
1 つの Apigee インスタンス に対して十分なネットワーク IP 範囲を作成しています。追加の Apigee インスタンスを作成する場合は、インスタンスごとにこの手順を繰り返す必要があります。インスタンス間で範囲を共有することはできません。複数リージョンへの Apigee の拡張 もご覧ください。
重要: servicenetworking.googleapis.com
でのピアリング範囲とプライベート接続がすでにあり、さらに /22
、/28
の CIDR 範囲を処理するのに十分な範囲がある場合、この手順はスキップできます。必要な CIDR ブロックが Apigee によって作成されます。この手順は、/22
、/28
ブロックを作成するためのスペースがない場合、または存在していない特定の /22
、/28
を使用する場合にのみ必要になります。
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要な最小権限を付与することもできます。事前定義ロール とサービス ネットワーキングの権限 をご覧ください。
次の環境変数を作成します。
RANGE_NAME =YOUR_RANGE_NAME
NETWORK_NAME =YOUR_NETWORK_NAME
ここで
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
にアドレス範囲を指定できます(省略可)。たとえば、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 アドレスの範囲を作成すると、そのアドレスを解放するまで、アドレスがプロジェクトに関連付けられます。
ネットワーク IP 範囲が /22 の長さの CIDR で作成されていることを確認します。
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
CIDR /28 のネットワーク 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
にアドレス範囲を指定できます(省略可)。たとえば、CIDR ブロック 192.168.0.0/28
を割り振るには、アドレスに 192.168.0.0
を指定し、接頭辞の長さに 28
を指定します。IP 割り振りを作成する もご覧ください。
--addresses
パラメータを指定しない場合、使用可能なアドレス範囲が gcloud により選択されます。
ネットワーク IP 範囲が /28 の長さの CIDR で作成されていることを確認します。
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \
--project=$PROJECT_ID
次のコマンドを使用して、サービスをネットワークに接続します。
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_ID は LRO の UUID です。
Operation "operations/OPERATION_ID " finished successfully.
Apigee は、お客様のネットワークと Google のサービスの間の接続を作成します。具体的には、VPC ピアリングを介してプロジェクトを Service Networking API に接続します。また、Apigee は IP アドレスをプロジェクトに関連付けます。
数分後、VPC ピアリングが成功したかどうかを確認します。
gcloud services vpc-peerings list \
--network=$NETWORK_NAME \
--service=servicenetworking.googleapis.com \
--project=$PROJECT_ID
ステップ 5: 組織を作成する
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要な最小権限を付与することもできます。詳しくは、以下をご覧ください。
組織を作成する前に、ランタイム データベース暗号鍵のキーリングと鍵(ステップ 1 を参照)を作成する必要があります。また、データ所在地 を使用している場合は、コントロール プレーンの暗号化キーリングと鍵(ステップ 2 を参照)を作成する必要があります。これらの Cloud KMS 鍵は、ランタイムとコントロール プレーンのロケーション全体で保存、複製されるデータを暗号化します。Apigee はこれらのエンティティを使用して、KVM、キャッシュ、クライアント シークレットなどのアプリケーション データを暗号化し、データベースに保存します。詳細については、Apigee 暗号鍵について をご覧ください。
ランタイム データベースの暗号化キーリングと鍵を作成します。
ランタイム データベースの暗号化リングと鍵のロケーションの環境変数を定義します。これにより、環境変数の作成時に一貫性を保つことができ、ドキュメントの手順に沿った操作が容易になります。
値は、ランタイム データベースの暗号化キーリングと鍵が保存される物理的なロケーションです。
シングル リージョン
シングル リージョン構成 (1 つのリージョンに 1 つのインスタンスのみが存在): サポートされている KMS リージョン ロケーション から選択します。
次に例を示します。
RUNTIMEDBKEY_LOCATION ="us-west1"
$RUNTIME_LOCATION と(またリージョンとも)同じ値を設定できますが、同一である必要はありません。ただし、同じであれば、パフォーマンス上のメリットが得られることがあります。
マルチリージョン
マルチリージョン構成: サポートされているマルチリージョンのロケーション (us
、europe
など)またはデュアルリージョンのロケーション から選択します。
次に例を示します。
RUNTIMEDBKEY_LOCATION ="us"
米国内にマルチリージョン構成がある場合は、可能であれば、ロケーションに us
を使用することをおすすめします。それ以外の場合は、nam4
を使用します。
データベース キーリングと鍵名の環境変数を定義します。キーリングの名前は組織に固有のものである必要があります。2 番目のリージョンまたは後続のリージョンを作成する場合、他のキーリングと同じ名前にすることはできません。
RUNTIMEDB_KEY_RING_NAME =YOUR_DB_KEY_RING_NAME
RUNTIMEDB_KEY_NAME =YOUR_DB_KEY_NAME
(省略可)設定した値をエコーして作業内容を確認します。コマンドで変数を使用する場合は、変数名の前にドル記号($ )を付けます。echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
新しいキーリングを作成します。
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
Apigee ランタイム データベースの暗号鍵のロケーションは、Cloud HSM と Cloud EKM をサポートするすべての Cloud KMS のロケーションに対応しています。
鍵を作成します。
gcloud kms keys create $RUNTIMEDB_KEY_NAME \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
このコマンドを実行すると、鍵が作成され、キーリングに追加されます。
鍵 ID を取得します。
gcloud kms keys list \
--location=$RUNTIMEDBKEY_LOCATION \
--keyring=$RUNTIMEDB_KEY_RING_NAME \
--project=$PROJECT_ID
鍵 ID の構文は次のとおりです(ファイルパスに似ています)。
projects/PROJECT_ID /locations/RUNTIMEDBKEY_LOCATION /keyRings/RUNTIMEDB_KEY_RING_NAME /cryptoKeys/RUNTIMEDB_KEY_NAME
鍵 ID を環境変数に設定します。この変数は後のコマンドで使用します。
RUNTIMEDB_KEY_ID =YOUR_RUNTIMEDB_KEY_ID
Apigee サービス エージェントに、新しい鍵を使用するためのアクセス権を付与します。
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--member serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
このコマンドにより、鍵が Apigee サービス エージェントにバインドされます。
このリクエストが正常に完了すると、gcloud
から次のようなレスポンスが返されます。
Updated IAM policy for key [runtime].
bindings:
- members:
- serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
etag: BwWqgEuCuwk=
version: 1
次のようなエラーが発生することがあります。
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
サービス アカウントのメールアドレスにプロジェクト名ではなく、プロジェクト番号を使用していることを確認してください。
データ所在地 を使用している場合は、コントロール プレーンの暗号化キーリングと鍵を作成します。データ所在地を使用していない場合は、ステップ 3 に進みます。
注 : この手順は、コントロール プレーンのホスティング 法域として us (multiple regions in us)
または eu (multiple regions in European Union)
を選択した場合にのみ必要です。別のリージョンを選択した場合は、ステップ 3 に進みます。
コントロール プレーンの暗号化キーリングと鍵を作成するには、次の操作を行います。
コントロール プレーン データベースの暗号化リングと鍵のロケーションの環境変数を定義します。CONTROL_PLANE_LOCATION =YOUR_CONTROL_PLANE_LOCATION
CONSUMER_DATA_REGION =YOUR_CONSUMER_DATA_REGION
ここで
CONTROL_PLANE_LOCATION は、Apigee コントロール プレーン データが保存される物理的なロケーションです。使用可能なコントロール プレーンのロケーションのリストについては、Apigee のロケーション をご覧ください。
CONSUMER_DATA_REGION は、コントロール プレーン リージョンのサブリージョンです。CONTROL_PLANE_LOCATION と CONSUMER_DATA_REGION の両方を指定する必要があります。使用可能なコンシューマー データ リージョンのリストについては、Apigee のロケーション をご覧ください。
コントロール プレーン データベースのキーリングとキー名の環境変数を定義します。
キーリングの名前は組織に固有のものである必要があります。
CONTROL_PLANE_KEY_RING_NAME =YOUR_CONTROL_PLANE_KEY_RING_NAME
CONTROL_PLANE_KEY_NAME =YOUR_CONTROL_PLANE_KEY_NAME
CONSUMER_DATA_KEY_RING_NAME =YOUR_CONSUMER_DATA_KEY_RING_NAME
CONSUMER_DATA_KEY_NAME =YOUR_CONSUMER_DATA_REGION_KEY_NAME
ここで
CONTROL_PLANE_KEY_RING_NAME は、コントロール プレーン暗号化キーリング の識別に使用するキーリングの名前です。
CONTROL_PLANE_KEY_NAME は、コントロール プレーンの暗号鍵 の識別に使用する鍵の名前です。
CONSUMER_DATA_KEY_RING_NAME は、コンシューマー データ リージョンの暗号化キーリング の識別に使用するキーリングの名前です。
CONSUMER_DATA_KEY_NAME は、一般ユーザー向けデータ リージョンの暗号鍵 の識別に使用する鍵の名前です。
新しいキーリングを作成します。
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--project $PROJECT_ID
鍵を作成します。
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--purpose "encryption" \
--project $PROJECT_ID
このコマンドを実行すると、鍵が作成され、キーリングに追加されます。
鍵 ID を取得します。
gcloud kms keys list \
--location=$CONTROL_PLANE_LOCATION \
--keyring=$CONTROL_PLANE_KEY_RING_NAME \
--project=$PROJECT_ID
gcloud kms keys list \
--location=$CONSUMER_DATA_REGION \
--keyring=$CONSUMER_DATA_KEY_RING_NAME \
--project=$PROJECT_ID
鍵 ID の構文は次のとおりです(ファイルパスに似ています)。
projects/PROJECT_ID /locations/CONTROL_PLANE_LOCATION /keyRings/CONTROL_PLANE_KEY_RING_NAME /cryptoKeys/CONTROL_PLANE_KEY_NAME
projects/PROJECT_ID /locations/CONSUMER_DATA_REGION /keyRings/CONSUMER_DATA_KEY_RING_NAME /cryptoKeys/CONSUMER_DATA_KEY_NAME
鍵 ID を環境変数に設定します。この変数は後のコマンドで使用します。
CONTROL_PLANE_KEY_ID =YOUR_CONTROL_PLANE_KEY_ID
CONSUMER_DATA_KEY_ID =YOUR_CONSUMER_DATA_KEY_ID
Apigee サービス エージェントに、新しい鍵を使用するためのアクセス権を付与します。
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \
--location $CONTROL_PLANE_LOCATION \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \
--location $CONSUMER_DATA_REGION \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
このコマンドにより、鍵が Apigee サービス エージェントにバインドされます。このリクエストが正常に完了すると、gcloud から次のようなレスポンスが返されます。
Updated IAM policy for key [runtime].
bindings:
- members:
- serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
etag: BwWqgEuCuwk=
version: 1
次のようなエラーが発生することがあります。
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
サービス アカウントのメールアドレスにプロジェクト名ではなく、プロジェクト番号を使用していることを確認してください。
CMEK のトラブルシューティング もご覧ください。
組織を作成するには、次のリクエストを Apigee organizations API に送信します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"analyticsRegion":"'"$ANALYTICS_REGION "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
ここで
-d
には、リクエストのデータ ペイロードを定義します。このペイロードには、次のものを含める必要があります。
データ所在地を使用する場合
API を使用して組織を作成 します。
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID "'",
"apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION "'",
"apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
ここで
-d
には、リクエストのデータ ペイロードを定義します。このペイロードには、次のものを含める必要があります。
name
: 新しい組織を指定します。プロジェクト ID と同じ名前にする必要があります。
runtimeType
: CLOUD
に設定します。
billingType
: 作成した組織の請求タイプを指定します。
controlPlaneEncryptionKeyName
: コントロール プレーンのキー ID。
apiConsumerDataLocation
: 内部リソースで使用するサブリージョンも指定する必要があります。サポートされている値については、データ所在地のリージョン をご覧ください。
apiConsumerDataEncryptionKeyName
: コンシューマー データ リージョン キー ID。
authorizedNetwork
: サービス ネットワーキングの構成 で指定したピアリング ネットワークを指定します。
runtimeDatabaseEncryptionKeyName
: 前の手順で作成したアプリケーション暗号鍵の ID。ID はファイルパスのような構造になっています。例:
projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
このコマンドを実行すると、Apigee は「長時間実行オペレーション」を開始します。完了までに数分かかることがあります。
エラーが発生した場合は、データ ペイロード内の変数値が引用符で囲まれているかどうか確認してください。次の例のように、$PROJECT_ID 変数を二重引用符、単一引用符、二重引用符で囲んでください。
"'"$PROJECT_ID "'"
リクエスト値に(環境変数ではなく)書式なし文字列を使用する場合は、次の例に示すように、単一引用符で囲まれたペイロード文字列内で文字列を二重引用符で囲みます。
'{ "name":"my-gcp-project", ... }'
数分お待ちください。
作成リクエストのステータスを確認するには、次の例のように Apigee List organizations API に GET
リクエストを送信します。
データ所在地を使用しない場合
curl -H "Authorization: Bearer $AUTH " "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID "
データ所在地を使用する場合
curl -H "Authorization: Bearer $AUTH " "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID "
次のレスポンスが表示された場合、組織の作成はまだ完了していません。
{
"error": {
"code": 403,
"message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
"status": "PERMISSION_DENIED"
}
}
Apigee で新しい組織が正常に作成された場合、次のようなレスポンスを受け取ります。
データ所在地を使用しない場合
{
"name": "my-cloud-project",
"createdAt": "1592586495539",
"lastModifiedAt": "1592586495539",
"environments": [],
"properties": {
"property": [
{
"name": "features.hybrid.enabled",
"value": "true"
},
{
"name": "features.mart.connect.enabled",
"value": "true"
}
]
},
"analyticsRegion": "us-west1",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"authorizedNetwork": "my-network",
"projectId": "my-cloud-project"
}
データ所在地を使用する場合
{
"name": "my-cloud-project",
"createdAt": "1681412783749",
"lastModifiedAt": "1681412783749",
"environments": [
"test-env"
],
"properties": {
"property": [
{
"name": "features.mart.connect.enabled",
"value": "true"
},
{
"name": "features.hybrid.enabled",
"value": "true"
}
]
},
"authorizedNetwork": "default",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"projectId": "my-cloud-project",
"state": "ACTIVE",
"billingType": "PAYG",
"addonsConfig": {
"advancedApiOpsConfig": {},
"integrationConfig": {},
"monetizationConfig": {},
"connectorsPlatformConfig": {}
},
"apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name",
"controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"apiConsumerDataLocation": "us-central1",
"apigeeProjectId": "i0c2a37e80f9850ab-tp"
}
Apigee から HTTP エラー レスポンスが返された場合は、Apigee 組織を作成する をご覧ください。
ヒント: 権限がある Apigee 組織と関連する Google Cloud プロジェクトを一覧表示するには、次のエンドポイントに organizations API を使用して GET
リクエストを送信します。
次の例のように、Apigee によってプロジェクトのリストが返されます。
{
"organizations": [
{
"organization": "my-cloud-project",
"projectIds": [
"my-cloud-project"
],
"projectId": "my-cloud-project",
"location": "northamerica-northeast1"
},
{
"organization": "my-cloud-project-2",
"projectIds": [
"my-cloud-project-2"
],
"projectId": "my-cloud-project-2",
"location": "northamerica-northeast1"
}
]
}
ステップ 6: ランタイム インスタンスを作成する
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要な最小権限を付与することもできます。事前定義ロール とランタイム インスタンス権限 をご覧ください。
ランタイム インスタンスは、Apigee プロジェクトと関連サービスが保存される場所です。これは、サービスにユーザー向けのエンドポイントを提供します。新しいランタイム インスタンスを作成するには:
Apigee で組織の作成が完了したかを確認します。Apigee 組織を作成する で新しい組織を作成するリクエストを送信しましたが、続行する前に、この手順を完了していることを確認する必要があります。
確認するには、次のリクエストを organizations API に送信します。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID "
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID "
組織が存在していて、適切な権限がある場合、Apigee から組織に関する詳細情報が返されます。Apigee によってエラーが返された場合は、数分待ってから、もう一度リクエストを送信してください。
データベースに暗号鍵を作成した前述のタスクと同様に、サーバー側でデータの暗号化に使用する Cloud KMS 鍵を作成する必要があります。はじめに、次の環境変数を定義します。
INSTANCE_NAME =YOUR_INSTANCE_NAME
RUNTIME_LOCATION =YOUR_RUNTIME_LOCATION
DISK_KEY_RING_NAME =YOUR_DISK_KEY_RING_NAME
DISK_KEY_NAME =YOUR_DISK_KEY_NAME
ここで
INSTANCE_NAME : 新しいインスタンスの名前。例: my-runtime-instance
。名前の先頭は小文字にし、長さは 32 文字以下にする必要があります。また、使用できるのは小文字、数字、ハイフンのみです。先頭または末尾をハイフンにすることはできません。また 2 文字以上にする必要があります。ヒント: インスタンス名は、次の正規表現と一致している必要があります。 ^[a-z][a-z\-\d]{0,30}[a-z\d]$
RUNTIME_LOCATION は、クラスタがホストされている物理的な場所です。有効な値は、Compute Engine によって許可されている任意のロケーションです(使用可能なリージョンとゾーン をご覧ください)。この例では us-west1
を使用しています。
DISK_KEY_RING_NAME は、ディスクの暗号化キーリングの名前です。
DISK_KEY_NAME はディスク暗号鍵の名前です。
ディスク暗号鍵を作成します。
新しいディスク キーリングを作成します。
gcloud kms keyrings create $DISK_KEY_RING_NAME \
--location $RUNTIME_LOCATION \
--project $PROJECT_ID
ディスク キーリングは、インスタンスと同じロケーションに設定する必要があります。各インスタンスとキーリングには、それぞれ独自のロケーションが必要です。
新しいディスク鍵を作成します。
gcloud kms keys create $DISK_KEY_NAME \
--keyring $DISK_KEY_RING_NAME \
--location $RUNTIME_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID 鍵は、鍵のパスで参照できます。 鍵パスは、次のコマンドで取得できます。
gcloud kms keys list \
--location=$RUNTIME_LOCATION \
--keyring=$DISK_KEY_RING_NAME \
--project=$PROJECT_ID
鍵パスは次のようになります。
projects/PROJECT_ID /locations/RUNTIME_LOCATION /keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
鍵パスを環境変数に設定します。この変数は後のコマンドで使用します。
DISK_KEY_ID =YOUR_DISK_KEY_ID
例: DISK_KEY_ID=projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Apigee サービス エージェントに、新しい鍵を使用するためのアクセス権を付与します。
gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \
--location $RUNTIME_LOCATION \
--keyring $DISK_KEY_RING_NAME \
--member serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
このコマンドにより、鍵が Apigee サービス エージェントにバインドされます。
詳細については、Apigee 暗号鍵について をご覧ください。
Apigee インスタンスの作成に使用する IP 範囲を予約します。
Apigee Instances API に POST
リクエストを送信して、プロジェクトの新しいランタイム インスタンスを作成します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"consumerAcceptList":["'"$PROJECT_ID "'"]
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"consumerAcceptList":["'"$PROJECT_ID "'"]
}'
ここで
注: デフォルトでは、Apigee は、接頭辞のサイズが /22 の利用可能な CIDR 範囲をインスタンスに割り当てます。高度なユースケースでは、Apigee で使用する IP 範囲を厳密に指定しなければならない場合があります。その場合は、カスタム IP 範囲を指定します。カスタム IP 範囲の接頭辞は、/22 と /28 のいずれか、または両方です。範囲は、プロジェクトと Apigee 間のプライベート接続の一部として使用できる必要があります。
独自の IP 範囲を指定するには、Instances API リファレンス ドキュメントで説明されているように、ipRange
リクエスト パラメータを使用します。
たとえば、CIDR 形式の IP 範囲を保持する環境変数を作成します。
MY_IP_RANGE=CIDR_RANGE
例:
MY_IP_RANGE=10.0.0.1/22
次の例は、/22 と /28 の範囲を指定する方法を示しています。
MY_22_RANGE=10.0.0.1/22,MY_28_RANGE=10.0.0.2/28
データ所在地を使用しない場合:
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"ipRange":"'"$MY_22_RANGE,$MY_28_RANGE "'",
"consumerAcceptList":[ARRAY_OF_PROJECT_IDS ]
}'
データ所在地を使用する場合:
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"ipRange":"'"$MY_22_RANGE,$MY_28_RANGE "'",
"consumerAcceptList":[ARRAY_OF_PROJECT_IDS ]
}'
一度作成した IP 範囲は後で変更できません。範囲を変更する必要がある場合は、新しいインスタンスを作成しなければなりません。
注: 作成される /22 範囲に加えて、Apigee では重複しない利用可能な /28 CIDR 範囲が必要です。この /28 範囲は、前の手順のサービス ネットワーキングの構成 で作成しています。この /28 範囲は、トラブルシューティングの目的でインスタンスにアクセスするために使用され、カスタマイズや変更はできません。インスタンスの作成 もご覧ください。
Apigee で新しい Kubernetes クラスタを作成して起動し、そのクラスタに Apigee リソースをインストールして、ロード バランシングを設定する必要があるため、このリクエストには 20 分ほどかかることがあります。
Apigee からエラーが返された場合は、新しいインスタンスの作成 をご覧ください。
ランタイム インスタンスの作成リクエストのステータスを確認するには、次のコマンドを実行します。ステータスが ACTIVE の場合、次のステップに進みます。
データ所在地を使用しない場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME "
データ所在地を使用する場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME "
ステップ 7: 環境を作成する
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要な最小権限を付与することもできます。詳しくは、以下をご覧ください。
環境を作成し、コマンドラインで環境をランタイムに接続するには:
このセクションで使用する環境変数を定義します。作成する特定の環境変数は、サブスクリプション または従量制 の組織に環境を作成するかどうかによって異なります。
サブスクリプション
サブスクリプション環境の場合は、次の変数を作成します。
ENVIRONMENT_NAME ="YOUR_ENV_NAME "
ENV_GROUP_NAME ="YOUR_ENV_GROUP_NAME "
ENV_GROUP_HOSTNAME ="YOUR_ENV_GROUP_HOSTNAME "
ここで
ENVIRONMENT_NAME
は文字列名です。例: test
ENV_GROUP_NAME
は文字列名です。例: test-group
ENV_GROUP_HOSTNAME
は、有効なドメインホスト名です。例: foo.example.com
従量課金制
従量課金制環境の場合は、次の変数を作成します。
ENVIRONMENT_NAME ="YOUR_ENV_NAME "
ENVIRONMENT_TYPE ="YOUR_ENV_TYPE "
ENV_GROUP_NAME ="YOUR_ENV_GROUP_NAME "
ENV_GROUP_HOSTNAME ="YOUR_ENV_GROUP_HOSTNAME "
ここで
ENVIRONMENT_NAME
は文字列名です。例: test
ENVIRONMENT_TYPE
は、この環境の環境タイプ で、従量課金制 ユーザーにのみ適用されます。このユーザーは BASE
、INTERMEDIATE
、COMPREHENSIVE
のいずれかの値を指定する必要があります。他のユーザーは環境タイプを省略します。
ENV_GROUP_NAME
は文字列名です。例: test-group
ENV_GROUP_HOSTNAME
は、有効なドメインホスト名です。例: foo.example.com
Environments API を使用して新しい環境を作成します。使用する特定のコマンドは、作成する環境がサブスクリプション 組織用か従量課金制 の組織用かによって異なります。
サブスクリプション
新しいサブスクリプション環境の場合は、次のコマンドを使用します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'"
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'"
}'
Apigee により新しい環境が作成されます。
従量課金制
新しい従量課金制環境 の場合は、次のコマンドを使用します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'",
"type":"'"$ENVIRONMENT_TYPE "'"
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'",
"type":"'"$ENVIRONMENT_TYPE "'"
}'
Apigee により新しい環境が作成されます。
続行する前に、Environments API を呼び出して、Apigee によって新しい環境の作成が完了したことを確認します。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments"
Apigee により使用可能な環境のリストが返されます。たとえば、環境名が test
の場合、Apigee により次のレスポンスが返されます。
[
"test"
] ヒント: 次のようなコマンドを送信することで、特定の環境のステータスを確認できます。
データ所在地を使用しない場合:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME "
データ所在地を使用する場合:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME "
Apigee によってその環境に関する詳細のみが返されます。次に例を示します。
{
"name": "my-cloud-project",
"createdAt": "1592589683002",
"lastModifiedAt": "1592589683002",
"state": "ACTIVE"
}
新しい環境をランタイム インスタンスに接続します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
このオペレーションは、完了するまでに数分かかることがあります。接続が完了したかどうかを確認するには、次のコマンドを実行します。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH" \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments"
次のような出力が表示されたら、次のステップに進みます。
{
"attachments": [
{
"name": "ed628782-c893-4095-b71c-f4731805290a",
"environment": "test",
"createdAt": "1641604447542"
}
]
}
次のコマンドを使用して新しい環境グループを作成します。詳細については、環境と環境グループについて をご覧ください。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name": "'"$ENV_GROUP_NAME "'",
"hostnames":["'"$ENV_GROUP_HOSTNAME "'"]
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name": "'"$ENV_GROUP_NAME "'",
"hostnames":["'"$ENV_GROUP_HOSTNAME "'"]
}'
ヒント: グループに環境を接続すると、グループ内のホスト名を介してその環境内のプロキシがルーティング可能になります。
オペレーションが完了するのを待ちます。新しいグループのステータスは、次のようなリクエストを使用して確認できます。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME"
次のコマンドを使用して、新しい環境を新しい環境グループに接続します。
データ所在地を使用しない場合
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments" \
-X POST \
-H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
データ所在地を使用する場合
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments" \
-X POST \
-H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
オペレーションのステータスを確認するには、次の API を呼び出します。
データ所在地を使用しない場合
curl -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments"
データ所在地を使用する場合
curl -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments"
このステップでは、クライアント アプリケーションが Apigee と通信する方法を構成します。クライアントから Apigee へのトラフィックは「ノースバウンド」トラフィックとも呼ばれます。ノースバウンドの構成オプションには次が含まれます。使用する構成オプションに移動し、そのオプションの手順を実施します。
アクセスタイプ
構成とデプロイ プロセスの説明
VPC ピアリングを使用する内部アクセス
API プロキシへの内部アクセスのみを許可します。
ネットワーク内に新しい VM を作成して接続する必要があります。新しい VM から Apigee API プロキシにリクエストを送信できます。
MIG を使用する外部アクセス
API プロキシへの外部アクセスを許可します。
マネージド インスタンス グループ (MIG)を使用して、グローバル ロードバランサのバックエンド サービスから Apigee に API トラフィックを送信します。この構成では、Apigee はピアリングした VPC にのみ接続できます。この構成では、任意のネットワーク対応マシンから Apigee API プロキシ リクエストを送信できます。
PSC を使用する内部アクセス (新規)
Private Service Connect (PSC)を使用して、任意の Google Cloud プロジェクトから API プロキシへの内部アクセスのみを許可します。
PSC を使用すると、サービス プロデューサー(Apigee)とサービス コンシューマー(ピアリングされた VPC プロジェクトと自身が制御する 1 つ以上の他の Cloud プロジェクト)間のプライベート接続が可能になります。この方式では、リクエストはサービス エンドポイントまたはリージョンの内部ロードバランサを経由して、サービス アタッチメント という単一のアタッチメント ポイントに到達します。この構成により、内部クライアントは、ネットワークが有効になっている任意のマシンから Apigee API プロキシ リクエストを送信できます。
PSC を使用する外部アクセス (新規)
Private Service Connect (PSC)を使用して API プロキシへの外部アクセスを許可します。
Private Service Connect (PSC)を使用して、サービス プロデューサー(Apigee)とサービス コンシューマー(ピアリングされた VPC プロジェクトと自身が制御する 1 つ以上の他のクラウド プロジェクト)間のプライベート接続を有効にします。この方式では、リクエストはグローバル外部ロードバランサまたはリージョン外部ロードバランサを経由して、サービス アタッチメント という単一のアタッチメント ポイントに到達します。この構成では、ネットワークが有効になっている任意のマシンから Apigee API プロキシ リクエストを送信できます。
それぞれのルーティング アプローチについて、以下で説明します。
内部ルーティング(VPC)
内部クライアントから Apigee へのトラフィックのルーティングでは、TLS 終端を使用するかどうかを選択できます。
TLS オプション: TLS を有効にして内部クライアントから API プロキシ呼び出しを行う場合は、次の 2 つの選択肢があります。
非 TLS オプション: TLS 終端を有効にする必要がない場合は、クライアントが TLS を無効にする API プロキシを呼び出すことができます。たとえば、cURL で -k
オプションを使用すると、TLS を無効にできます。内部専用アクセスで API プロキシを呼び出す をご覧ください。
外部ルーティング(MIG)
このセクションでは、マネージド インスタンス グループ (MIG)を使用して、グローバル ロードバランサのバックエンド サービスを Apigee に送信するように、API プロキシへの外部アクセスを許可するルーティングを構成する方法について説明します。 外部クライアントから Apigee ランタイム インスタンスにリクエストを送信する前に、この操作を行う必要があります。
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要最小限の権限を付与することもできます。事前定義ロール とアクセス ルーティング権限 をご覧ください。
注: マルチリージョンの設定では、ここで説明するコマンドラインの説明に従う必要 があります。プロビジョニング UI では、グローバル ロードバランサに追加できる MIG は 1 つだけです。MIG はグローバルではなく、リージョンです。したがって、マルチリージョンの場合は、リージョンごとに 1 つの MIG を作成し、グローバル ロードバランサのバックエンド サービスに追加する必要があります。
一般的なプロセスは以下のとおりです。
ステップ 8a: VPC ネットワークのサブネットに対して限定公開の Google アクセスを有効にする
ステップ 8b: 環境変数を設定する
ステップ 8c: マネージド インスタンス グループを作成する
ステップ 8d: ロードバランサの SSL 証明書と鍵を作成する
ステップ 8e: グローバル ロードバランサを作成する
ステップ 8f: 予約済みの IP アドレスを取得してファイアウォール ルールを作成する
それぞれの手順は、次のセクションで説明します。
ステップ 8a: VPC ネットワークのサブネットに対して限定公開の Google アクセスを有効にする
VPC ネットワークのサブネットで限定公開の Google アクセス を有効にするには、限定公開の Google アクセスを有効にする に記載された手順に沿ってください。
注: マルチリージョンを設定する場合は、この手順をリージョンごとに 1 回実施する必要があります。
ステップ 8b: 環境変数を設定する
マルチリージョン: マルチリージョンの設定では、リージョンごとに個別の MIG が必要です。複数のリージョンを構成する場合は、リージョンごとに手順 8b と 8c を繰り返し、各リージョンに適切な変数を代入します。
このセクションの手順では、環境変数を使用して、繰り返し使用される文字列を参照します。続行する前に、これらを設定することをおすすめします。
MIG_NAME =apigee-mig-MIG_NAME # You can choose a different name if you like
VPC_NAME =default # If you are using a shared VPC , use the shared VPC name
VPC_SUBNET =default # Private Google Access must be enabled for this subnet
REGION =RUNTIME_REGION # The same region as your Apigee runtime instance
APIGEE_ENDPOINT =APIGEE_INSTANCE_IP
# See the tip below for details on getting this IP address value
これらの変数は、残りのプロセスで複数回使用します。複数のリージョンを構成する場合は、固有の値を持つ変数を各リージョンに作成します。
ヒント: 正しい Apigee インスタンスの IP アドレスを取得するには、次の例のようにインスタンス API を使用します。
データ所在地を使用しない場合:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
データ所在地を使用する場合:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
Apigee は、インスタンスに関する詳細を返します。次に例を示します。
{
"instances": [
{
"name": "my-runtime-instance",
"location": "us-west1",
"host": "10.16.0.2",
"port": "443"
},
...
]
}
$APIGEE_ENDPOINT 環境変数に割り当てることができるインスタンス IP アドレスは、host
項目の値です。この例での値は 10.16.0.2
です。
マルチリージョン インストールでは、API 呼び出しが各リージョンのロケーションのインスタンスの詳細を返します。その場合は、次のセクション の手順を実施する際に、ロケーションごとに別々のマネージド インスタンス グループ(MIG)を作成する必要があります。
ステップ 8c: マネージド インスタンス グループを作成する
マルチリージョン: マルチリージョンの設定では、リージョンごとに個別の MIG が必要です。複数のリージョンを構成する場合は、リージョンごとに手順 8b と 8c を繰り返し、各リージョンに適切な変数を代入します。
この手順では、マネージド インスタンス グループ(MIG)を作成して構成します。後のステップで、グローバル ロードバランサに接続されたバックエンド サービスに MIG を追加します。MIG は、グローバル ロードバランサのバックエンド サービスから Apigee に API トラフィックを送信するために必要です。
MIG を作成するには:
次のコマンドを実行して、インスタンス テンプレート を作成します。
gcloud compute instance-templates create $MIG_NAME \
--project $PROJECT_ID \
--region $REGION \
--network $VPC_NAME \
--subnet $VPC_SUBNET \
--tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
--machine-type e2-medium --image-family debian-12 \
--image-project debian-cloud --boot-disk-size 20GB \
--no-address \
--metadata ENDPOINT=$APIGEE_ENDPOINT ,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh
このコマンドからわかるように、マシンのタイプは e2-medium
です。Debian 12 を実行し、20 GB のディスク容量があります。startup-script.sh
スクリプトは、ロードバランサから Apigee インスタンスにインバウンド トラフィックを転送するように MIG を構成します。
次のコマンドを実行して、マネージド インスタンス グループ を作成します。
gcloud compute instance-groups managed create $MIG_NAME \
--project $PROJECT_ID --base-instance-name apigee-mig \
--size 2 --template $MIG_NAME --region $REGION
次のコマンドを実行して、グループの自動スケーリング を構成します。
注: e2-medium インスタンスを含むリージョン MIG は最大 6 Gbps をサポートできますスループット要件を満たさない場合は、VM のサイズを大きくするか、レプリカ数を増やすことを検討してください。
gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
--project $PROJECT_ID --region $REGION --max-num-replicas 3 \
--target-cpu-utilization 0.75 --cool-down-period 90
次のコマンドを実行して、名前付きポートを定義します。
gcloud compute instance-groups managed set-named-ports $MIG_NAME \
--project $PROJECT_ID --region $REGION --named-ports https:443
ステップ 8d: ロードバランサの SSL 証明書と鍵を作成する
単一リージョンとマルチリージョンのどちらにインストールする場合でも、認証情報を作成する必要があるのは 1 回だけです。後のステップで、これらの認証情報をロードバランサのターゲット HTTPS プロキシに関連付けます。
認証情報は以下を使用して作成できます。
Google Cloud ロードバランサの SSL 証明書の作成と使用の詳細については、SSL 証明書 と SSL 証明書の概要 をご覧ください。
次の例では、Google マネージド SSL 証明書を作成します。
次の環境変数を作成します。
CERTIFICATE_NAME =YOUR_CERT_NAME
DOMAIN_HOSTNAME =YOUR_DOMAIN_HOSTNAME
登録した有効なドメインホスト名に、DOMAIN_HOSTNAME
を設定します。後のステップでは、ロードバランサの IP アドレスを取得し、そのアドレスを指すようにドメイン A レコードを更新します。たとえば、ドメインホスト名は foo.example.com
のようになります。
gcloud compute ssl-certificates create コマンドを実行します。
gcloud compute ssl-certificates create $CERTIFICATE_NAME \
--domains=$DOMAIN_HOSTNAME \
--project $PROJECT_ID \
--global
証明書のプロビジョニングには最長で 1 時間かかることがあります。プロビジョニングのステータスを確認するには、次のコマンドを実行します。
gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
--global \
--format="get(name,managed.status, managed.Status)"
注: 環境グループのホスト名に対して、すべて同じロードバランサの IP アドレスを参照する複数の DNS A レコードを作成できます。
ステップ 8e: グローバル ロードバランサを作成する
ヘルスチェック を作成します。
gcloud compute health-checks create https HEALTH_CHECK_NAME \
--project $PROJECT_ID --port 443 --global \
--request-path /healthz/ingress
このヘルスチェックを使用して、バックエンド サービスが実行されていることを確認します。特定のプロキシに対してより高度なヘルスチェックを構成する方法については、ヘルスチェックの実施 をご覧ください。
注: ヘルスチェックの作成中に、次のエラーが発生することがあります。
ERROR: unrecognized arguments: --global,
gcloud components update
コマンドを使用して gcloud
の更新を試みます。
バックエンド サービス を作成します。
gcloud compute backend-services create PROXY_BACKEND_NAME \
--project $PROJECT_ID \
--protocol HTTPS \
--health-checks HEALTH_CHECK_NAME \
--port-name https \
--timeout 302s \
--connection-draining-timeout 300s \
--global
注: Apigee のエンドポイント プロパティのリファレンス に記載されているように、Apigee の Ingress(内部ロードバランサ)にはデフォルトのタイムアウト(300 秒)が設定されています。ロードバランサのバックエンド サービスのタイムアウトを 302 秒に設定すると、長時間実行されているトランザクションがある場合に、Apigee 内で backend-services コマンドを完全に実行できます。この値を 60 秒などより小さい値に設定すると、ロードバランサがリクエストの完了前にタイムアウトし、502 レスポンスが返される可能性があります。
次のコマンドを使用して、バックエンド サービスに MIG を追加します。マルチリージョン: マルチリージョン設定の場合は、MIG ごとに別々の MIG を作成する必要があります。この手順を繰り返して、各 MIG をバックエンド サービスに追加します。各リージョンに対して適切な REGION
変数と MIG_NAME
変数に置き換えてください。
gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
--project $PROJECT_ID --instance-group $MIG_NAME \
--instance-group-region $REGION \
--balancing-mode UTILIZATION --max-utilization 0.8 --global
次のコマンドを使用して、ロード バランシング URL マップ を作成します。
gcloud compute url-maps create MIG_PROXY_MAP_NAME \
--project $PROJECT_ID --default-service PROXY_BACKEND_NAME
次のコマンドを使用して、ロード バランシングのターゲット HTTPS プロキシを作成します。
gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
--project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
--ssl-certificates $CERTIFICATE_NAME
ステップ 8f: 予約済みの IP アドレスを取得してファイアウォール ルールを作成する
ロードバランサに IP アドレスを割り当ててから、ロードバランサが MIG へのアクセスを許可するルールを作成する必要があります。この手順は、インストールするリージョンが 1 つのリージョンかマルチリージョンかにかかわらず、1 回のみ行う必要があります。
ロードバランサの IP アドレスを予約 します。
gcloud compute addresses create ADDRESSES_NAME \
--project $PROJECT_ID \
--ip-version=IPV4 \
--global
次のコマンドを使用して、グローバル転送ルール を作成します。
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
--project $PROJECT_ID --address ADDRESSES_NAME --global \
--target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
次のコマンドを実行して、予約済みの IP アドレスを取得します。
gcloud compute addresses describe ADDRESSES_NAME \
--project $PROJECT_ID --format="get(address)" --global
重要な手順: DNS レコードが管理されているサイト、DNS ホスト、または ISP に移動し、ドメインの DNS レコードが Google Cloud ロードバランサの IP アドレスに解決されることを確認します。このアドレスは、最後のステップで返された IP 値です。詳細については、ロードバランサの IP アドレスを指すように DNS A および AAAA レコードを更新する をご覧ください。
次のコマンドを使用して、ロードバランサに MIG へのアクセスを許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
--project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
--source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy
IP アドレス範囲 130.211.0.0/22
と 35.191.0.0/16
は、Google Cloud Load Balancing の送信元 IP アドレス範囲です。このファイアウォール ルールにより、Google Cloud Load Balancing から MIG へのヘルスチェック リクエストが可能になります。
Apigee のプロビジョニングが完了しました。サンプル プロキシをデプロイする に移動します。
内部ルーティング(PSC)
このセクションでは、Private Service Connect (PSC)を使用して、任意の Google Cloud プロジェクトから API プロキシへの内部アクセスのみを許可する方法について説明します。
PSC を使用して内部アクセスを構成するには、次の 2 つのオプションがあります。
ご使用の構成に応じて以下のタブを選択し、次の操作を行います。
サービス エンドポイント
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要最小限の権限を付与することもできます。事前定義されたロール とアクセス ルーティング権限 をご覧ください。
サービス アタッチメントに PSC サービス エンドポイントを作成する
前の手順で作成したインスタンスからサービス アタッチメントを取得します。
データ所在地を使用しない場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
データ所在地を使用する場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
次のサンプル出力では、serviceAttachment
値が太字で表示されています。
{
"instances": [
{
"name": "us-west1",
"location": "us-west1",
"host": "10.82.192.2",
"port": "443",
"createdAt": "1645731488019",
"lastModifiedAt": "1646504754219",
"diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
"state": "ACTIVE",
"peeringCidrRange": "SLASH_22",
"runtimeVersion": "1-7-0-20220228-190814",
"ipRange": "10.82.192.0/22,10.82.196.0/28",
"consumerAcceptList": [
"875609189304"
],
"serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1 "
}
]
} 注: Apigee 組織の作成 に使用したプロジェクトの ID は常に consumerAcceptList
リストに表示されます。上の出力例では、リスト内の唯一のプロジェクトです。
Private Service Connect エンドポイントを作成する の説明に従って、前の手順でインスタンス レスポンスの本文から取得したサービス アタッチメントを指す PSC サービス エンドポイントを作成します。
設定をテストするには、内部専用アクセスで API プロキシを呼び出す をご覧ください。
内部リージョン LB
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義されたロールを付与できます。また、権限をきめ細かく付与して、必要最小限の権限を指定することもできます。事前定義ロール とアクセス ルーティング権限 をご覧ください。
制限事項: PSC 構成に関する次の制限事項に注意してください。
ステップ 8a: 環境変数を設定する
このセクションの手順では、環境変数を使用して、繰り返し使用される文字列を参照します。環境変数を定義する で変数が設定されていることを確認してください。
さらに、次の環境変数を設定します。
ヒント: 必要に応じて環境変数を簡単に復元できるように、環境変数をテキスト ファイルに保存します。
NEG_NAME=YOUR_NEG_NAME "
TARGET_SERVICE=YOUR_TARGET_SERVICE "
NETWORK_NAME=YOUR_NETWORK_NAME "
SUBNET_NAME=YOUR_SUBNET_NAME "
ここで
NEG_NAME : ネットワーク エンドポイント グループの名前。
TARGET_SERVICE : 接続するサービス アタッチメント。例: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
NETWORK_NAME : (省略可)NEG を作成するネットワークの名前。このパラメータを省略すると、default
プロジェクト ネットワークが使用されます。
SUBNET_NAME : プロデューサーへのプライベート接続に使用されるサブネットの名前。サブネット サイズは小さくすることができます。PSC NEG にはサブネットから 1 つの IP のみが必要です。Apigee の場合、リージョンごとに必要な PSC NEG は 1 つだけです。サブネットは、VM または他のエンティティによって共有され、使用できます。サブネットが指定されていない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属している可能性があります。注: --network
パラメータを指定する場合は、--subnet
も指定する必要があります。
ステップ 8b: プロキシ専用サブネットを作成する
gcloud compute networks subnets create testproxyonlysubnet \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$RUNTIME_REGION --network=$NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
ステップ 8c: ネットワーク エンドポイント グループ(NEG)を作成する
前の手順で作成したインスタンスからサービス アタッチメントを取得します。
データ所在地を使用しない場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
データ所在地を使用する場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
次のサンプル出力では、serviceAttachment
値が太字で表示されています。
{
"instances": [
{
"name": "us-west1",
"location": "us-west1",
"host": "10.82.192.2",
"port": "443",
"createdAt": "1645731488019",
"lastModifiedAt": "1646504754219",
"diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
"state": "ACTIVE",
"peeringCidrRange": "SLASH_22",
"runtimeVersion": "1-7-0-20220228-190814",
"ipRange": "10.82.192.0/22,10.82.196.0/28",
"consumerAcceptList": [
"875609189304"
],
"serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
} 注: Apigee 組織の作成 に使用したプロジェクトの ID は常に consumerAcceptList
リストに表示されます。上の出力例では、リスト内の唯一のプロジェクトです。
前の手順でインスタンスのレスポンス本文から取得したサービス アタッチメントを参照する 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 \
--project=$PROJECT_ID
ここで、$PROJECT_ID はすでに Apigee 組織に関連付けられている Cloud プロジェクト、または Apigee ランタイム インスタンスが作成された ときに consumerAcceptlist
に含まれている Cloud プロジェクトにできます。
ステップ 8d: リージョン内部ロードバランサを構成する
ロードバランサに内部 IPv4 アドレスを予約します。gcloud compute addresses create ADDRESS_NAME \
--ip-version=IPV4 --subnet=$SUBNET_NAME \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
ADDRESS_NAME は、IP アドレス リソースの名前に置き換えます。
予約済み IP アドレスを表示するには、次のコマンドを実行します。
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION --project=$PROJECT_ID
NEG のバックエンド サービスを作成します。gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。
NEG をバックエンド サービスに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=$NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID 次のように置き換えます。
NEG_NAME : ネットワーク エンドポイント グループの名前。
BACKEND_SERVICE_NAME : バックエンド サービスの名前。
HTTPS ロードバランサを作成するには、HTTPS ターゲット プロキシで使用する SSL 証明書リソース が必要です。
セルフマネージド SSL 証明書リソースを作成するには、次のコマンドを使用します。セルフマネージド SSL 証明書を作成するには、ローカル秘密鍵ファイルとローカル証明書ファイルが必要です。これらのファイルを作成する必要がある場合は、セルフマネージド SSL 証明書の使用の手順 1 をご覧ください。
注: Google マネージド証明書は、内部ロードバランサではサポートされていません。gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
次のように置き換えます。
CERTIFICATE : 証明書の名前。
LB_CERT : セルフ マネージド証明書の PEM 形式の証明書ファイルのパス。
LB_PRIVATE_KEY : セルフ マネージド証明書の PEM 形式の秘密鍵ファイルのパス。
ロードバランサの URL マップを作成します。
URL マップでは、デフォルトのバックエンド サービスを参照する必要があります。作成したバックエンド サービスをデフォルトとして設定します。
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
次のように置き換えます。
URL_MAP_NAME : URL マップの名前。
DEFAULT_BACKEND_SERVICE_NAME : ロードバランサのデフォルト バックエンド サービスの名前。
このデフォルトは、リクエストされたホスト名に一致するホストルールがない場合に使用されます。
SSL 証明書リソースを使用して、ターゲット HTTPS プロキシを作成します。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME \
--ssl-certificates=CERTIFICATE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
次のように置き換えます。
PROXY_NAME : ターゲット HTTPS プロキシの名前。
URL_MAP_NAME : URL マップの名前。
CERTIFICATE : 証明書リソースの名前。
転送ルールを作成します。gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=INTERNAL_MANAGED \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 \
--target-https-proxy-region=$RUNTIME_REGION \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID \
--network=$NETWORK_NAME \
--subnet=$SUBNET_NAME
次のように置き換えます。
FWD_RULE : 転送ルールの名前。
ADDRESS_NAME : 転送ルールに使用するために予約した IP アドレス リソース。
PROXY_NAME : ターゲット HTTPS プロキシの名前。
NETWORK_NAME : (省略可)NEG を作成するネットワークの名前。このパラメータを省略すると、default
プロジェクト ネットワークが使用されます。
SUBNET_NAME : プロデューサーへのプライベート接続に使用されるサブネットの名前。
注: --network
パラメータを指定する場合は、--subnet
も指定する必要があります。
Apigee のプロビジョニングが完了しました。サンプル プロキシをデプロイする に移動します。
外部ルーティング(PSC)
このセクションでは、Apigee と管理している VPC 間の通信を許可するために Private Service Connect (PSC)を使用して外部ルーティングを構成する方法について説明します。外部クライアントから Apigee ランタイム インスタンスにリクエストを送信する前に、この操作を行う必要があります。
このタスクに必要な権限
Apigee プロビジョナーに、このタスクを完了するために必要な権限を含む事前定義ロールを付与できます。または、権限をきめ細かく指定して必要最小限の権限を付与することもできます。事前定義ロール とアクセス ルーティング権限 をご覧ください。
制限事項: PSC 構成に関する次の制限事項に注意してください。
ステップ 8b: NEG を作成してロードバランサを構成する
グローバル ロードバランサまたはリージョン ロードバランサを作成できます。
グローバル外部 LB
グローバル外部 HTTP(S) ロードバランサ (EXTERNAL_MANAGED
に設定されたロード バランシング スキーム)を構成します。
Private Service Connect NEG はリージョナルですが、この構成の他のロード バランシング コンポーネントはグローバルです。
環境変数を定義する で、環境変数が設定されていることを確認します。
前の手順で作成したインスタンスからサービス アタッチメントを取得します。
データ所在地を使用しない場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
データ所在地を使用する場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
次のサンプル出力では、serviceAttachment
値が太字で表示されています。
{
"instances": [
{
"name": "us-west1",
"location": "us-west1",
"host": "10.82.192.2",
"port": "443",
"createdAt": "1645731488019",
"lastModifiedAt": "1646504754219",
"diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
"state": "ACTIVE",
"peeringCidrRange": "SLASH_22",
"runtimeVersion": "1-7-0-20220228-190814",
"ipRange": "10.82.192.0/22,10.82.196.0/28",
"consumerAcceptList": [
"875609189304"
],
"serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
} 注: Apigee 組織の作成 に使用したプロジェクトの ID は常に consumerAcceptList
リストに表示されます。上の出力例では、リスト内の唯一のプロジェクトです。
前の手順でインスタンスのレスポンス本文から取得したサービス アタッチメントを参照する 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
NETWORK_NAME :(省略可)NEG を作成するネットワークの名前。このパラメータを省略すると、default
プロジェクト ネットワークが使用されます。
SUBNET_NAME : プロデューサーへのプライベート接続に使用されるサブネットの名前。サブネット サイズは小さくすることができます。PSC NEG にはサブネットから 1 つの IP のみが必要です。Apigee の場合、リージョンごとに必要な PSC NEG は 1 つだけです。サブネットは、VM または他のエンティティによって共有され、使用できます。サブネットが指定されていない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属している可能性があります。
注: --network
パラメータを指定する場合は、--subnet
も指定する必要があります。
$PROJECT_ID 。すでに Apigee 組織に関連付けられている Cloud プロジェクト、または Apigee ランタイム インスタンスが作成された ときに consumerAcceptlist
に含まれている Cloud プロジェクト。プロジェクト ID を保持する環境変数は、次のコマンドの大部分で使用されるので、まだ作成していない場合は作成します。
ロードバランサにグローバル外部 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
NEG のバックエンド サービスを作成します。gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global --project=$PROJECT_ID
BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。
NEG をバックエンド サービスに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--network-endpoint-group-region=REGION \
--global --project=$PROJECT_ID 次のように置き換えます。
BACKEND_SERVICE_NAME : バックエンド サービスの名前。
NEG_NAME : ネットワーク エンドポイント グループの名前。
REGION : ネットワーク エンドポイント グループのリージョン。
ロードバランサの 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 : ロードバランサのデフォルト バックエンド サービスの名前。
このデフォルトは、リクエストされたホスト名に一致するホストルールがない場合に使用されます。
ターゲット HTTPS プロキシを作成します。
HTTPS ロードバランサを作成するには、HTTPS ターゲット プロキシで使用する SSL 証明書リソース が必要です。SSL 証明書リソースは、Google マネージド SSL 証明書またはセルフマネージド SSL 証明書を使用して作成できます。このうち、Google Cloud が自動的に取得、管理、更新する Google マネージド証明書をおすすめします。
Google マネージド証明書を作成するには、ドメインが必要です 。
次のコマンドを使用して、Google マネージド SSL 証明書リソースを作成します。
gcloud compute ssl-certificates create CERTIFICATE \
--domains DOMAIN --project=$PROJECT_ID
次のように置き換えます。
CERTIFICATE : 証明書の名前。
DOMAIN : ロードバランサのドメイン名。
セルフマネージド SSL 証明書リソースを作成するには、次のコマンドを使用します。セルフマネージド SSL 証明書を作成するには、ローカル秘密鍵ファイルとローカル証明書ファイルが必要です。これらのファイルを作成する必要がある場合は、セルフマネージド SSL 証明書の使用の手順 1 をご覧ください。
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 形式の秘密鍵ファイルのパス。
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 : 証明書リソースの名前。
転送ルールを作成します。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 プロキシの名前。
リージョン外部 LB
リージョン外部 HTTP(S) ロードバランサを構成します。外部 HTTP(S) ロードバランサの概要 もご覧ください。
環境変数を定義する で変数が設定されていることを確認してください。
プロキシ専用サブネットを作成します。
gcloud compute networks subnets create SUBNET_NAME \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \
--region=$RUNTIME_LOCATION --network=NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
次のように置き換えます。
SUBNET_NAME : サブネットの名前。
(省略可)NETWORK_NAME : サブネットが作成されるネットワークの名前。このパラメータを省略すると、デフォルトのプロジェクト ネットワークが使用されます。
前の手順で作成したインスタンスからサービス アタッチメントを取得します。
データ所在地を使用しない場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
データ所在地を使用する場合
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
次のサンプル出力では、serviceAttachment
値が太字で表示されています。
{
"instances": [
{
"name": "us-west1",
"location": "us-west1",
"host": "10.82.192.2",
"port": "443",
"createdAt": "1645731488019",
"lastModifiedAt": "1646504754219",
"diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
"state": "ACTIVE",
"peeringCidrRange": "SLASH_22",
"runtimeVersion": "1-7-0-20220228-190814",
"ipRange": "10.82.192.0/22,10.82.196.0/28",
"consumerAcceptList": [
"875609189304"
],
"serviceAttachment": "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
} 注: Apigee 組織の作成 に使用したプロジェクトの ID は常に consumerAcceptList
リストに表示されます。上の出力例では、リスト内の唯一のプロジェクトです。
ネットワーク エンドポイント グループを作成します。
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
次のように置き換えます。
NEG_NAME : ネットワーク エンドポイント グループの名前。
TARGET_SERVICE : 接続するサービス アタッチメントの名前。例: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
NEG のバックエンド サービスを作成します。gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。
NEG をバックエンド サービスに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID 次のように置き換えます。
BACKEND_SERVICE_NAME : バックエンド サービスの名前。
NEG_NAME : ネットワーク エンドポイント グループの名前。
ロードバランサの URL マップを作成します。
URL マップでは、デフォルトのバックエンド サービスを参照する必要があります。作成したバックエンド サービスをデフォルトとして設定します。
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
次のように置き換えます。
URL_MAP_NAME : URL マップの名前。
DEFAULT_BACKEND_SERVICE_NAME : ロードバランサのデフォルト バックエンド サービスの名前。
このデフォルトは、リクエストされたホスト名に一致するホストルールがない場合に使用されます。
ターゲット HTTPS プロキシを作成します。
HTTPS ロードバランサを作成するには、HTTPS ターゲット プロキシで使用する SSL 証明書リソース が必要です。
セルフマネージド SSL 証明書リソースを作成するには、次のコマンドを使用します。セルフマネージド SSL 証明書を作成するには、ローカル秘密鍵ファイルとローカル証明書ファイルが必要です。これらのファイルを作成する必要がある場合は、セルフマネージド SSL 証明書の使用の手順 1 をご覧ください。
注: Google マネージド証明書は、内部ロードバランサではサポートされていません。gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
次のように置き換えます。
CERTIFICATE : 証明書の名前。
LB_CERT : セルフ マネージド証明書の PEM 形式の証明書ファイルのパス。
LB_PRIVATE_KEY : セルフ マネージド証明書の PEM 形式の秘密鍵ファイルのパス。
SSL 証明書リソースを使用して、ターゲット HTTPS プロキシを作成します。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME --region=$RUNTIME_LOCATION \
--ssl-certificates=CERTIFICATE --project=$PROJECT_ID
次のように置き換えます。
PROXY_NAME : ターゲット HTTPS プロキシの名前。
URL_MAP_NAME : URL マップの名前。
CERTIFICATE : 証明書リソースの名前。
ロードバランサにリージョン外部アドレスを予約します。ネットワーク階層は STANDARD
に設定する必要があります。
gcloud compute addresses create ADDRESS_NAME \
--region=$RUNTIME_LOCATION --network-tier=STANDARD \
--project=$PROJECT_ID
ADDRESS_NAME は、IP アドレス リソースの名前に置き換えます。
予約済み IP アドレスを表示するには、次のコマンドを実行します。
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
転送ルールを作成します。
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=STANDARD \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 --region=$RUNTIME_LOCATION \
--target-https-proxy-region=$RUNTIME_LOCATION --project=$PROJECT_ID
次のように置き換えます。
FWD_RULE : 転送ルールの名前。
ADDRESS_NAME : 転送ルールに使用するために予約した IP アドレス リソース。
PROXY_NAME : ターゲット HTTPS プロキシの名前。
Apigee のプロビジョニングが完了しました。サンプル プロキシをデプロイする に移動します。
ステップ 9: サンプル プロキシをデプロイする
このタスクに必要な権限
プロキシの作成とデプロイには、最小限の権限が必要です。Apigee 組織管理者ロールが付与されている場合は、このタスクを完了できます。他の適用可能なロールについては、Apigee のロール をご覧ください。
以下の内容の構成が完了している場合は、次の操作を行います。
外部ルーティング(MIG)
外部ルーティング(PSC)
内部ルーティング(PSC)
内部ルーティング(VPC)を構成している場合は、この手順をスキップして、内部専用アクセスで API プロキシを呼び出す に進みます。
GitHub からサンプル プロキシ をダウンロードします。プロキシのターゲットは httpbin.org サービスでよく使用されるパブリック リクエストおよびレスポンス サービスです。
Apigee apis
API を使用して、API プロキシ バンドルをランタイムにアップロードします。
データ所在地を使用しない場合
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
データ所在地を使用する場合
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
ここで、PATH_TO_ZIP_FILE は、ダウンロードした ZIP ファイルを含むディレクトリのパスです。
前の手順で作成した環境に API プロキシをデプロイ します。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
次の API 呼び出しを使用して、デプロイが正常に完了したことを確認します。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
API プロキシを呼び出します。
次のコマンドを実行して、ネットワークが有効になっている任意のマシンから API プロキシにリクエストを送信します。
curl -i -H "Host: ENV_GROUP_HOSTNAME " \
"https://ENV_GROUP_HOSTNAME /httpbin/headers"
必要に応じて、この API を使用して ENV_GROUP_HOSTNAME 値を取得できます。
データ所在地を使用しない場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
データ所在地を使用する場合
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
「CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure
」のようなエラーが発生した場合、以前に作成した SSL 証明書がプロビジョニングされていることを確認します。このコマンドを使用して、プロビジョニングのステータス を確認します。証明書がプロビジョニングされると、ステータスは ACTIVE
になります。
gcloud compute ssl-certificates describe CERTIFICATE \
--global \
--format="get(name,managed.status, managed.Status)"
成功すると、サンプル API プロキシから次のようなレスポンスが返されます。
{
"headers": {
"Accept": "*/*",
"Grpc-Trace-Bin": "AAD/8WC/I4AUSrMEch0E9yj+AYck1x9afwckAgA",
"Host": "httpbin.org",
"Traceparent": "00-fff160bf2380144ab304721d04f728fe-8724d71f5a7f0724-00",
"User-Agent": "curl/7.77.0",
"X-Amzn-Trace-Id": "Root=1-61d785ef-7613aa8a7fde7a910441fab9",
"X-B3-Sampled": "0",
"X-B3-Spanid": "8724d71f5a7f0724",
"X-B3-Traceid": "fff160bf2380144ab304721d04f728fe",
"X-Cloud-Trace-Context": "fff160bf2380144ab304721d04f728fe/9738144823944087332;o=0",
"X-Envoy-Attempt-Count": "1"
}
}
その他のトラブルシューティング情報など、プロキシのデプロイについて詳しくは、API プロキシのデプロイ をご覧ください。
フィードバックを送信
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-08-29 UTC。