Apigee マネージド インスタンス グループをアップグレードする

このページの内容は 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 とインスタンス テンプレートを検査する手順は次のとおりです。

  1. プロジェクト内の MIG を一覧表示し、アタッチされているインスタンス テンプレートを特定します。

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. 既存のインスタンス テンプレートのソース OS イメージを確認します。テンプレートがリージョンの場合は、--region=REGION を追加します。

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. 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 の起動に失敗した場合でも、トラフィックの中断を防ぐことができます。

  1. 新しいインスタンス テンプレートを作成する。次のコマンドは例です。ネットワーク、サブネット、タグ、マシンタイプ、ディスクサイズ、メタデータを、既存のテンプレート構成に合わせて調整します。

    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 を使用します。

  2. 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
    
  3. MIG 内のすべての VM が NEW_TEMPLATE_NAME を実行し、RUNNING ステータスを報告していることを確認します。

    gcloud compute instance-groups managed list-instances EXISTING_MIG_NAME \
      --project=PROJECT_ID \
      --region=REGION
    

次のステップ