18 System Upgrade Controller #
System Upgrade Controllerのドキュメントを参照してください。
System Upgrade Controller(SUC)は、汎用的なKubernetesネイティブのアップグレードコントローラー(ノード用)を提供することを目的としています。これは、アップグレードポリシーや要件を定義するための新しいCRDである「Plan」を導入します。Planとは、クラスター内のノードの変更を意図した計画です。
18.1 SUSE EdgeはどのようにSystem Upgrade Controllerを使用しますか? #
SUSE Edgeは`SUC`を使用して、管理クラスターおよびダウンストリームクラスターにおけるOSとKubernetesのバージョンアップグレードに関連するさまざまな「Day 2」オペレーションを促進します。
「Day 2」オペレーションは`SUC Plans`を通じて定義されます。これらのプランに基づいて、`SUC`は各ノードにワークロードをデプロイし、それぞれの「Day 2」オペレーションを実行します。
`SUC`はChapter 19, Upgrade Controller内でも使用されます。SUCとUpgrade Controllerの主な違いの詳細については、Section 19.2, “Upgrade Controller vs System Upgrade Controller”を参照してください。
18.2 System Upgrade Controllerのインストール #
Rancher v2.10.0以降、`System Upgrade Controller`は自動的にインストールされます。
以下の手順は、環境がRancherによって管理されていない場合、またはRancherのバージョンが`v2.10.0`より低い場合のみ実行してください。
suse-edge/fleet-examplesリポジトリにあるFleet (Chapter 6, Fleet)を使用してSUCをインストールすることをお勧めします。
`suse-edge/fleet-examples`リポジトリによって提供されるリソースは、*必ず*有効なfleet-examplesリリースから使用する必要があります。使用する必要があるリリースを確認するには、リリースノート (Chapter 41, リリースノート)を参照してください。
Fleetを使用してSUCをインストールできない場合は、RancherのHelmチャートリポジトリからインストールするか、RancherのHelmチャートを独自のサードパーティGitOpsワークフローに組み込むことができます。
このセクションでは、次の内容について説明します。
Fleetのインストール (Section 18.2.1, “System Upgrade Controller Fleetのインストール”)
Helmインストール (Section 18.2.2, “System Upgrade ControllerのHelmインストール”)
18.2.1 System Upgrade Controller Fleetのインストール #
Fleetを使用する場合、SUCのデプロイに使用できるリソースは2つあります:
GitRepoリソース - 外部/ローカルのGitサーバーが利用可能なユースケース用。インストール手順については、System Upgrade Controllerのインストール - GitRepo (Section 18.2.1.1, “System Upgrade Controllerのインストール - GitRepo”)を参照してください。
Bundleリソース - ローカルのGitサーバーオプションをサポートしていないエアギャップ(された)ユースケース用。インストール手順については、System Upgrade Controllerのインストール - Bundle (Section 18.2.1.2, “System Upgrade Controllerのインストール - Bundle”)を参照してください。
18.2.1.1 System Upgrade Controllerのインストール - GitRepo #
*管理*クラスターで:
SUCをデプロイするクラスターを決定します。これは、*管理*クラスター上の適切なFleetワークスペースにSUC `GitRepo`リソースをデプロイすることで実行されます。デフォルトでは、Fleetには2つのワークスペースがあります:
fleet-local- *管理*クラスターにデプロイする必要があるリソース用。fleet-default- *ダウンストリーム*クラスターにデプロイする必要があるリソース用。Fleetワークスペースの詳細については、アップストリームのドキュメントを参照してください。
`GitRepo`リソースをデプロイします:
管理クラスターにSUCをデプロイするには:
kubectl apply -n fleet-local -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.6.1 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git EOFダウンストリームクラスターにSUCをデプロイするには:
Note以下のリソースをデプロイする前に、Fleetがどのダウンストリームクラスターにリソースをデプロイすべきかを認識できるよう、有効な
targets設定を 指定する必要があります。ダウンストリームクラスターへのマッピング方法については、ダウンストリームクラスターへのマッピング を参照してください。kubectl apply -n fleet-default -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.6.1 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git targets: - clusterSelector: CHANGEME # Example matching all clusters: # targets: # - clusterSelector: {} EOF
GitRepoリソースがデプロイされていることを確認します:# Namespace will vary based on where you want to deploy SUC kubectl get gitrepo system-upgrade-controller -n <fleet-local/fleet-default> NAME REPO COMMIT BUNDLEDEPLOYMENTS-READY STATUS system-upgrade-controller https://github.com/suse-edge/fleet-examples.git release-3.6.1 1/1System Upgrade Controllerのデプロイメントを検証します:
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 2m20s
18.2.1.2 System Upgrade Controllerのインストール - Bundle #
このセクションでは、fleet-cli を使用して、標準のFleet構成から Bundle リソースをビルドおよびデプロイする方法を説明します。
ネットワークアクセスが可能なマシンで
fleet-cliをダウンロードします:Noteダウンロードするfleet-cliのバージョンが、クラスターにデプロイされているFleetのバージョンと一致していることを確認してください。
Macユーザー向けには、fleet-cli のHomebrew Formulaeが用意されています。
LinuxおよびWindowsユーザー向けには、各Fleet リリースの assets としてバイナリが提供されています。
Linux AMD:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-amd64Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-arm64
fleet-cliを実行可能にしてください:chmod +x fleet-cli使用する
suse-edge/fleet-examplesリリース をクローンします:git clone -b release-3.6.1 https://github.com/suse-edge/fleet-examples.gitfleet-examplesリポジトリにあるSUC fleetに移動します:cd fleet-examples/fleets/day2/system-upgrade-controllerSUCをデプロイするクラスターを決定します。これは、管理クラスター内の適切なFleetワークスペースにSUCバンドルをデプロイすることで実行されます。デフォルトでは、Fleetには2つのワークスペースがあります:
fleet-local- *管理*クラスターにデプロイする必要があるリソース用。fleet-default- *ダウンストリーム*クラスターにデプロイする必要があるリソース用。Fleetワークスペースの詳細については、アップストリームのドキュメントを参照してください。
SUCをダウンストリームクラスターのみにデプロイする場合は、特定のクラスターに一致する
targets.yamlファイルを作成してください:cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOFダウンストリームクラスターへのマッピング方法については、ダウンストリームクラスターへのマッピング を参照してください。
バンドルのビルドに進みます:
Notefleet-examples/fleets/day2/system-upgrade-controllerディレクトリにfleet-cliを*ダウンロードしない*ように注意してください。そうしないと、バンドルに同梱されてしまい、推奨されません。管理クラスターにSUCをデプロイするには、以下を実行します。
fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yamlダウンストリームクラスターにSUCをデプロイするには、以下を実行します。
fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - system-upgrade-controller . > system-upgrade-controller-bundle.yamlこのプロセスの詳細については、Helmチャートをバンドルに変換するを参照してください。
fleet-cli applyコマンドの詳細については、fleet applyを参照してください。
system-upgrade-controller-bundle.yamlバンドルを管理クラスターのマシンに転送します。scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>管理クラスター上で、
system-upgrade-controller-bundle.yamlバンドルをデプロイします。kubectl apply -f system-upgrade-controller-bundle.yaml管理クラスター上で、バンドルがデプロイされていることを検証します。
# Namespace will vary based on where you want to deploy SUC kubectl get bundle system-upgrade-controller -n <fleet-local/fleet-default> NAME BUNDLEDEPLOYMENTS-READY STATUS system-upgrade-controller 1/1バンドルをデプロイしたFleetワークスペースに基づいて、クラスターに移動し、SUCのデプロイを検証します。
NoteSUCは常に cattle-system ネームスペースにデプロイされます。
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 111s
18.2.2 System Upgrade ControllerのHelmインストール #
Rancherチャートリポジトリを追加します。
helm repo add rancher-charts https://charts.rancher.io/SUCチャートをデプロイします。
helm install system-upgrade-controller rancher-charts/system-upgrade-controller --version 109.0.1 --set global.cattle.psp.enabled=false -n cattle-system --create-namespaceこれにより、Edge 3.6 プラットフォームで必要とされるSUCバージョン v0.19.1 がインストールされます。
SUCのデプロイメントを検証します。
kubectl get deployment system-upgrade-controller -n cattle-system NAME READY UP-TO-DATE AVAILABLE AGE system-upgrade-controller 1/1 1 1 37s
18.3 System Upgrade Controllerプランの監視 #
SUCプランは、以下の方法で確認できます。
Rancher UI (Section 18.3.1, “Upgrade Controllerプランの監視 - Rancher UI”) を使用する。
クラスター内部の手動監視 (Section 18.3.2, “Upgrade Controllerプランの監視 - 手動”)を通じて
SUCプラン用にデプロイされたポッドは、実行成功後 15 分間保持されます。その後、それらを作成した対応するジョブによって削除されます。この期間を過ぎてもPodのログにアクセスできるようにするには、クラスターのログ記録を有効にする必要があります。Rancherでこれを行う方法の詳細については、https://ranchermanager.docs.rancher.com/v2.14/integrations-in-rancher/logging[Rancher Integration with Logging Services]を参照してください。
18.3.1 Upgrade Controllerプランの監視 - Rancher UI #
特定のSUCプランのPodログを確認するには:
左上隅にある*☰ → <your-cluster-name>*
[Workloads] → > [Pods]を選択します。
`Only User Namespaces`ドロップダウンメニューを選択し、`cattle-system`ネームスペースを追加します。
Podフィルターバーに、SUCプランPodの名前を入力します。名前は次のテンプレート形式になります:
apply-<plan_name>-on-<node_name>Note特定のSUCプランに対して、`Completed`と`Unknown`の両方のPodが存在する場合があります。これは想定される動作であり、一部のアップグレードの性質上発生します。
ログを確認するPodを選択し、*⋮ → View Logs*に移動します。
18.3.2 Upgrade Controllerプランの監視 - 手動 #
以下の手順では、`kubectl`が*SUC Plans*がデプロイされているクラスターに接続するように構成されていることを前提としています。
デプロイされた*SUC*プランを一覧表示します:
kubectl get plans -n cattle-system*SUC*プランのPodを取得します:
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-systemNote特定のSUCプランに対して、`Completed`と`Unknown`の両方のPodが存在する場合があります。これは想定される動作であり、一部のアップグレードの性質上発生します。
Podのログを取得します:
kubectl logs <pod_name> -n cattle-system