このドキュメントでは、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など)。