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

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

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

始める前に

このドキュメントのタスクを完了するには、次のリソースとロールが必要です。

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

    • Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。

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

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

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

  • 標準クラスタでステートレス ワークロードを更新するために必要な権限を取得するには、標準クラスタでクラスタ デベロッパー ロール(cluster-developer)を付与するよう組織の IAM 管理者に依頼してください。

デプロイを更新する

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

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

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

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

  • NAMESPACE: Namespace。共有クラスタの場合、これはプロジェクト Namespace である必要があります。Standard クラスタの場合は、任意の 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 である必要があります。Standard クラスタの場合は、任意の 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 である必要があります。Standard クラスタの場合は、任意の 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 である必要があります。Standard クラスタの場合は、任意の Namespace を指定できます。

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

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

次のステップ