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

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

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

始める前に

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

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

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

共有クラスタロール

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

標準クラスタロール

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

環境を準備する

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

デプロイを更新する

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

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

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

  • KUBERNETES_CLUSTER_KUBECONFIG: デプロイを実行しているクラスタの kubeconfig ファイル。

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

  • DEPLOYMENT_FILE: 更新する Deployment マニフェスト ファイルの名前。

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

デプロイ内のリソースを更新する方法は他にもいくつかあります。

コンテナ イメージを更新する

Deployment オブジェクトのイメージを変更するには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

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

  • KUBERNETES_CLUSTER_KUBECONFIG: デプロイを実行しているクラスタの kubeconfig ファイル。

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

  • DEPLOYMENT_NAME: イメージを含む Deployment オブジェクトの名前。

  • IMAGE: コンテナ イメージの名前です。

  • TAG: コンテナ イメージの更新対象のタグ。

Deployment のイメージを更新すると、セレクタ フィールドやリソース(リクエストや上限など)を変更する際に便利です。

たとえば、nginx という名前の Deployment オブジェクトを更新してバージョン 1.9.1 を使用するには、次のコマンドを実行します。

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

更新をロールバックする

デプロイが不安定になった場合など、更新をロールバックする場合は、kubectl CLI を使用します。Deployment オブジェクトのロールアウト履歴はシステムに保存されるため、いつでもロールバックできます。

進行中の更新または完了した更新を以前のリビジョンにロールバックするには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

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

  • KUBERNETES_CLUSTER_KUBECONFIG: デプロイを実行しているクラスタの kubeconfig ファイル。

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

  • DEPLOYMENT_NAME: ロールバックする Deployment オブジェクトの名前。

特定のリビジョンにロールバックするには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

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

  • KUBERNETES_CLUSTER_KUBECONFIG: デプロイを実行しているクラスタの kubeconfig ファイル。

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

  • DEPLOYMENT_NAME: ロールバックする Deployment オブジェクトの名前。

  • REVISION_NUMBER: ロールバックするリビジョンを定義する整数(3 など)。

次のステップ