このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。
Apigee Edge のドキュメントを表示する
このドキュメントでは、ノースバウンド トラフィックを Apigee にルーティングする Compute Engine マネージド インスタンス グループを検査してアップグレードする方法について説明します。
概要
一部の Apigee デプロイでは、プロジェクトで実行されている Compute Engine MIG を介してロードバランサからプロキシ トラフィックをルーティングし、ノースバウンド ロード バランシングや Private Service Connect を使用したアクティブ ヘルスチェックなどのリクエストを Apigee ランタイム エンドポイントに転送します。Apigee はこれらの MIG を管理しません。セキュリティと信頼性のベスト プラクティスとして、これらの MIG とその VM を自分で追跡、管理、アップグレードして、Compute Engine オペレーティング システムのライフサイクルを最新の状態に保つ必要があります。
OS のサポートが終了すると、Compute Engine は新しい VM のイメージ ファミリー エイリアスを削除します。MIG 内の既存の VM は引き続き実行され、ライブホスト メンテナンス イベントを乗り切ります。ただし、自動スケーリング、自動修復、ローリング置換中に MIG が新しい VM を作成しようとすると、ソース イメージ ファミリーが見つからないため、VM の作成は失敗します。正常なプロキシ VM が使用できなくなると、ロードバランサは HTTP 502 Bad Gateway エラーを返し、API トラフィックが停止します。
始める前に
このドキュメントのコマンドは例です。デプロイでは、異なるネットワーク タグ、マシンタイプ、ディスクサイズ、メタデータ、VM 数を使用する場合があります。まず、既存の構成を検査し、環境に合わせてコマンドフラグを調整します。
次のコマンド例のプレースホルダを、実際の環境の値に置き換えます。
-
PROJECT_ID: MIG とインスタンス テンプレートがデプロイされている Google Cloud プロジェクト ID。 -
REGION: MIG の Compute Engine リージョン。 -
EXISTING_MIG_NAME: 既存の MIG の名前。 -
OLD_TEMPLATE_NAME:EXISTING_MIG_NAMEにアタッチされているインスタンス テンプレートの名前。 -
NEW_TEMPLATE_NAME: 作成する新しいインスタンス テンプレートの名前。 -
VPC_NAME: MIG で使用される VPC ネットワークの名前。 -
VPC_SUBNET: MIG で使用されるREGIONの VPC サブネットの名前。 -
IMAGE_FAMILY: Compute Engine オペレーティング システムの詳細でサポートされている OS イメージ ファミリー。 -
IMAGE_PROJECT:IMAGE_FAMILYを含むイメージ プロジェクト。 -
APIGEE_ENDPOINT: 既存のインスタンス テンプレートのENDPOINTメタデータに構成されているターゲット IP アドレス。 -
STARTUP_SCRIPT_URL: 既存のインスタンス テンプレートのstartup-script-urlメタデータで構成された Cloud Storage URL。
MIG とインスタンス テンプレートを検査する
Apigee ルーティング MIG は通常、apigee-mig-proxy タグと ENDPOINT メタデータを使用します。MIG とインスタンス テンプレートを検査する手順は次のとおりです。
-
プロジェクト内の MIG を一覧表示し、アタッチされているインスタンス テンプレートを特定します。
gcloud compute instance-groups managed list --project=PROJECT_ID \ --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
-
既存のインスタンス テンプレートのソース OS イメージを確認します。テンプレートがリージョンの場合は、
--region=REGIONを追加します。gcloud compute instance-templates describe OLD_TEMPLATE_NAME \ --project=PROJECT_ID \ --format="value(properties.disks[0].initializeParams.sourceImage)"
-
OLD_TEMPLATE_NAMEのマシンタイプ、ディスク構成、ネットワーク、サブネット、タグ、メタデータを調べて、新しいテンプレートの作成時にこれらの設定を一致させることができるようにします。テンプレートがリージョンの場合は、--region=REGIONを追加します。gcloud compute instance-templates describe OLD_TEMPLATE_NAME \ --project=PROJECT_ID \ --format="yaml(properties.machineType,properties.disks,properties.networkInterfaces,properties.tags,properties.metadata)"
新しいインスタンス テンプレートを作成してローリング アップデートを実行する
サポートされている OS イメージ ファミリーを使用して新しいインスタンス テンプレートを作成し、MIG でローリング アップデートを開始します。--max-unavailable=0 で --max-surge を使用すると、古いインスタンスをドレインして削除する前に新しい VM をプロビジョニングして検証します。これにより、リソースの在庫切れや構成エラーが原因で新しい VM の起動に失敗した場合でも、トラフィックの中断を防ぐことができます。
-
新しいインスタンス テンプレートを作成する。次のコマンドは例です。ネットワーク、サブネット、タグ、マシンタイプ、ディスクサイズ、メタデータを、既存のテンプレート構成に合わせて調整します。
gcloud compute instance-templates create NEW_TEMPLATE_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=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --boot-disk-size=20GB \ --no-address \ --metadata=ENDPOINT=APIGEE_ENDPOINT,startup-script-url=STARTUP_SCRIPT_URL
このコマンドは、
projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAMEにグローバル インスタンス テンプレートを作成します。リージョン インスタンス テンプレートを作成する場合は、--instance-template-region=REGIONを追加し、次のステップでprojects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAMEを使用します。 -
MIG でローリング アップデートを開始します。MIG のサイズと割り当てに基づいて、必要に応じて
--max-surgeを調整します。gcloud compute instance-groups managed rolling-action start-update EXISTING_MIG_NAME \ --project=PROJECT_ID \ --region=REGION \ --version=template=projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME \ --max-surge=3 \ --max-unavailable=0
-
MIG 内のすべての VM が
NEW_TEMPLATE_NAMEを実行し、RUNNINGステータスを報告していることを確認します。gcloud compute instance-groups managed list-instances EXISTING_MIG_NAME \ --project=PROJECT_ID \ --region=REGION
次のステップ
- ノースバウンド ルーティングを Private Service Connect に移行する
- Private Service Connect を使用したリージョン フェイルオーバー用のアクティブ ヘルスチェックを構成する
- MIG に更新をロールアウトする
- Compute Engine オペレーティング システムのライフサイクル
- Compute Engine オペレーティング システムの詳細