マネージド コントロール プレーンのモダナイゼーション

Google は、ISTIOD マネージド コントロール プレーン実装を使用している既存のフリートに対して、段階的に更新を実施し、TRAFFIC_DIRECTOR 実装を使用するようにします。デフォルトでは、フリートは自動的に移行されますが、ご自身で移行することもできます。フリートで使用されているコントロール プレーンを確認するには、コントロール プレーンの実装を確認するをご覧ください。

モダナイゼーションに向けてフリートを準備する際は、次の点を考慮してください。

  1. モダナイゼーションの準備には、次の 2 つの方法があります。

  2. デフォルトは Google 主導のモダナイゼーションです。このオプションを使用すると、Google がフリートのモダナイゼーションの準備が整ったタイミングを判断します。Google はフリートのモダナイゼーションをスケジュールし、プロセスを開始する前に通知します。

  3. クラスタをモダナイズすると、プロキシがあるワークロードが再起動されます。Kubernetes のベスト プラクティスに沿っていれば、ダウンタイムは発生しません。また、メンテナンスの時間枠が構成されている場合は、その時間枠中にモダナイゼーションがトリガーされます。開始すると、完了まで実行され、さらに 6 日間のソーク期間が経過してから、確定済みとしてマークされます。モニタリングで問題が検出された場合は、ロールバックをリクエストできます。

  4. お客様主導のモダナイゼーションでは、フリートがモダナイゼーションの準備が整うと通知されます。その後、クラスタごとにモダナイゼーションをトリガーするタイミングを選択できます。完了したら、各フリートのモダナイゼーションを完了としてマークします。

  5. フリートがモダナイズされると、Istiod ベースのコンポーネントがすべて削除されます。

  6. TRAFFIC_DIRECTOR コントロール プレーンの実装では、クラスタがメッシュ機能が有効になっているフリートに登録されている必要があります。以前のツールを使用してオンボーディングした場合、gkehub.googleapis.com Membership API を使用して、クラスタがプロジェクトのフリートに対して自動的に登録されます。クラスタの登録解除を自動化する場合は、モダナイゼーション前に削除する必要があります。

Google 主導のモダナイゼーション

このオプションは、お客様主導のモダナイゼーションのためにフリートにラベルを付けない場合のデフォルトです。Google はフリートをモニタリングし、安全にモダナイズできるタイミングを判断します。組織内のすべてのメッシュ対応フリートが準備が整うと、組織のモダナイゼーションがスケジュールされます。

複数のフリート

組織にマネージド Cloud Service Mesh を使用する複数のフリートがある場合は、mesh-modernization-order のプロジェクトラベルを earlydefaultlate のいずれかに設定することで、Google がフリートをモダナイズする順序を制御できます。Google は、各グループのモダナイゼーションを完了してから、次のグループのフリートへのモダナイゼーションを開始します。お客様主導のモダナイゼーションを選択したフリートは、この順序付けでは考慮されません。

次のコマンドを使用して、フリートの mesh-modernization-order ラベルを設定します。

gcloud alpha projects update FLEET_PROJECT_ID --update-labels="mesh-modernization-order=VALUE"

Console または REST を使用してプロジェクトラベルを設定する手順については、ラベルの作成と管理のドキュメントをご覧ください。

Google Cloud 組織を使用しない場合は、フリートは個別にスケジュール設定され、モダナイズされます。順序を制御することはできません。

マルチクラスタ メッシュ

フリートにマネージド Cloud Service Mesh を使用するクラスタが複数ある場合は、mesh-modernization-order のクラスタラベルを earlydefaultlate のいずれかに設定することで、Google がクラスタをモダナイズする順序を制御できます。Google は各グループのモダナイゼーションを開始し、自動モダナイゼーション ステップが完了するのを待ってから、次のグループのクラスタのモダナイゼーションを開始します。この順序付けはフリート内でのみ適用され、並行してモダナイズされている組織内の他のフリートには影響しません。

次のコマンドを使用して、クラスタの mesh-modernization-order ラベルを設定します。

gcloud container clusters update CLUSTER_NAME \
  --location LOCATION \
  --update-labels="mesh-modernization-order=VALUE"

お客様主導のモダナイゼーション

モダナイゼーションの正確なタイミングをフリートレベルで自分で制御することもできます。これを行うには、次のコマンドを使用してフリート ホスト プロジェクトにラベルを適用します。

gcloud alpha projects update FLEET_PROJECT_ID \
  --update-labels="mesh-modernization-mode=manual"

Google Cloud 組織に複数のフリートがある場合、ラベルが付けられていないフリートはすべて、Google 主導のモダナイゼーションのスケジュールが設定されます。

フリートがモダナイゼーションの対象になると、フリートレベルの機能のステータスに通知が表示されます。この通知を受け取ってから 3 か月以内にモダナイゼーションをトリガーする必要があります。

このドキュメントは、モダナイゼーションを手動でトリガーする方法の詳細を含めるように更新される予定です。Cloud Service Mesh リリースノート フィードを定期購読して通知を受け取る。

Google 主導の移行のためのアクティブなモダナイゼーション

このセクションでは、Google 主導のモダナイゼーションの手順について説明します。

フリートのモダナイゼーション

Google は、組織の各フリートの積極的なモダナイゼーションをトリガーします。つまり、フリートごとに次の手順が実行されます。

  1. earlymesh-modernization-order を使用して、すべてのクラスタをモダナイズします。
  2. mesh-modernization-orderdefault または未指定のすべてのクラスタをモダナイズします。
  3. latemesh-modernization-order を使用して、すべてのクラスタをモダナイズします。
  4. 各クラスタのモダナイゼーションが確定済みとしてマークされるまで待ちます。つまり、このフリート内のいずれかのクラスタで最後の Pod を再起動してから 6 営業日以上待つ必要があります。
  5. このフリートのモダナイゼーションを完了し、最終的には Istiod ベースのコンポーネントを削除します。

クラスタのモダナイゼーション

クラスタのアクティブなモダナイゼーション中は、両方のコントロール プレーン実装が一時的に並行して実行され、安全かつ制御された方法で次のタスクが処理されます。

  1. 新しいコントロール プレーンの実装を有効にします。クラスタにメンテナンスの時間枠を構成し、Google 主導のモダナイゼーションを使用している場合、このステップはメンテナンスの時間枠中に開始され、完了するまで続行されます。
  2. トラフィックを新しいコントロール プレーン実装に移行します。クラスタにメンテナンスの時間枠を構成し、Google 主導のモダナイゼーションを使用している場合、このステップはメンテナンスの時間枠中に開始され、完了するまで続行されます。
    • Cloud Service Mesh プロキシがある Kubernetes Deployment によって管理されている Pod が再起動され、新しいコントロール プレーンに再接続します。
    • Pod は、モニタリングのために各ウェーブの後にソーク時間を設定して、段階的に大きなウェーブで再起動されます。
  3. クラスタのモダナイゼーションが完了とマークされるまで、少なくとも 6 営業日のソーク時間が経過する必要があります。

次の Google Cloud CLI コマンドを使用して、進行中のモダナイゼーションのステータスを確認します。

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

クラスタごとの membershipStates フィールドに、次のいずれかのような条件が表示されます。

...
membershipStates:
  projects/FLEET_PROJ/locations/us-central1/memberships/MEMBERSHIP:
    servicemesh:
      conditions:
      - code: MODERNIZATION_IN_PROGRESS
        details: ...
        documentationLink: ...
        severity: INFO
...
      # If you see this, see instructions provided in the details and documentationLink fields.
      - code: MODERNIZATION_ACTION_REQUIRED
        details: [details about required actions]
        documentationLink: [link to documentation for required actions]
        severity: WARNING
...
      - code: MODERNIZATION_COMPLETED
        details: ...
        documentationLink: ...
        severity: INFO

スケジュールと通知

クラスタの更新がスケジュールされている場合は、少なくとも 2 週間前に通知が届きます。通知は、クラスタレベル機能の状態の条件で使用できます。

次の Google Cloud CLI コマンドを使用して通知を確認します。

gcloud container fleet mesh describe --project=FLEET_PROJECT_ID

次のような結果が表示されます。

membershipStates:
  projects/656460026795/locations/us-central1/memberships/cluster:
    servicemesh:
      conditions:
      - code: MODERNIZATION_SCHEDULED
        details: This cluster has been scheduled for modernization on or after (date ~ at least 2 weeks).
        documentationLink: 
        severity: INFO