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

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

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

始める前に

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

  1. Kubernetes クラスタ名を確認するか、プラットフォーム管理者にクラスタ名を確認します。

  2. まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。

  3. これらの手順では、Kubernetes クラスタの kubeconfig パスを使用して KUBERNETES_CLUSTER_KUBECONFIG を置き換えます。

ステートレス ワークロードを更新するために必要な権限を取得するには、組織の IAM 管理者に、プロジェクトの Namespace で Namespace 管理者ロール(namespace-admin)を付与するよう依頼してください。

デプロイを更新する

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

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

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

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

  • 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。

  • 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。

  • 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。

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

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