22 System Upgrade Controller #
System Upgrade Controllerのドキュメントを参照してください。
System Upgrade Controller (SUC)は、汎用のKubernetesネイティブアップグレードコントローラ(ノード用)を提供することを目的としています。あらゆるアップグレードポリシー/要件を定義するための新しいCRDであるPlanが導入されています。Planは、クラスタ内のノードを変更する明確な意図です。
22.1 SUSE EdgeでのSystem Upgrade Controllerの用途 #
SUSE
Edgeでは、SUC
を使用して、管理クラスタとダウンストリームクラスタでのOSとKubernetesのバージョンアップグレードに関連するさまざまな「Day
2」操作を容易にします。
「Day 2」操作は、SUC
Plan
によって定義されます。これらのプランに基づき、SUC
は各ノードにワークロードをデプロイし、それぞれの「Day
2」操作を実行します。
SUC
は、第23章 「Upgrade Controller」内でも使用されます。SUCとUpgrade
Controllerの主な違いに関する詳細については、 23.2項 「Upgrade ControllerとSystem Upgrade Controller」を参照してください。
22.2 System Upgrade Controllerのインストール #
Rancher v2.10.0以降、System
Upgrade Controller
は自動的にインストールされます。
ご使用の環境がRancherによって管理されていない場合、またはRancherのバージョンがv2.10.0
より前の場合にのみ、以下の手順に従ってください。
suse-edge/fleet-examplesリポジトリにあるFleet (第8章 「Fleet」)からSUCをインストールすることをお勧めします。
suse-edge/fleet-examples
リポジトリで提供されるリソースは常に有効なfleet-examples
releaseから使用される必要があります。使用する必要のあるリリースを確認するには、リリースノート(52.1項 「要約」)を参照してください。
SUCのインストールにFleetを使用できない場合は、RancherのHelmチャートリポジトリからインストールするか、独自のサードパーティGitOpsワークフローにRancherのHelmチャートを組み込むことができます。
このセクションでは以下の内容を取り上げます。
Fleetのインストール(22.2.1項 「System Upgrade Controller Fleetのインストール」)
Helmのインストール(22.2.2項 「System Upgrade Controller Helmのインストール」)
22.2.1 System Upgrade Controller Fleetのインストール #
Fleetを使用して、SUCをデプロイするために使用できるリソースは2つあります。
GitRepoリソース - 外部/ローカルGitサーバが利用できるユースケース用。インストール手順については、「System Upgrade Controllerのインストール – GitRepo」(22.2.1.1項 「System Upgrade Controllerのインストール - GitRepo」)を参照してください。
バンドルリソース - ローカルGitサーバオプションをサポートしないエアギャップ環境のユースケース用。インストール手順については、「System Upgrade Controllerのインストール - バンドル」(22.2.1.2項 「System Upgrade Controllerのインストール - バンドル」)を参照してください。
22.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.3.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.3.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.3.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
22.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/v0.12.2/fleet-linux-amd64
Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/v0.12.2/fleet-linux-arm64
fleet-cli
を実行可能にします。chmod +x fleet-cli
使用する
suse-edge/fleet-examples
リリースのクローンを作成します。git clone -b release-3.3.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
22.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 106.0.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace
これにより、Edge 3.3.1プラットフォームで必要なSUCバージョン0.15.2がインストールされます。
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
22.3 System Upgrade Controller Planのモニタリング #
SUC Planは次の方法で確認できます。
Rancher UI (22.3.1項 「System Upgrade Controller Planのモニタリング - Rancher UI」)を通じて
クラスタ内の手動モニタリング(22.3.2項 「System Upgrade Controller Planのモニタリング - 手動」)を通じて
SUC Plan用にデプロイされたPodは正常実行後、15分間維持されます 。その後、作成元の対応するJobによって削除されます。この時間後もPodのログにアクセスできるようにするには、クラスタのログ記録を有効にする必要があります。Rancherでこれを実行する方法については、「Rancher Integration with Logging Services (Rancherとログ記録サービスの統合)」を参照してください。
22.3.1 System Upgrade Controller Planのモニタリング - Rancher UI #
特定のSUC PlanのPodログを確認するには、次の手順を実行します。
左上隅で、[☰]→[<クラスタ名>]を選択します。
[Workloads (ワークロード)]→[Pods]を選択します。
[
Only User Namespaces (ユーザネームスペースのみ)
]ドロップダウンメニューを選択し、[cattle-system
]ネームスペースを追加します。Podフィルタバーに、SUC Plan Podの名前を入力します。名前は次のテンプレート形式になります:
apply-<plan_name>-on-<node_name>
。注記特定のSUC Planに対して[
Completed (完了)
]Podと[Unknown (不明)
]Podの両方が存在する場合があります。これは予期されており、一部のアップグレードの性質により発生します。ログを確認するPodを選択し、⋮ → [View Logs (ログの表示)]に移動します。
22.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