このページでは、Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタで実行されている既存のステートレス ワークロードを更新する方法について説明します。リソース使用量と構成の最適化に基づいてアプリケーションが進化するにつれて、Kubernetes クラスタの基盤となる Pod 仕様を更新して、ワークロードの変更を反映する必要があります。
このページは、組織のアプリケーション ワークロードの更新を担当するアプリケーション オペレーター グループ内のデベロッパーを対象としています。詳細については、GDC エアギャップの対象読者に関するドキュメントをご覧ください。
始める前に
Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者にクラスタ名を確認します。
まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。
これらの手順では、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など)。