ステートフル ワークロードを更新する

このドキュメントでは、Google Distributed Cloud(GDC)エアギャップ Kubernetes クラスタで実行されている既存のステートフル ワークロードを更新する方法について説明します。リソースの使用量と構成の最適化に基づいてアプリケーションが進化するにつれて、Kubernetes クラスタ内の基盤となる Pod 仕様を更新して、ワークロードの変更を反映する必要があります。ステートフル ワークロードの更新の計画の詳細については、Kubernetes のドキュメントで更新戦略をご覧ください。

このドキュメントは、アプリケーション オペレーター グループ内のデベロッパーを対象としています。このグループは、組織のアプリケーション ワークロードの更新を担当します。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。

始める前に

このドキュメントのタスクを完了するには、必要な権限をリクエストして環境を準備する必要があります。

IAM ロールをリクエストする

ステートフル ワークロードの更新に必要な権限を取得するには、特定のロールが必要です。必要なロールは、組織スコープの共有クラスタとプロジェクト スコープの標準クラスタのどちらで作業しているかによって異なります。詳細については、Kubernetes クラスタの構成をご覧ください。

共有クラスタロール

共有クラスタでワークロードを作成、削除、編集、表示するには、IAM プロジェクト管理者に Namespace 管理者(namespace-admin)ロールを付与するよう依頼します。このロールはプロジェクトの名前空間にバインドされます。

標準クラスタロール

標準クラスタでワークロードを作成、削除、編集、表示するには、IAM プロジェクト管理者にクラスタ デベロッパー(cluster-developer)ロールを付与するよう依頼してください。このロールはプロジェクトの名前空間にバインドされます。

環境を準備する

API を使用して Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。

StatefulSet リソースを更新する

StatefulSet を更新するには、新規作成または更新されたマニフェスト ファイルを適用します。これは、スケーリング時に StatefulSet にさまざまな変更を加える場合や、アプリケーションの新しいバージョンを指定する場合に便利です。

StatefulSet オブジェクトを更新するには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f STATEFULSET_FILE

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

  • KUBERNETES_CLUSTER_KUBECONFIG: ステートフル ワークロードを実行しているクラスタの kubeconfig ファイル。

  • NAMESPACE: Namespace。共有クラスタの場合、これはプロジェクトの名前空間にする必要があります。標準クラスタの場合は、任意の Namespace を指定できます。

  • STATEFULSET_FILE: 更新された StatefulSet マニフェスト ファイルの名前。

kubectl apply コマンドは、リソースにマニフェスト ファイルを適用します。指定されたリソースが存在しない場合は、このコマンドによって作成されます。

StatefulSet リソースの更新ロールアウトを検査する

StatefulSet オブジェクトの更新ロールアウトのステータスと履歴に関する詳細情報を表示できます。StatefulSet オブジェクトのロールアウトを元に戻すこともできます。

ロールアウトを検査する

StatefulSet リソースのロールアウトを検査するには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout status statefulset STATEFULSET_NAME
  • KUBERNETES_CLUSTER_KUBECONFIG: ステートフル ワークロードを実行しているクラスタの kubeconfig ファイル。

  • NAMESPACE: Namespace。共有クラスタの場合、これはプロジェクトの名前空間にする必要があります。標準クラスタの場合は、任意の Namespace を指定できます。

  • STATEFULSET_NAME: 更新された StatefulSet オブジェクトの名前。

ロールアウト履歴を取得する

StatefulSet リソースのロールアウト履歴を表示するには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout history statefulset STATEFULSET_NAME
  • KUBERNETES_CLUSTER_KUBECONFIG: ステートフル ワークロードを実行しているクラスタの kubeconfig ファイル。

  • NAMESPACE: Namespace。共有クラスタの場合、これはプロジェクトの名前空間にする必要があります。標準クラスタの場合は、任意の Namespace を指定できます。

  • STATEFULSET_NAME: 更新された StatefulSet オブジェクトの名前。

ロールアウトを元に戻す

ロールアウトを元に戻すには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout undo statefulset STATEFULSET_NAME

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

  • KUBERNETES_CLUSTER_KUBECONFIG: ステートフル ワークロードを実行しているクラスタの kubeconfig ファイル。

  • NAMESPACE: Namespace。共有クラスタの場合、これはプロジェクトの名前空間にする必要があります。標準クラスタの場合は、任意の Namespace を指定できます。

  • STATEFULSET_NAME: StatefulSet オブジェクトの名前。

次のステップ