19 System Upgrade Controller #
System Upgrade Controllerのドキュメントを参照してください。
System Upgrade Controller (SUC)は、汎用のKubernetesネイティブアップグレードコントローラー(ノード用)を提供することを目的としています。あらゆるアップグレードポリシー/要件を定義するための新しいCRDであるPlanが導入されています。Planは、クラスタ内のノードを変更する明確な意図です。
19.1 SUSE EdgeでSystem Upgrade Controllerを使用する方法 #
SUCは、管理クラスタ/ダウンストリームクラスタをあるEdgeプラットフォームバージョンから別のバージョンにアップグレードするために実行する必要があるさまざまなDay
2
操作を支援するために使用されます。 Day 2
操作は、 SUC
Planの形式で定義されます。これらのプランに基づき、SUCは各ノードにワークロードをデプロイし、それぞれのDay
2
操作を実行します。
19.2 System Upgrade Controllerのインストール #
suse-edge/fleet-examplesリポジトリにあるFleet (第6章 「Fleet」)を介してSUCをインストールすることをお勧めします。
suse-edge/fleet-examples
リポジトリで提供されるリソースは常に有効なfleet-examples
releaseから使用される「必要があります」。使用する必要のあるリリースを確認するには、リリースノート(45.1項 「要約」)を参照してください。
SUCのインストールにFleet (第6章 「Fleet」)を使用できない場合は、RancherのHelmチャートリポジトリを介してインストールするか、RancherのHelmチャートを独自のサードパーティGitOpsワークフローに組み込むことができます。
このセクションでは以下の内容を取り上げます。
Fleetのインストール(19.2.1項 「System Upgrade Controller Fleetのインストール」)
Helmのインストール(19.2.2項 「System Upgrade Controller Helmのインストール」)
19.2.1 System Upgrade Controller Fleetのインストール #
Fleetを使用する場合は、SUCのデプロイに使用可能な2つのリソースがあります。
GitRepoリソース - 外部/ローカルGitサーバが利用できるユースケース用。インストール手順については、「System Upgrade Controllerのインストール - GitRepo (19.2.1.1項 「System Upgrade Controllerのインストール - GitRepo」)」を参照してください。
バンドルリソース - ローカルGitサーバオプションをサポートしないエアギャップ環境のユースケース用。インストール手順については、「System Upgrade Controllerのインストール - バンドル(19.2.1.2項 「System Upgrade Controllerのインストール - バンドル」)」を参照してください。
19.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.1.0 paths: - fleets/day2/system-upgrade-controller repo: https://github.com/suse-edge/fleet-examples.git EOF
ダウンストリームクラスタにSUCをデプロイするには、次のようにします。
注記以下のリソースをデプロイする前に、有効な
ターゲット
設定を提供する「必要があります」。Fleetがリソースをデプロイするダウンストリームクラスタを認識できるようにするためです。ダウンストリームクラスタへのマッピング方法については、 Mapping to Downstream Clusters (ダウンストリームクラスタへのマッピング」を参照してください。kubectl apply -n fleet-default -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: system-upgrade-controller spec: revision: release-3.1.0 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.1.0 1/1
System 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
19.2.1.2 System Upgrade Controllerのインストール - バンドル #
このセクションは、fleet-cliを使用して標準のFleet設定からバンドルリソースを構築およびデプロイする方法について説明します。
ネットワークにアクセスできるマシンで、fleet-cliをダウンロードします。
注記ダウンロードするfleet-cliのバージョンが、クラスタにデプロイしたFleetのバージョンに一致していることを確認します。
Macユーザの場合、fleet-cli Homebrew Formulaeがあります。
LinuxおよびWindowsユーザの場合、Fleetリリースごとにアセットとしてバイナリが存在します。
Linux AMD:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-amd64
Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-arm64
fleet-cli
を実行可能にします。chmod +x fleet-cli
使用するsuse-edge/fleet-examples リリースのクローンを作成します。
git clone -b release-3.1.0 https://github.com/suse-edge/fleet-examples.git
fleet-examplesリポジトリにある、SUC fleetに移動します。
cd fleet-examples/fleets/day2/system-upgrade-controller
SUCをデプロイするクラスタを決定します。これは、管理クラスタ内の適切なFleetワークスペースにSUCバンドルをデプロイすることで実行されます。デフォルトでは、Fleetには2つのワークスペースがあります。
fleet-local
- 管理クラスタにデプロイする必要があるリソース用。fleet-default
- ダウンストリームクラスタにデプロイする必要があるリソース用。Fleetワークスペースの詳細については、アップストリームドキュメントを参照してください。
ダウンストリームクラスタにのみSUCをデプロイする場合は、特定のクラスタに一致するtargets.yamlファイルを作成します。
cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOF
ダウンストリームクラスタへのマッピング方法については、「Mapping to Downstream Clusters (ダウンストリームクラスタへのマッピング)」を参照してください。
バンドルの構築に進みます。
注記fleet-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
このプロセスの詳細については、「Convert a Helm Chart into a Bundle (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デプロイメントを検証します。
注記SUCは常に、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
19.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 104.0.0+up0.7.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace
これにより、Edge 3.1プラットフォームで必要なSUC
0.13.4
バージョンがインストールされます。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
19.3 System Upgrade Controller Planのモニタリング #
SUC Planは次の方法で表示できます。
Rancher UI (19.3.1項 「System Upgrade Controller Planのモニタリング - Rancher UI」)を介して
クラスタ内の手動モニタリング(19.3.2項 「System Upgrade Controller Planのモニタリング - 手動」)を介して
SUC Plan用にデプロイされたPodは正常実行後、15分間維持されます 。その後、作成元の対応するジョブによって削除されます。この時間後もPodのログにアクセスできるようにするには、クラスタのログ記録を有効にする必要があります。Rancherでこれを実行する方法については、「Rancher Integration with Logging Services (Rancherとログ記録サービスの統合)」を参照してください。
19.3.1 System Upgrade Controller Planのモニタリング - Rancher UI #
特定のSUC PlanのPodのログを確認するには、次の手順を実行します。
左上隅で、☰ → <クラスタ名>を選択します。
[Workloads (ワークロード)] → [Pods]を選択します。
[
Only User Namespaces (ユーザネームスペースのみ)
]ドロップダウンメニューを選択し、[cattle-system
]ネームスペースを追加します。[Pods]フィルタバーにSUC Plan Podの名前を入力します。名前は
apply-<plan_name>-on-<node_name>
のテンプレート形式に従います。注記特定のSUC Planに対して[Completed (完了)] Podと[Unknown (不明)]Podの両方が存在する場合があります。これは予期されており、一部のアップグレードの性質により発生します。
ログを確認するPodを選択し、⋮ → [View Logs (ログの表示)]に移動します。
19.3.2 System Upgrade Controller Planのモニタリング - 手動 #
以下の手順は、 kubectl
が、SUC
Planがデプロイされたクラスタに接続するように設定されていることを前提としています。
デプロイしたSUC Planを一覧にします。
kubectl get plans -n cattle-system
SUC Plan用Podを入手します。
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-system
注記特定のSUC Planに対して[Completed (完了)] Podと[Unknown (不明)]Podの両方が存在する場合があります。これは予期されており、一部のアップグレードの性質により発生します。
Podのログを取得します。
kubectl logs <pod_name> -n cattle-system