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

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

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

始める前に

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

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

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

共有クラスタのロール

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

Standard クラスタのロール

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

環境を準備する

API を使用して Kubernetes クラスタ に対してコマンドを実行するには、次のリソースが必要です。

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

  • ログインして生成します Kubernetes クラスタの kubeconfig ファイル。

  • Kubernetes クラスタの kubeconfig パスを使用して、この手順の KUBERNETES_CLUSTER_KUBECONFIG を置き換えます。

デプロイを更新する

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: コンテナ イメージの更新するタグ。

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

たとえば、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 など)。

次のステップ