29 ダウンストリームクラスタ #
このセクションでは、管理クラスタ
を使用して、ダウンストリームクラスタのさまざまな部分に対して、各種のDay
2
操作を行う方法について説明します。
29.1 はじめに #
このセクションは、Day 2
操作に関するドキュメントの「出発点」となることを目的としています。次の情報を確認できます。
複数のダウンストリームクラスタで
Day 2
操作を実行するために使用するデフォルトコンポーネント(29.1.1項 「コンポーネント」)。自身の特定のユースケース(29.1.2項 「ユースケースの決定」)にどの
Day 2
リソースを使用するかの判断。Day 2
操作に推奨されるワークフローシーケンス(29.1.3項 「Day 2ワークフロー」)。
29.1.1 コンポーネント #
以下に、Day 2
操作を正常に実行できるように、 管理クラスタ
または
ダウンストリームクラスタ
のいずれかでセットアップする必要があるデフォルトコンポーネントについて説明します。
29.1.1.1 Rancher #
ダウンストリームクラスタ
の管理を担当します。管理クラスタ
上にデプロイする必要があります。
詳細については、第4章 「Rancher」を参照してください。
29.1.1.2 Fleet #
マルチクラスタリソースのデプロイメントを担当します。
通常は、Rancher
コンポーネントによって提供されます。
Rancher
を使用しないユースケースでは、スタンドアロンコンポーネントとしてデプロイできます。
Fleetをスタンドアロンコンポーネントとしてインストールする方法の詳細については、Fleetのインストールの詳細を参照してください。
Fleetコンポーネントに関する詳細については、第6章 「Fleet」を参照してください。
このドキュメントは、GitOps方式でDay
2
操作に関連するリソースのデプロイメントを自動化するために、Fleet
、具体的にはGitRepo
とBundle
リソース(この詳細は29.1.2項 「ユースケースの決定」で詳しく説明します)に大きく依存しています。
サードパーティのGitOpsツールの使用が必要なユースケースの場合は、以下を参照してください。
OSアップグレード
の場合 - 29.2.4.3項 「SUC Planのデプロイメント - サードパーティのGitOpsワークフロー」Kubernetesディストリビューションの更新
の場合 - 29.3.4.3項 「SUC Planのデプロイメント - サードパーティのGitOpsワークフロー」EIBでデプロイされたHelmチャートのアップグレード
の場合 - 29.4.3.3.4項 「サードパーティのGitOpsツールを使用したHelmチャートのアップグレード」EIB以外でデプロイされたHelmチャートのアップグレード
の場合 - 45.1項 「要約」ページから目的のEdgeリリースによってサポートされているチャートバージョンを取得し、サードパーティのGitOpsツールにチャートバージョンとURLを入力します
29.1.1.3 System Upgrade Controller (SUC) #
System Upgrade Controller (SUC)は、
Plan
と呼ばれるカスタムリソースを通じて提供される設定データに基づいて指定されたノードでタスクを実行する責任を負います。
SUCで異なるDay 2操作をサポートできるようにするには、SUCがアップグレードを必要とする各ダウンストリームクラスタにデプロイされることが重要です。
SUCコンポーネントとそれがEdgeスタックにどのように適合するかに関する詳細については、System Upgrade Controller (第19章 「System Upgrade Controller」)コンポーネントのドキュメントを参照してください。
ダウンストリームクラスタにSUCをデプロイする方法については、まず、ユースケース(29.1.2項 「ユースケースの決定」)を決定してから、「System Upgrade Controllerのインストール - GitRepo」(19.2.1.1項 「System Upgrade Controllerのインストール - GitRepo」)または「System Upgrade Controllerのインストール - バンドル」(19.2.1.2項 「System Upgrade Controllerのインストール - バンドル」)を参照してください。
29.1.2 ユースケースの決定 #
前述のように、Day
2
操作に関連するリソースは、FleetのGitRepo
リソースとBundle
リソースを使用してダウンストリームクラスタに伝播されます。
以下に、これらのリソースの機能と、 Day 2
操作に使用する必要があるユースケースに関する詳細を説明します。
29.1.2.1 GitRepo #
GitRepo
は、Fleet
がバンドル
の作成元として使用できるGitリポジトリを表すFleet
(第6章 「Fleet」)リソースです。各バンドル
は、GitRepo
リソースの内部で定義された設定パスに基づいて作成されます。詳細については、GitRepoのドキュメントを参照してください。
Day
2
操作に関して、GitRepo
リソースは通常、Fleet
GitOps アプローチを利用する非エアギャップ環境へのSUC
またはSUC
Plan
のデプロイに使用されます。
または、リポジトリのセットアップをローカルGitサーバ経由でミラーリングすると、GitRepo
リソースを使用して、SUC
またはSUC
Plan
をエアギャップ環境にデプロイすることもできます。
29.1.2.2 バンドル #
バンドル
は、ターゲットクラスタにデプロイする
「生」のKubernetesリソースを保持します。バンドルは通常、GitRepo
リソースから作成されますが、手動でデプロイできるユースケースもあります。詳細については、バンドルのドキュメントを参照してください。
Day 2
操作の観点では、バンドル
リソースは通常、
何らかの形態のローカルGitOps手法を使用しないエアギャップ環境(「ローカルGitサーバ」など
)でSUC
またはSUC Plan
をデプロイするために使用されます。
または、ご自身のユースケースでGitOpsワークフローを使用できない場合は(Gitリポジトリを使用する場合など)、バンドルリソースを使用して、SUC
またはSUC
Plan
を非エアギャップ環境にデプロイすることもできます。
29.1.3 Day 2ワークフロー #
以下に、ダウンストリームクラスタを特定のEdgeリリースにアップグレードする際に従う必要があるDay
2
ワークフローを示します。
OSアップグレード(29.2項 「OSのアップグレード」)
Kubernetesバージョンアップグレード(29.3項 「Kubernetesバージョンアップグレード」)
Helmチャートのアップグレード(29.4項 「Helmチャートのアップグレード」)
29.2 OSのアップグレード #
29.2.1 コンポーネント #
このセクションでは、 OSアップグレード
プロセスがデフォルトのDay
2
コンポーネント(29.1.1項 「コンポーネント」)よりも使用するカスタムコンポーネントについて説明します。
29.2.1.1 systemd.service #
あるEdgeバージョンから別のEdgeバージョンにOSが必要とするアップグレードに応じて、異なるsystemd.serviceが作成されます。
同じ OS バージョン(例:
6.0
)を必要とするEdgeバージョンの場合、os-pkg-update.service
が作成されます。これはtransactional-updateコマンドを使用して、通常のパッケージアップグレードを実行します。OSバージョンのマイグレーションが必要なEdgeバージョンの場合(例
5.5
→6.0
)、os-migration.service
が作成されます。これはtransactional-updateを使用して以下を実行します。まず、通常のパッケージアップグレードを実行します。マイグレーション前にすべてのパッケージが最新バージョンであることを確認するために行われます。古いパッケージ バージョンに関連する障害を軽減します。
その後、
zypper migration
コマンドを利用して、OSマイグレーションプロセスを続行します。
OSアップグレードが必要が各 ダウンストリームクラスタに配置されているSUC Plan通じて配布されます。
29.2.2 要件 #
全般:
SCC登録マシン - すべてのダウンストリームクラスタを
https://scc.suse.com/
に登録する必要があります。これは、os-pkg-update.service/os-migration.service
が必要なOS RPMリポジトリに正常に接続できるようにするために必要です。重要新しいOSバージョン(例: Edge 3.1)を必要とするEdgeリリースの場合、SCCキーが新しいバージョンへのマイグレーションをサポートしていることを確認します(例: Edge 3.1の場合は、SCCキーがSLE Micro
5.5
→6.0
へのマイグレーションをサポートしている必要があります)。SUC PlanのTolerationがノードのTolerationと一致すること - KubernetesクラスタノードにカスタムのTaintが設定されている場合は、SUC PlanにそのTaintに対するTolerationを追加してください。デフォルトでは、SUC Planには、control-planeノードのTolerationのみが含まれます。デフォルトのTolerationは次のとおりです。
CriticalAddonsOnly=true:NoExecute
node-role.kubernetes.io/control-plane:NoSchedule
node-role.kubernetes.io/etcd:NoExecute
注記追加のTolerationは、各Planの
.spec.tolerations
セクションに追加する必要があります。OSアップグレードに関連するSUC Planは、fleets/day2/system-upgrade-controller-plans/os-upgrade
の下のsuse-edge/fleet-examplesリポジトリにあります。有効なリポジトリ リリースreleaseタグからのPlanを使用してください。control-plane SUC Planに対してカスタムのTolerationを定義する例は次のようになります。
apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: os-upgrade-control-plane spec: ... tolerations: # default tolerations - key: "CriticalAddonsOnly" operator: "Equal" value: "true" effect: "NoExecute" - key: "node-role.kubernetes.io/control-plane" operator: "Equal" effect: "NoSchedule" - key: "node-role.kubernetes.io/etcd" operator: "Equal" effect: "NoExecute" # custom toleration - key: "foo" operator: "Equal" value: "bar" effect: "NoSchedule" ...
エアギャップ:
29.2.3 更新手順 #
このセクションは、Fleet (第6章 「Fleet」)を使用してOSアップグレード
SUC Plan をデプロイすることを前提としています。異なる方法でSUC Planをデプロイする場合は、 29.2.4.3項 「SUC Planのデプロイメント - サードパーティのGitOpsワークフロー」を参照してください。
この手順を使用して以前にアップグレードした環境の場合、ユーザは次の手順のいずれかを完了していることを確認する必要があります。
ダウンストリームクラスタから古いEdgeリリースバージョンに関連する以前にデプロイしたSUC Planを削除する
- これは、既存のGitRepo/Bundle
ターゲット設定から目的のダウンストリームクラスタを削除するか、GitRepo/バンドル
リソースを完全に削除することで、実行できます。既存のGitRepo/バンドルリソースを再利用する
- 目的のsuse-edge/fleet-examples
リリースの正しいフリートを保持する新しいタグにリソースのリビジョンをポイントすることで実行できます。
これは古いEdgeリリースバージョンのSUC Plan
間のクラッシュを回避するために実行されます。
ユーザがアップグレードを試す場合、ダウンストリームクラスタに既存のSUC
Plan
がある場合は、次のフリートエラーが表示されます。
Not installed: Unable to continue with install: Plan <plan_name> in namespace <plan_namespace> exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error..
OSアップグレード手順
は、 SUC
Planをダウンストリームクラスタにデプロイする手順が中心になります。その後、これらのPlanには、os-pkg-update.service/os-migration.service
をどのような方法でどのノードにデプロイするかに関する情報が保持されます。SUC Planの構造の詳細については、アップストリームドキュメントを参照してください。
OS アップグレード
SUC Planは次の方法で配布されます。
GitRepo
リソースを通じて - 29.2.4.1項 「SUC Planのデプロイメント - GitRepoリソース」バンドル
リソースを通じて - 29.2.4.2項 「SUC Planのデプロイメント - バンドルリソース」
どのリソースを使用すべきかを判断するには、29.1.2項 「ユースケースの決定」を参照してください。
アップグレード手順の完全な概要については、29.2.3.1項 「概要」セクションを参照してください。
29.2.3.1 概要 #
このセクションは、OSアップグレードプロセスが最初から最後まで通過する完全なワークフローを説明することを目的としています。
OSアップグレード手順:
ユースケースに基づいて、ユーザは目的のダウンストリームクラスタへの
OSアップグレードSUC Plan
のデプロイメントに対して、GitRepoリソースまたはバンドルリソースのどちらを使用するかどうかを決定します。GitRepo/バンドルを特定のダウンストリームクラスタのセットにマッピングする方法については、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマッピング)」を参照してください。SUC PlanのデプロイメントにGitRepoリソースまたはバンドルリソースのどちらを使用すべきかわからない場合は、29.1.2項 「ユースケースの決定」を参照してください。
GitRepo/バンドル設定オプションについては、29.2.4.1項 「SUC Planのデプロイメント - GitRepoリソース」または29.2.4.2項 「SUC Planのデプロイメント - バンドルリソース」を参照してください。
ユーザは設定済みのGitRepo/バンドルリソースを自身の
管理クラスタ
のfleet-default
ネームスペースにデプロイします。これは、手動または使用可能な場合はRancher UIから実行できます。Fleet (第6章 「Fleet」)は、
fleet-default
ネームスペースを絶えず監視し、新しくデプロイされたGitRepo/バンドルリソースをすぐに検出します。Fleetが監視するネームスペースの詳細については、Fleetの「Namespaces (ネームスペース)」のドキュメントを参照してください。ユーザがGitRepoリソースをデプロイした場合、
Fleet
は、GitRepoを調整し、そのパスとfleet.yamlの設定に基づいて、バンドルリソースをfleet-default
ネームスペースにデプロイします。詳細については、Fleetの「Git Repository Contents (Gitリポジトリの内容)」のドキュメントを参照してください。Fleet
は、続いてKubernetesリソース
をこのバンドルから、ターゲットとするすべてのダウンストリームクラスタ
にデプロイします。OSアップグレード
のコンテキストでは、Fleetは、次のリソースをバンドルからデプロイします。ワーカーSUC Plan - クラスタのワーカーノードでOSアップグレードを行う方法についてSUCに指示します。 クラスタがコントロールプレーンノードのみで構成されている場合、これは解釈 「されません」。すべてのコントロールプレーンSUC Planが正常に完了した後で実行されます。
コントロールプレーンSUC Plan - クラスタコントロールプレーンノードでOSアップグレードを実行する方法についてSUCに指示します。
スクリプトシークレット - 各 SUC Planで参照されます。実際のOSアップグレードを実行する
os-pkg-update.service/os-migration.service
の作成を担当するupgrade.sh
スクリプトが配布されます。スクリプトデータConfigMap - 各SUC Planで参照されます。
upgrade.sh
スクリプトで使用される設定が配布されます。注記上記のリソースは、各ダウンストリームクラスタの
cattle-system
ネームスペースにデプロイされます。
ダウンストリームクラスタで、SUCは、新しくデプロイされたSUC Planを検出し、SUC Planで定義されたノードセレクタと一致する各ノードに更新Podをデプロイします。SUC Plan Podを監視する方法については、 19.3項 「System Upgrade Controller Planのモニタリング」を参照してください。
更新Pod (各ノードにデプロイ)は、スクリプトシークレットをマウントし、シークレットによって配布される
upgrade.sh
スクリプトを実行します。upgrade.sh
は次の処理を続行します。その設定に基づいて、OSがパッケージ更新を必要としているか、移行する必要があるかどうかを決定します。
上記の結果に基づいて、
os-pkg-update.service
(パッケージ更新用)、またはos-migration.service
(マイグレーション用)のいずれかを作成します。サービスは oneshotタイプであり、次のワークフローを採用します。os-pkg-update.service
の場合:transactional-update cleanup up
を実行して、ノードOS上のすべてのパッケージバージョンを更新します。transactional-update
が成功したら、パッケージバージョンの更新が有効になるように、システムの再起動をスケジュールします。
os-migration.service
の場合:transactional-update cleanup up
を実行して、ノードOS上のすべてのパッケージバージョンを更新します。これは、 古いパッケージバージョンによってOSマイグレーションエラーが発生しないようにするために実行されます。OSを目的の値に移行します。マイグレーションは
zypper migration
コマンドを使用して実行されます。マイグレーションが有効になるように、システムの再起動をスケジュールします。
os-pkg-update.service/os-migration.service
を開始し、それが完了するまで待ちます。systemd.serviceがそのジョブを実行した後で、
os-pkg-update.service/os-migration.service
をクリーンアップします。今後、誤って実行/再起動されることがないように、システムから削除されます。
OSアップグレード手順は、システムの再起動で終了します。再起動後、OSパッケージバージョンはアップグレードされ、Edgeリリースが必要な場合は、OSも同様に移行される場合があります。
29.2.4 OSアップグレード - SUC Planのデプロイメント #
このセクションでは、Fleetの GitRepoおよび バンドルリソースを使用した SUC Plan関連のOSアップグレードのデプロイメントをオーケストレーションする方法について説明します。
29.2.4.1 SUC Planのデプロイメント - GitRepoリソース #
必要なOSアップグレード
SUC
Planを配布する、GitRepoリソースは、次の方法のいずれかでデプロイできます。
Rancher UI
を通じて - 29.2.4.1.1項 「GitRepoの作成 - Rancher UI」 (Rancher
が利用可能な場合)。(29.2.4.1.2項 「GitRepoの作成 - 手動」)リソースを
管理クラスタ
に手動でデプロイする。
デプロイ後に、ターゲットクラスタのノードのOSアップグレードプロセスを監視するには、19.3項 「System Upgrade Controller Planのモニタリング」のドキュメントを参照してください。
29.2.4.1.1 GitRepoの作成 - Rancher UI #
Rancher UIを通じてGitRepo
リソースを作成するには、公式のドキュメントに従ってください。
Edgeチームは、ユーザがGitRepoリソースのパス
として追加できるすぐに使用できるフリートを維持しています。
フリートが配布するSUC
plan
にカスタム許容値を含める必要がないユースケースでは、ユーザはsuse-edge/fleet-examples
リポジトリから
os-upgrade
フリートを直接参照できます。
カスタム許容値が必要な場合、ユーザは別のリポジトリからos-upgrade
フリートを参照して、必要に応じてSUC
Planに許容値を追加できます。
GitRepo
をsuse-edge/fleet-examples
リポジトリのフリートを使用するように設定する方法の例については、こちらを参照してください。
29.2.4.1.2 GitRepoの作成 - 手動 #
GitRepoリソースをプルします。
curl -o os-upgrade-gitrepo.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/gitrepos/day2/os-upgrade-gitrepo.yaml
GitRepo設定を編集し、
spec.targets
で目的のターゲットリストを指定します。デフォルトでは、suse-edge/fleet-examples
のGitRepo
リソースはどのダウンストリームクラスタにもマップ「されません」。すべてのクラスタ変更に一致させるには、デフォルトの
GitRepo
ターゲットを次のように変更します。spec: targets: - clusterSelector: {}
または、クラスタをより細かく選択したい場合は、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマップ)」を参照してください
GitRepoリソースを
管理クラスタ
に適用します。kubectl apply -f os-upgrade-gitrepo.yaml
fleet-default
ネームスペースで、作成した GitRepoリソースを表示します。kubectl get gitrepo os-upgrade -n fleet-default # Example output NAME REPO COMMIT BUNDLEDEPLOYMENTS-READY STATUS os-upgrade https://github.com/suse-edge/fleet-examples.git release-3.1.2 0/0
29.2.4.2 SUC Planのデプロイメント - バンドルリソース #
必要な OSアップグレード
SUC
Planを配布する、 バンドルリソースは次の方法のいずれかでデプロイできます。
Rancher UI
を通じて - 29.2.4.2.1項 「バンドルの作成 - Rancher UI」 (Rancher
が利用可能な場合)。(29.2.4.2.2項 「バンドルの作成 - 手動」)リソースを
管理クラスタ
に手動でデプロイする。
デプロイ後に、ターゲットクラスタのノードのOSアップグレードプロセスを監視するには、19.3項 「System Upgrade Controller Planのモニタリング」のドキュメントを参照してください。
29.2.4.2.1 バンドルの作成 - Rancher UI #
Edgeチームは、以下の手順で使用可能なすぐに使用できるバンドルを維持しています。
RancherのUIを通じてバンドルを作成するには、次の手順に従います。
左上隅で、[☰] → [Continuous Delivery (継続的デリバリ)]をクリックします。
[Advanced (詳細)]>[Bundles (バンドル)] に移動します。
[Create from YAML (YAMLから作成)]を選択します。
ここから次のいずれかの方法でバンドルを作成できます。
注記バンドルが配布する
SUC plan
にカスタム許容値を含める必要があるユースケースがある場合があります。以下の手順で生成されるバンドルには、必ずこれらの許容値を含めるようにします。バンドルコンテンツを
suse-edge/fleet-examples
から[Create from YAML (YAMLから作成)]ページに手動でコピーする。目的の リリースタグからsuse-edge/fleet-examplesのクローンを作成し、[Create from YAML (YAMLから作成)]ページの[Read from File (ファイルから読み取り)]オプションを選択する。ここからバンドルの場所(
bundles/day2/system-upgrade-controller-plans/os-upgrade
)に移動して、バンドルファイルを選択できます。これにより、バンドルコンテンツを持つ[Create from YAML (YAMLから作成)]ページが自動入力されます。
バンドル
のターゲットクラスタを次のように変更します。すべてのダウンストリームクラスタに一致させるには、デフォルトのバンドル
.spec.targets
を次のように変更します。spec: targets: - clusterSelector: {}
より細かくダウンストリームクラスタにマッピングするには、「Mapping to Downstream Clusters (ダウンストリームクラスタへのマップ)」を参照してください。
[Create (作成)]を選択します。
29.2.4.2.2 バンドルの作成 - 手動 #
バンドルリソースをプルします。
curl -o os-upgrade-bundle.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/bundles/day2/system-upgrade-controller-plans/os-upgrade/os-upgrade-bundle.yaml
バンドル
のターゲット設定を編集し、spec.targets
に目的のターゲットリストを指定します。デフォルトでは、suse-edge/fleet-examples
のバンドル
リソースは、どのダウンストリームクラスタにもマップ「されません」。すべてのクラスタに一致させるには、デフォルトの
バンドル
のターゲットを次のように変更します。spec: targets: - clusterSelector: {}
または、クラスタをより細かく選択したい場合は、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマップ)」を参照してください
バンドルリソースを
管理クラスタ
に適用します。kubectl apply -f os-upgrade-bundle.yaml
fleet-default
ネームスペースで、作成したバンドルリソースを表示します。kubectl get bundles -n fleet-default
29.2.4.3 SUC Planのデプロイメント - サードパーティのGitOpsワークフロー #
ユーザがOSアップグレードSUC
Planを独自のサードパーティGitOpsワークフロー(例:
Flux
)に組み込むユースケースがある場合があります。
必要なOSアップグレードリソースを取得するには、まず使用するsuse-edge/fleet-examplesリポジトリのEdge リリースタグを決定します。
その後、リソースはfleets/day2/system-upgrade-controller-plans/os-upgrade
で見つかります。ここでは次のようになります。
plan-control-plane.yaml
- コントロールプレーンノードのsystem-upgrade-controller
Planリソース。plan-worker.yaml
- ワーカーノードのsystem-upgrade-controller
Planリソース。secret.yaml
-upgrade.sh
スクリプトを配布するシークレット。config-map.yaml
-upgrade.sh
スクリプトによって使用されるアップグレード設定を提供するConfigMap。
これらのPlan
リソースは、system-upgrade-controller
によって解釈され、アップグレードする各ダウンストリームクラスタにデプロイする必要があります。system-upgrade-controller
をデプロイする方法については、19.2項 「System Upgrade Controllerのインストール」を参照してください。
GitOpsワークフローをOSアップグレードの SUC
Planをデプロイするために使用する方法をよりよく理解するために、Fleet
を使用して更新手順の概要(29.2.3.1項 「概要」)を確認すると役立つ場合があります。
29.3 Kubernetesバージョンアップグレード #
このセクションでは、Rancher (第4章 「Rancher」)インスタンスを使用して作成されて「いない」ダウンストリームクラスタのアップグレードについて説明します。Rancher
で作成したクラスタのKubernetesバージョンをアップグレードする方法については、「Upgrading
and Rolling Back Kubernetes (Kubernetesのアップグレードとロールバック)」を参照してください。
29.3.1 コンポーネント #
このセクションでは、Kubernetesアップグレード
プロセスがデフォルトのDay
2
コンポーネント(29.1.1項 「コンポーネント」)よりも優先して使用するカスタムコンポーネントについて説明します。
29.3.1.1 rke2-upgrade #
特定ノードのRKE2バージョンのアップグレードを行うイメージです。
SUC Planに基づいてSUCによって作成されたPodを通じて配布されます。このPlanは、RKE2のアップグレードが必要な各ダウンストリームクラスタに配置する必要があります。
rke2-upgrade
イメージによるアップグレードの実行方法の詳細については、アップストリームドキュメントを参照してください。
29.3.1.2 k3s-upgrade #
特定のノードのK3sバージョンをアップグレードするイメージです。
SUC Planに基づいてSUCによって作成されたPodを通じて配布されます。このPlanは、K3sのアップグレードが必要な各ダウンストリームクラスタに配置する必要があります。
k3s-upgrade
イメージによるアップグレードの実行方法の詳細については、アップストリームドキュメントを参照してください。
29.3.2 要件 #
Kubernetesディストリビューションをバックアップします。
インポートしたRKE2クラスタについては、RKE2のバックアップと復元に関するドキュメントを参照してください。
インポートしたK3sクラスタについては、K3sのバックアップと復元に関するドキュメントを参照してください。
SUC PlanのTolerationがノードのTolerationと一致すること - KubernetesクラスタノードにカスタムのTaintが設定されている場合は、SUC PlanにそのTaintに対するTolerationを追加してください。デフォルトでは、SUC Planには、control-planeノードのTolerationのみが含まれます。デフォルトのTolerationは次のとおりです。
CriticalAddonsOnly=true:NoExecute
node-role.kubernetes.io/control-plane:NoSchedule
node-role.kubernetes.io/etcd:NoExecute
注記追加のTolerationは、各Planの
.spec.tolerations
セクションに追加する必要があります。Kubernetesバージョンアップグレードに関するSUC Planは、次の場所のsuse-edge/fleet-examplesリポジトリにあります。RKE2 -
fleets/day2/system-upgrade-controller-plans/rke2-upgrade
K3s -
fleets/day2/system-upgrade-controller-plans/k3s-upgrade
必ず、有効なリポジトリリリースタグからのPlanを使用してください。
RKE2 control-plane SUC PlanのカスタムTolerationの定義例は次のようになります。
apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: rke2-upgrade-control-plane spec: ... tolerations: # default tolerations - key: "CriticalAddonsOnly" operator: "Equal" value: "true" effect: "NoExecute" - key: "node-role.kubernetes.io/control-plane" operator: "Equal" effect: "NoSchedule" - key: "node-role.kubernetes.io/etcd" operator: "Equal" effect: "NoExecute" # custom toleration - key: "foo" operator: "Equal" value: "bar" effect: "NoSchedule" ...
29.3.3 アップグレード手順 #
このセクションでは、SUC PlanをFleet (第6章 「Fleet」)を使用してデプロイすることを想定しています。別の方法でSUC Planをデプロイする場合は、29.3.4.3項 「SUC Planのデプロイメント - サードパーティのGitOpsワークフロー」を参照してください。
この手順を使用して以前にアップグレードした環境の場合、ユーザは次の手順のいずれかを完了していることを確認する必要があります。
ダウンストリームクラスタから古いEdgeリリースバージョンに関連する以前にデプロイしたSUC Planを削除する
- これは、既存のGitRepo/Bundle
ターゲット設定から目的のダウンストリームクラスタを削除するか、GitRepo/バンドル
リソースを完全に削除することで、実行できます。既存のGitRepo/バンドルリソースを再利用する
- 目的のsuse-edge/fleet-examples
リリースの正しいフリートを保持する新しいタグにリソースのリビジョンをポイントすることで実行できます。
これは古いEdgeリリースバージョンのSUC Plan
間のクラッシュを回避するために実行されます。
ユーザがアップグレードを試す場合、ダウンストリームクラスタに既存のSUC
Plan
がある場合は、次のフリートエラーが表示されます。
Not installed: Unable to continue with install: Plan <plan_name> in namespace <plan_namespace> exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error..
Kubernetesバージョンアップグレード手順
は、SUC
Planをダウンストリームクラスタにデプロイする手順が中心になります。その後、これらのPlanには、SUCに対し、rke2/k3s-upgrade
イメージを実行するPodをどのノード上に作成するかを指示する情報が保持されます。SUC Planの構造については、アップストリームドキュメントを参照してください。
Kubernetesアップグレード
Planは次のように配布されます。
GitRepo
リソースを使用する - 29.3.4.1項 「SUC Planのデプロイメント - GitRepoリソース」バンドル
リソースを使用する - 29.3.4.2項 「SUC Planのデプロイメント - バンドルリソース」
どのリソースを使用すべきかを判断するには、29.1.2項 「ユースケースの決定」を参照してください。
更新手順中の処理の概要については、29.3.3.1項 「概要」のセクションを参照してください。
29.3.3.1 概要 #
このセクションでは、 Kubernetesバージョンのアップグレードプロセスが最初から最後まで通過する完全なワークフローを説明することを目的としています。
Kubernetesバージョンアップグレードの手順:
ユーザは、
KubernetesアップグレードSUC Plan
を目的のダウンストリームクラスタにデプロイするために、GitRepoリソースを使用するか、それともバンドルリソースを使用するかをそのユースケースに基づいて判断します。GitRepo/バンドルを特定のダウンストリームクラスタセットにマップする方法の詳細については、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマップ)」を参照してください。SUC PlanのデプロイメントにGitRepoリソースまたはバンドルリソースのどちらを使用すべきかわからない場合は、29.1.2項 「ユースケースの決定」を参照してください。
GitRepo/バンドルの設定オプションについては、29.3.4.1項 「SUC Planのデプロイメント - GitRepoリソース」または29.3.4.2項 「SUC Planのデプロイメント - バンドルリソース」を参照してください。
ユーザは設定済みのGitRepo/バンドルリソースを自身の
管理クラスタ
のfleet-default
ネームスペースにデプロイします。これは、手動または使用可能な場合はRancher UIから実行できます。Fleet (第6章 「Fleet」)は、
fleet-default
ネームスペースを絶えず監視し、新しくデプロイされたGitRepo/バンドルリソースをすぐに検出します。Fleetが監視するネームスペースの詳細については、Fleetの「Namespaces (ネームスペース)」のドキュメントを参照してください。ユーザがGitRepoリソースをデプロイした場合、
Fleet
は、GitRepoを調整し、そのパスとfleet.yamlの設定に基づいて、バンドルリソースをfleet-default
ネームスペースにデプロイします。詳細については、Fleetの「Git Repository Contents (Gitリポジトリの内容)」のドキュメントを参照してください。Fleet
は続いて、Kubernetesリソース
をこのバンドルから、ターゲットとするすべてのダウンストリームクラスタ
にデプロイします。Kubernetesバージョンのアップグレード
のコンテキストでは、Fleetは、次のリソースをバンドル からデプロイします(Kubernetesディストリビューションによって異なります)。rke2-upgrade-worker
/k3s-upgrade-worker
- クラスタ ワーカーノードでKubernetesをアップグレードする方法をSUCに指示します。クラスタが コントロールプレーンノードからのみ構成されている場合は解釈「されません」。rke2-upgrade-control-plane
/k3s-upgrade-control-plane
- クラスタのコントロールプレーンノードでKubernetesをアップグレードする方法をSUCに指示します。注記上記のSUC Planは、各ダウンストリームクラスタの
cattle-system
ネームスペースにデプロイされます。
ダウンストリームクラスタで、SUCは、新しくデプロイされたSUC Planを検出し、SUC Planで定義されたノードセレクタと一致する各ノードに更新Podをデプロイします。SUC Plan Podを監視する方法については、 19.3項 「System Upgrade Controller Planのモニタリング」を参照してください。
デプロイしたSUC Planに応じて、更新Podは、rke2-upgradeイメージまたはk3s-upgradeイメージのいずれかを実行して、それぞれのクラスタノードで次のワークフローを実行します。
Cordonクラスタノード - ノードのアップグレード時にこのノードにPodが誤ってスケジュールされないようにするために、このノードを
unschedulable
とマークします。ノードOSにインストールされている
rke2/k3s
バイナリを、Podが現在実行しているrke2-upgrade/k3s-upgrade
イメージによって配布されるバイナリに置き換えます。ノードOSで実行されている
rke2/k3s
プロセスを強制終了します - これにより、新しいバージョンを使用してrke2/k3s
プロセスを自動的に再起動するようにスーパーバイザに指示します。Uncordonクラスタノード - Kubernetesディストリビューションの正常なアップグレード後、ノードはもう一度
schedulable
とマークされます。
上記の手順を実行すると、各クラスタノードのKubernetesバージョンが目的のEdge互換リリースにアップグレードされているはずです。
29.3.4 Kubernetesバージョンアップグレード - SUC Planのデプロイメント #
このセクションでは、Fleetの GitRepoおよびバンドルリソースを使用して SUC Plan関連のKubernetesアップグレードの デプロイメントを調整する方法について説明します。
29.3.4.1 SUC Planのデプロイメント - GitRepoリソース #
必要なKubernetesアップグレード
SUC
Planを配布するGitRepoリソースは、次のいずれかの方法でデプロイできます。
Rancher UI
を使用する - 29.3.4.1.1項 「GitRepoの作成 - Rancher UI」 (Rancher
が利用可能な場合)。リソースを
管理クラスタ
に手動でデプロイする(29.3.4.1.2項 「GitRepoの作成 - 手動」)。
デプロイ後に、ターゲットクラスタのノードのKubernetesアップグレードプロセスを監視するには、19.3項 「System Upgrade Controller Planのモニタリング」 ドキュメントを参照してください。
29.3.4.1.1 GitRepoの作成 - Rancher UI #
Rancher UIを通じてGitRepo
リソースを作成するには、公式のドキュメントに従ってください。
Edgeチームは、ユーザがGitRepoリソースのパス
として追加できるrke2とk3s
Kubernetesディストリビューションのすぐに使用できるフリートを維持しています。
これらのフリートが配布するSUC
Plan
にカスタム許容値を含める必要がないユースケースの場合、ユーザはsuse-edge/fleet-examples
リポジトリからフリートを直接参照できます。
カスタム許容値が必要な場合、ユーザは別のリポジトリからフリートを参照して、必要に応じてSUC Planに許容値を追加できるようにする必要があります。
suse-edge/fleet-examples
リポジトリからフリートを使用したGitRepo
リソースの設定例は、次のとおりです。
29.3.4.1.2 GitRepoの作成 - 手動 #
GitRepoリソースをプルします。
RKE2クラスタの場合:
curl -o rke2-upgrade-gitrepo.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/gitrepos/day2/rke2-upgrade-gitrepo.yaml
K3sクラスタの場合:
curl -o k3s-upgrade-gitrepo.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/gitrepos/day2/k3s-upgrade-gitrepo.yaml
GitRepo設定を編集し、
spec.targets
で目的のターゲットリストを指定します。デフォルトでは、suse-edge/fleet-examples
のGitRepo
リソースはどのダウンストリームクラスタにもマップ「されません」。すべてのクラスタ変更に一致させるには、デフォルトの
GitRepo
ターゲットを次のように変更します。spec: targets: - clusterSelector: {}
または、クラスタをより細かく選択したい場合は、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマップ)」を参照してください
GitRepoリソースを
管理クラスタ
に適用します。# RKE2 kubectl apply -f rke2-upgrade-gitrepo.yaml # K3s kubectl apply -f k3s-upgrade-gitrepo.yaml
fleet-default
ネームスペースで、作成した GitRepoリソースを表示します。# RKE2 kubectl get gitrepo rke2-upgrade -n fleet-default # K3s kubectl get gitrepo k3s-upgrade -n fleet-default # Example output NAME REPO COMMIT BUNDLEDEPLOYMENTS-READY STATUS k3s-upgrade https://github.com/suse-edge/fleet-examples.git release-3.1.2 0/0 rke2-upgrade https://github.com/suse-edge/fleet-examples.git release-3.1.2 0/0
29.3.4.2 SUC Planのデプロイメント - バンドルリソース #
必要なKubernetesアップグレード
SUC
Planを配布するバンドルリソースは、次のいずれかの方法でデプロイできます。
Rancher UI
を使用する - 29.3.4.2.1項 「バンドルの作成 - Rancher UI」 (Rancher
が利用可能な場合)。リソースを
管理クラスタ
に手動でデプロイする(29.3.4.2.2項 「バンドルの作成 - 手動」)。
デプロイ後に、ターゲットクラスタのノードのKubernetesアップグレードプロセスを監視するには、19.3項 「System Upgrade Controller Planのモニタリング」 ドキュメントを参照してください。
29.3.4.2.1 バンドルの作成 - Rancher UI #
Edgeチームは、以下の手順で使用可能なrke2とk3s Kubernetesディストリビューションのすぐに使用できるバンドルを維持しています。
RancherのUIを通じてバンドルを作成するには、次の手順に従います。
左上隅で、[☰] → [Continuous Delivery (継続的デリバリ)]をクリックします。
[Advanced (詳細)]>[Bundles (バンドル)] に移動します。
[Create from YAML (YAMLから作成)]を選択します。
ここから次のいずれかの方法でバンドルを作成できます。
注記バンドルが配布する
SUC plan
にカスタム許容値を含める必要があるユースケースがある場合があります。以下の手順で生成されるバンドルには、必ずこれらの許容値を含めるようにします。suse-edge/fleet-examples
から[Create from YAML (YAMLから作成)]ページにRKE2またはK3sのバンドルコンテンツを手動でコピーする。目的のリリースタグからsuse-edge/fleet-examplesリポジトリのクローンを作成し、[Create from YAML (YAMLから作成)]ページの[Read from File (ファイルから読み取り)]オプションを選択する。そこから、必要なバンドルに移動します(RKE2の場合は
bundles/day2/system-upgrade-controller-plans/rke2-upgrade/plan-bundle.yaml
、K3sの場合はbundles/day2/system-upgrade-controller-plans/k3s-upgrade/plan-bundle.yaml
)。[Create from YAML (YAMLから作成)]ページにバンドルコンテンツが自動的に入力されます。
バンドル
のターゲットクラスタを次のように変更します。すべてのダウンストリームクラスタに一致させるには、デフォルトのバンドル
.spec.targets
を次のように変更します。spec: targets: - clusterSelector: {}
より細かくダウンストリームクラスタにマッピングするには、「Mapping to Downstream Clusters (ダウンストリームクラスタへのマップ)」を参照してください。
作成します
29.3.4.2.2 バンドルの作成 - 手動 #
バンドルリソースをプルします。
RKE2クラスタの場合:
curl -o rke2-plan-bundle.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/bundles/day2/system-upgrade-controller-plans/rke2-upgrade/plan-bundle.yaml
K3sクラスタの場合:
curl -o k3s-plan-bundle.yaml https://raw.githubusercontent.com/suse-edge/fleet-examples/refs/tags/release-3.1.2/bundles/day2/system-upgrade-controller-plans/k3s-upgrade/plan-bundle.yaml
バンドル
のターゲット設定を編集し、spec.targets
に目的のターゲットリストを指定します。デフォルトでは、suse-edge/fleet-examples
のバンドル
リソースは、どのダウンストリームクラスタにもマップ「されません」。すべてのクラスタに一致させるには、デフォルトの
バンドル
のターゲットを次のように変更します。spec: targets: - clusterSelector: {}
または、クラスタをより細かく選択したい場合は、「Mapping to Downstream Cluster (ダウンストリームクラスタへのマップ)」を参照してください
バンドルリソースを
管理クラスタ
に適用します。# For RKE2 kubectl apply -f rke2-plan-bundle.yaml # For K3s kubectl apply -f k3s-plan-bundle.yaml
fleet-default
ネームスペースで、作成したバンドルリソースを表示します。# For RKE2 kubectl get bundles rke2-upgrade -n fleet-default # For K3s kubectl get bundles k3s-upgrade -n fleet-default # Example output NAME BUNDLEDEPLOYMENTS-READY STATUS k3s-upgrade 0/0 rke2-upgrade 0/0
29.3.4.3 SUC Planのデプロイメント - サードパーティのGitOpsワークフロー #
ユーザがKubernetesアップグレードリソースを独自のサードパーティGitOpsワークフロー(Flux
など)に統合したいユースケースが存在する場合があります。
必要なアップグレードリソースを取得するには、まず、使用するsuse-edge/fleet-examplesリポジトリのEdgeリリースタグを特定します。
その後、次の場所でリソースを確認できます。
RKE2クラスタのアップグレードの場合:
control-plane
ノード用 -fleets/day2/system-upgrade-controller-plans/rke2-upgrade/plan-control-plane.yaml
ワーカー
ノードの場合 -fleets/day2/system-upgrade-controller-plans/rke2-upgrade/plan-worker.yaml
K3sクラスタのアップグレードの場合:
control-plane
ノード用 -fleets/day2/system-upgrade-controller-plans/k3s-upgrade/plan-control-plane.yaml
ワーカー
ノードの場合 -fleets/day2/system-upgrade-controller-plans/k3s-upgrade/plan-worker.yaml
これらのPlan
リソースは、system-upgrade-controller
によって解釈され、アップグレードする各ダウンストリームクラスタにデプロイする必要があります。system-upgrade-controller
をデプロイする方法については、19.2項 「System Upgrade Controllerのインストール」を参照してください。
GitOpsワークフローを使用してKubernetesバージョンアップグレード用のSUC
Planをデプロイする方法について理解を深めるには、Fleet
を使用した更新手順の概要(29.3.3.1項 「概要」)を確認すると役に立ちます。
29.4 Helmチャートのアップグレード #
以下の各セクションでは、Fleet
の機能を使用してHelmチャートの更新を実現する方法を中心に説明します。
サードパーティのGitOpsツールの使用が必要なユースケースの場合は、以下を参照してください。
EIBでデプロイされたHelmチャートのアップグレード
の場合 - 29.4.3.3.4項 「サードパーティのGitOpsツールを使用したHelmチャートのアップグレード」。EIB以外でデプロイされたHelmチャートのアップグレード
の場合 - リリースノート(45.1項 「要約」)ページから目的のEdgeリリースによってサポートされているチャートバージョンを取得し、サードパーティのGitOpsツールにチャートバージョンとURLを入力します。
29.4.1 コンポーネント #
この操作には、デフォルトのDay 2
コンポーネント(29.1.1項 「コンポーネント」)以外のカスタムコンポーネントは不要です。
29.4.2 エアギャップ環境の準備 #
29.4.2.1 HelmチャートのアップグレードFleetにアクセスできることの確認 #
環境でサポートする内容によって、次のオプションのいずれかを選択できます。
管理クラスタ
からアクセス可能なローカルGitサーバでチャートのFleetリソースをホストします。FleetのCLIを使用して直接使用可能で、どこかにホストする必要のないバンドルにHelmチャートを変換します。FleetのCLIは、リリースページから取得できます。Macユーザの場合は、 fleet-cli Homebrew Formulaeがあります。
29.4.2.2 Edgeリリースバージョンに必要なアセットの検索 #
Day 2リリースのページに移動し、チャートのアップグレード先のEdge 3.X.Yリリースを見つけ、[Assets (アセット)]をクリックします。
[Assets (アセット)]セクションから、次のファイルをダウンロードします。
リリースファイル
説明
edge-save-images.sh
edge-release-images.txt
ファイルで指定されたイメージを取得し、それらを「.tar.gz」アーカイブにパッケージ化します。edge-save-oci-artefacts.sh
特定のEdgeリリースに関連するOCIチャートイメージを取得し、それらを「.tar.gz」アーカイブにパッケージ化します。
edge-load-images.sh
「.tar.gz」アーカイブからイメージをロードし、再タグ付けして、プライベートレジストリにプッシュします。
edge-load-oci-artefacts.sh
Edge OCI「.tgz」チャートパッケージを含むディレクトリを取得し、それらをプライベートレジストリにロードします。
edge-release-helm-oci-artefacts.txt
特定のEdgeリリースに関連するOCIチャートイメージのリストを含みます。
edge-release-images.txt
特定のEdgeリリースに関連するイメージのリストを含みます。
29.4.2.3 Edgeリリースイメージアーカイブの作成 #
インターネットにアクセスできるマシンで次の手順を実行します。
edge-save-images.sh
を実行可能にします。chmod +x edge-save-images.sh
イメージアーカイブを生成します。
./edge-save-images.sh --source-registry registry.suse.com
これにより、
edge-images.tar.gz
という名前のすぐにロードできるアーカイブが作成されます。注記-i|--images
オプションが指定される場合、アーカイブの名前は異なる場合があります。このアーカイブをエアギャップマシンにコピーします。
scp edge-images.tar.gz <user>@<machine_ip>:/path
29.4.2.4 Edge OCIチャートイメージアーカイブの作成 #
インターネットにアクセスできるマシンで次の手順を実行します。
edge-save-oci-artefacts.sh
を実行可能にします。chmod +x edge-save-oci-artefacts.sh
OCIチャートイメージアーカイブを生成します。
./edge-save-oci-artefacts.sh --source-registry registry.suse.com
これにより、
oci-artefacts.tar.gz
という名前のアーカイブが作成されます。注記-a|--archive
オプションが指定される場合、アーカイブの名前は異なる場合があります。このアーカイブをエアギャップマシンにコピーします。
scp oci-artefacts.tar.gz <user>@<machine_ip>:/path
29.4.2.5 Edgeリリースイメージをエアギャップマシンにロード #
エアギャップマシンで次の手順を実行します。
プライベートレジストリにログインします(必要な場合)。
podman login <REGISTRY.YOURDOMAIN.COM:PORT>
edge-load-images.sh
を実行可能にします。chmod +x edge-load-images.sh
以前にコピーした
edge-images.tar.gz
アーカイブを渡して、スクリプトを実行します。./edge-load-images.sh --source-registry registry.suse.com --registry <REGISTRY.YOURDOMAIN.COM:PORT> --images edge-images.tar.gz
注記これにより、
edge-images.tar.gz
からすべてのイメージがロードされ、再タグ付けされて、それらを--registry
オプションで指定されているレジストリにプッシュします。
29.4.2.6 Edge OCIチャートイメージのエアギャップマシンへのロード #
エアギャップマシンで次の手順を実行します。
プライベートレジストリにログインします(必要な場合)。
podman login <REGISTRY.YOURDOMAIN.COM:PORT>
edge-load-oci-artefacts.sh
を実行可能にします。chmod +x edge-load-oci-artefacts.sh
コピーした
oci-artefacts.tar.gz
アーカイブをuntarします。tar -xvf oci-artefacts.tar.gz
命名テンプレート
edge-release-oci-tgz-<date>
を含むディレクトリが生成されます。このディレクトリを
edge-load-oci-artefacts.sh
スクリプトに渡し、Edge OCIチャートイメージをプライベートレジストリにロードします。./edge-load-oci-artefacts.sh --archive-directory edge-release-oci-tgz-<date> --registry <REGISTRY.YOURDOMAIN.COM:PORT> --source-registry registry.suse.com
29.4.2.7 Kubernetesディストリビューションのプライベートレジストリを指すレジストリミラーの作成 #
RKE2の場合は、「Containerd Registry Configuration (Containerdレジストリの設定)」を参照してください。
K3sの場合は、「埋め込みレジストリミラー」を参照してください。
29.4.3 アップグレード手順 #
このセクションでは、Helmアップグレード手順の次のユースケースを中心に説明します。
新しいクラスタがあり、SUSE Helmチャートをデプロイして管理したい(29.4.3.1項 「新しいクラスタがあり、SUSE Helmチャートをデプロイして管理したい場合」)
Fleetで管理されているHelmチャートをアップグレードしたい(29.4.3.2項 「Fleetで管理されているHelmチャートをアップグレードしたい場合」)
EIBでデプロイされたHelmチャートをアップグレードしたい(29.4.3.3項 「EIBでデプロイされたHelmチャートをアップグレードしたい」)
手動でデプロイしたHelmチャートを確実にアップグレードすることはできません。29.4.3.1項 「新しいクラスタがあり、SUSE Helmチャートをデプロイして管理したい場合」で説明する方法を使用してHelmチャートを再デプロイすることをお勧めします。
29.4.3.1 新しいクラスタがあり、SUSE Helmチャートをデプロイして管理したい場合 #
Fleetを使用してHelmチャートのライフサイクルを管理したいユーザが対象です。
このセクションでは、以下の実行方法について説明します。
Fleetリソースの準備(29.4.3.1.1項 「Fleetリソースの準備」)。
Fleetリソースのデプロイ(29.4.3.1.2項 「Fleetのデプロイ」)。
デプロイされたHelmチャートの管理(29.4.3.1.3項 「デプロイされたHelmチャートの管理」)。
29.4.3.1.1 Fleetリソースの準備 #
チャートのFleetリソースを、使用するEdgeリリースタグから取得します。
選択したEdgeリリースタグのリビジョンから、HelmチャートのFleet (
fleets/day2/chart-templates/<chart>
)に移動します。GitOpsワークフローを使用する場合は、チャートFleetディレクトリをGitOpsを実行するGitリポジトリにコピーします。
(任意) Helmチャートで値を設定する必要がある場合は、コピーしたディレクトリの
fleet.yaml
ファイルに含まれる設定.helm.values
を編集します。(任意) 環境に合わせて、チャートのFleetにリソースを追加しなければならないユースケースがあります。Fleetディレクトリを拡張する方法については、「Git Repository Contents (Gitリポジトリのコンテンツ)」を参照してください。
longhorn
Helmチャートの例は次のようになります。
ユーザGitリポジトリ構造:
<user_repository_root> ├── longhorn │ └── fleet.yaml └── longhorn-crd └── fleet.yaml
ユーザの
longhorn
データが入力されたfleet.yaml
の内容:defaultNamespace: longhorn-system helm: releaseName: "longhorn" chart: "longhorn" repo: "https://charts.rancher.io/" version: "104.2.2+up1.7.3" takeOwnership: true # custom chart value overrides values: # Example for user provided custom values content defaultSettings: deletingConfirmationFlag: true # https://fleet.rancher.io/bundle-diffs diff: comparePatches: - apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition name: engineimages.longhorn.io operations: - {"op":"remove", "path":"/status/conditions"} - {"op":"remove", "path":"/status/storedVersions"} - {"op":"remove", "path":"/status/acceptedNames"} - apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition name: nodes.longhorn.io operations: - {"op":"remove", "path":"/status/conditions"} - {"op":"remove", "path":"/status/storedVersions"} - {"op":"remove", "path":"/status/acceptedNames"} - apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition name: volumes.longhorn.io operations: - {"op":"remove", "path":"/status/conditions"} - {"op":"remove", "path":"/status/storedVersions"} - {"op":"remove", "path":"/status/acceptedNames"}
注記これらは値の例であり、
longhorn
チャートのカスタム設定を示すために使用しているだけです。longhorn
チャートのデプロイメントのガイドラインと「みなさない」でください。
29.4.3.1.2 Fleetのデプロイ #
環境がGitOpsワークフローの操作をサポートしている場合は、GitRepo (29.4.3.1.2.1項 「GitRepo」)またはバンドル(29.4.3.1.2.2項 「バンドル」)のいずれかを使用してチャートFleetをデプロイできます。
Fleetをデプロイする場合に、Modified
メッセージを取得した場合、Fleetのdiff
セクションに対応するcomparePatches
エントリを追加してください。詳細については、「Generating Diffs to Ignore
Modified GitRepos (変更されたGitReposを無視する差分を生成する) 」を参照してください。
29.4.3.1.2.1 GitRepo #
FleetのGitRepoリソースは、チャートのFleetリソースへのアクセス方法、それらのリソースを適用するのに必要なクラスタに関する情報を保持しています。
GitRepo
リソースは、 Rancher
UIを通じて、または手動で管理クラスタ
にリソースをデプロイすることで、デプロイできます。
手動デプロイメントのLonghorn
GitRepo
リソースの例
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: longhorn-git-repo
namespace: fleet-default
spec:
# If using a tag
# revision: <user_repository_tag>
#
# If using a branch
# branch: <user_repository_branch>
paths:
# As seen in the 'Prepare your Fleet resources' example
- longhorn
- longhorn-crd
repo: <user_repository_url>
targets:
# Match all clusters
- clusterSelector: {}
29.4.3.1.2.2 バンドル #
バンドルリソースは、Fleetによってデプロイされる必要がある生のKubernetesリソースを保持しています。通常、GitRepo
アプローチを使用することを推奨されますが、
環境がエアギャップされ、ローカルGitサーバをサポートできないユースケース用に、バンドル
がHelmチャートFleetをターゲットクラスタに伝播するのに役立ちます。
バンドル
は、Rancher UI (Continuous Delivery (継続的デリバリ)
→ Advanced (詳細) → Bundles (バンドル) → Create from YAML
(YALMから作成)
)を介して、またはバンドル
リソースを正しいネームスペースに手動でデプロイして、デプロイできます。Fleetネームスペースについては、アップストリームドキュメントを参照してください。
手動による アプローチを使用したLonghorn
バンドル
リソースデプロイメントの例:
fleets/day2/chart-templates/longhorn/longhorn
にあるLonghorn
チャートフリートに移動します。cd fleets/day2/chart-templates/longhorn/longhorn
HelmチャートをデプロイするクラスタをFleetに指示する
targets.yaml
ファイルを作成します。この場合、1台のダウストリームクラスにデプロイされます。複雑なターゲットをマッピングする方法については「Mapping to Downstream Clusters (ダウンストリームクラスタへのマッピング」を参照してください。cat > targets.yaml <<EOF targets: - clusterName: foo EOF
Longhorn
HelmチャートFleetをバンドルリソースに変換します。詳細については、「Convert a Helm Chart into a Bundle (Helmチャートのバンドルへの変換)」を参照してください。fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - longhorn-bundle > longhorn-bundle.yaml
fleets/day2/chart-templates/longhorn/longhorn-crd
にあるLonghorn CRD
チャートフリートに移動します。cd fleets/day2/chart-templates/longhorn/longhorn-crd
HelmチャートをデプロイするクラスタをFleetに指示する
targets.yaml
ファイルを作成します。この場合、1台のダウストリームクラスにデプロイされます。複雑なターゲットをマッピングする方法については「Mapping to Downstream Clusters (ダウンストリームクラスタへのマッピング」を参照してください。cat > targets.yaml <<EOF targets: - clusterName: foo EOF
Longhorn CRD
HelmチャートFleetをバンドルリソースに変換します。詳細については、「Convert a Helm Chart into a Bundle (Helmチャートのバンドルへの変換)」を参照してください。fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - longhorn-crd-bundle > longhorn-crd-bundle.yaml
longhorn-bundle.yaml
とlonghorn-crd-bundle.yaml
を管理クラスタ
にデプロイします。kubectl apply -f longhorn-crd-bundle.yaml kubectl apply -f longhorn-bundle.yaml
これらの手順に従うと、Longhorn
が指定されたターゲットクラスタのすべてにデプロイされます。
29.4.3.1.3 デプロイされたHelmチャートの管理 #
Fleetでデプロイした後のHelmチャートのアップグレードについては、29.4.3.2項 「Fleetで管理されているHelmチャートをアップグレードしたい場合」を参照してください。
29.4.3.2 Fleetで管理されているHelmチャートをアップグレードしたい場合 #
目的のEdgeリリースと互換性を持つように、チャートをアップブレードする必要があるバージョンを決定します。EdgeリリースごとのHelmチャートバージョンはリリースノート45.1項 「要約」)から表示できます。
Fleetで監視されているGitリポジトリで、Helmチャートの
fleet.yaml
ファイルを、リリースノート(45.1項 「要約」)から取得した正しいチャートバージョンとリポジトリで編集します。変更をコミットしてリポジトリにプッシュした後で、目的のHelmチャートのアップグレードがトリガされます。
29.4.3.3 EIBでデプロイされたHelmチャートをアップグレードしたい #
EIBは、HelmChart
リソースを作成し、 RKE2/K3s Helm
統合機能によって導入されたhelm-controller
を利用することで、Helmチャートをデプロイします。
EIBで導入されたHelmチャートが正常にアップグレードされるように、ユーザはEIBによってHelmチャート用に作成されたHelmChart
リソースに対してアップグレードを実行する必要があります。
以下に関する情報が提供されています。
EIBでデプロイされたHelmチャートアップグレードプロセスの一般的な概要(29.4.3.3.1項 「概要」)。
EIBでデプロイされたHelmチャートの正常なアップグレードに必要なアップグレード手順(29.4.3.3.2項 「アップグレード手順」)。
説明されていた方法を使用してLonghornチャートをアップグレードする方法を示す例(29.4.3.3.3項 「例」)。
異なるGitOpsツールでアップグレードプロセスを使用する方法(29.4.3.3.4項 「サードパーティのGitOpsツールを使用したHelmチャートのアップグレード」)。
29.4.3.3.1 概要 #
このセクションは、EIBによってデプロイされた1つまたは複数のHelmチャートをアップグレードするために実行する必要がある手順の概要を説明することを目的としています。Helmチャートのアップグレードに必要な手順の詳細な説明については、29.4.3.3.2項 「アップグレード手順」を参照してください。
このワークフローでは最初に、チャートのアップグレード先にする新しいHelmチャートアーカイブをユーザがプルします。
アーカイブは、
generate-chart-upgrade-data.sh
スクリプトによって処理されるディレクトリに配置される必要があります。次にユーザは、
generate-chart-upgrade-data.sh
スクリプトを実行します。これにより、提供されたアーカイブディレクトリの各Helmチャートアーカイブに対応するKubernetes Secret YAMLファイルが生成されます。これらのシークレットは、Helmチャートをアップグレードするために使用されるFleetに自動的に配置されます。これは、アップグレード手順(29.4.3.3.2項 「アップグレード手順」)セクションで詳細に説明されています。スクリプトが正常に終了したら、ユーザは必要なすべてのK8sリソースをターゲットクラスタに配布する
バンドル
またはGitRepo
リソースのいずれかの設定とデプロイメントを続行します。リソースは
fleet-default
ネームスペースの管理クラスタ
にデプロイされます。
Fleet (第6章 「Fleet」)はデプロイされたリソースを検出し、そのデータを解析して、そのリソースを指定されたターゲットクラスタにデプロイします。デプロイされる最も注目すべきリソースは次のとおりです。
eib-charts-upgrader
-チャートアップグレードPod
をデプロイするジョブ。eib-charts-upgrader-script
とhelm chart upgrade data
シークレットがチャートアップグレードPod
内にマウントされます。eib-charts-upgrader-script
- 既存のHelmChart
リソースにパッチを適用するために、チャートアップグレードPod
によって使用されるスクリプトを配布するシークレット。Helmチャートアップグレードデータ
シークレット - ユーザが提供するデータに基づいてgenerate-chart-upgrade-data.sh
スクリプトによって作成されたシークレットYAMLファイル。
チャートアップグレードPod
がデプロイされると、eib-charts-upgrader-script
シークレットのスクリプトが実行され、 以下が実行されます。他のシークレットによって提供されたすべてのHelmチャートアップグレードを処理します。
提供されたアップグレードデータのそれぞれに対して
HelmChart
リソースがあるかどうかを確認します。対応するHelmチャートのシークレットから提供されるデータで
HelmChart
リソースにパッチを適用します。
RKE2/K3s helm-controllerは絶えず既存の
HelmChart
リソースに対する編集を監視します。HelmChart
のパッチを検出し、変更を調整して、HelmChart
リソースの背後のチャートのアップグレードに進みます。
29.4.3.3.2 アップグレード手順 #
使用するEdge リリースタグからsuse-edge/fleet-examplesリポジトリのクローンを作成します。
取得したHelmチャートアーカイブを保存するディレクトリを作成します。
mkdir archives
新しく作成したアーカイブディレクトリ内で、アップグレードするHelmチャートアーカイブを取得します。
cd archives helm pull [chart URL | repo/chartname] # Alternatively if you want to pull a specific version: # helm pull [chart URL | repo/chartname] --version 0.0.0
目的のリリースタグから、
generate-chart-upgrade-data.sh
スクリプトをダウンロードします。generate-chart-upgrade-data.sh
スクリプトを実行します。重要ユーザは、
generate-chart-upgrade-data.sh
スクリプトが生成する内容に変更を加えてはなりません。chmod +x ./generate-chart-upgrade-data.sh ./generate-chart-upgrade-data.sh --archive-dir /foo/bar/archives/ --fleet-path /foo/bar/fleet-examples/fleets/day2/eib-charts-upgrader
スクリプトは次の論理を実行します。
ユーザは、
--fleet-path
を指定して、Helmチャートアップグレードを開始できる有効なFleetを指していることを検証します。ユーザが作成したアーカイブディレクトリ(例:
/foo/bar/archives/
)からのすべてHelmチャートアーカイブを処理します。Helmチャートアーカイブごとに、
Kubernetes Secret YAML
リソースが作成されます。このリソースには、以下が保持されます。パッチを適用する必要がある
HelmChart
リソースの名前
。HelmChart
リソースの新しいバージョン
。HelmChart
の現在実行中の設定を置き換えるために使用されるbase64
でエンコードされたHelmチャートアーカイブ。
各
Kubernetes Secret YAML
リソースは、--fleet-path
で指定されたeib-charts-upgrader
Fleetへのパス内のbase/secrets
ディレクトリに転送されます。さらに、
generate-chart-upgrade-data.sh
スクリプトは、移動したシークレットが確実に取得され、Helmチャートアップグレード論理で使用されるようにします。これは次のようにして行われます。新しく追加されたリソースを含むように
base/secrets/kustomization.yaml
ファイルを編集する。新しく追加されたシークレットをマウント設定に含むように
base/patches/job-patch.yaml
ファイルを編集する。
generate-chart-upgrade-data.sh
が正常に実行されたら、suse-edge/fleet-examples
リポジトリの次のディレクトリ内に変更が反映されているはずです。fleets/day2/eib-charts-upgrader/base/patches
fleets/day2/eib-charts-upgrader/base/secrets
以下の手順は、実行している環境によって異なります。
GitOpsをサポートする環境の場合(例: エアギャップされていない、エアギャップされたがローカルGitサーバーサポートが可能):
fleets/day2/eib-charts-upgrader
FleetをGitOpsに使用するリポジトリにコピーします。Fleetにgenerate-chart-upgrade-data.sh
スクリプトによって加えられた変更が含まれていることを確認します。eib-charts-upgrader
Fleetのすべてのリソースを配布するために使用されるGitRepo
リソースを設定します。Rancher UIを通じて
GitRepo
を設定およびデプロイする場合、「Accessing Fleet in the Rancher UI (Rancher UIでのFleetへのアクセス)」を参照してください。GitRepo
手動設定およびデプロイメントの場合、「Creating a Deployment (デプロイメントの作成)」を参照してください。
GitOpsをサポートしていない環境の場合 (例: エアギャップされ、ローカルGitサーバの使用が許可されていない):
rancher/fleet
リリースページからfleet-cli
バイナリをダウンロードします。Macユーザの場合、使用可能なHomebrew Formulaeがあります - fleet-cli。eib-charts-upgrader
Fleetに移動します。cd /foo/bar/fleet-examples/fleets/day2/eib-charts-upgrader
リソースをデプロイする場所をFleetに指示する
targets.yaml
ファイルを作成します。cat > targets.yaml <<EOF targets: - clusterSelector: {} # Change this with your target data EOF
ターゲットクラスタをマップする方法については、アップストリームドキュメントを参照してください。
fleet-cli
を使用して、Fleetをバンドル
リソースに変換します。fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - eib-charts-upgrade > bundle.yaml
これにより、
eib-charts-upgrader
Fleetからのすべてのテンプレート化されたリソースを保持するバンドル(bundle.yaml
)が作成されます。fleet apply
コマンドに関する詳細については、「fleet apply」を参照してください。Fleetをバンドルに変換する方法に関する詳細については、「 Convert a Helm Chart into a Bundle (Helmチャートのバンドルへの変換)」を参照してください。
バンドル
をデプロイします。これは2つの方法のいずれかで実行できます。RancherのUIを通じて - [Continuous Delivery (継続的デリバリ)]→[Advanced (詳細)]→[Bundles (バンドル)] → [Create from YAML (YAMLから作成)]に移動して、
bundle.yaml
コンテンツを解析するか、[Read from File (ファイルから読み取り)
]オプションをクリックして、ファイル自体を渡します。手動 -
管理クラスタ
内にbundle.yaml
ファイルを手動でデプロイします。
これらの手順を実行すると、正常にGitRepo/バンドル
リソースがデプロイされます。リソースはFleetによって取得され、そのコンテンツはユーザが以前の手順で指定したターゲットクラスタにデプロイされます。プロセスの概要については、「概要」(29.4.3.3.1項 「概要」)セクションを参照してください。
アップグレードプロセスを追跡する方法については、このドキュメントの「例」(29.4.3.3.3項 「例」)セクションを参照してください。
チャートアップグレードが正常に確認されたら、バンドル/GitRepo
リソースを削除します。
これにより、ダウンストリームクラスタから不要になったアップグレードリソースが削除され、今後バージョンクラッシュが発生しないようになります。
29.4.3.3.3 例 #
以下の例は、あるバージョンから別のバージョンにEIBでデプロイされたHelmチャートのアップグレード方法を示しています。この例のバージョンは、バージョン推奨事項として 「扱わない」でください。特定のEdgeリリースのバージョン推奨事項は、リリースノート(45.1項 「要約」)を参照してください。
ユースケース:
クラスタ名
doc-example
がRancherのLonghorn103.3.0+up1.6.1
バージョンを実行しています。クラスタは、次のイメージ定義スニペットを使用して、EIBを通じてデプロイされました。
kubernetes: helm: charts: - name: longhorn-crd repositoryName: rancher-charts targetNamespace: longhorn-system createNamespace: true version: 103.3.0+up1.6.1 - name: longhorn repositoryName: rancher-charts targetNamespace: longhorn-system createNamespace: true version: 103.3.0+up1.6.1 repositories: - name: rancher-charts url: https://charts.rancher.io/ ...
図 29.4: doc-exampleがインストールされたLonghornバージョン #Longhorn
は、 Edge 3.1リリースと互換性のあるバージョンにアップグレードする必要があります。つまり、104.2.2+up1.7.3
にアップグレードする必要があります。doc-example
クラスタの管理を担当する管理クラスタ
がローカルGitサーバのサポートなしでエアギャップされており、Rancherセットアップが動作していることを前提としています。
アップグレード手順(29.4.3.3.2項 「アップグレード手順」)に従います。
release-3.1.2
タグからsuse-edge/fleet-example
リポジトリのクローンを作成します。git clone -b release-3.1.2 https://github.com/suse-edge/fleet-examples.git
Longhorn
アップグレードアーカイブが保存されるディレクトリを作成します。mkdir archives
目的の
Longhorn
チャートアーカイブバージョンを取得します。# First add the Rancher Helm chart repository helm repo add rancher-charts https://charts.rancher.io/ # Pull the Longhorn 1.7.3 CRD archive helm pull rancher-charts/longhorn-crd --version 104.2.2+up1.7.3 # Pull the Longhorn 1.7.3 chart archive helm pull rancher-charts/longhorn --version 104.2.2+up1.7.3
archives
ディレクトリ以外で、release-3.1.2
リリースタグからgenerate-chart-upgrade-data.sh
スクリプトをダウンロードします。ディレクトリセットアップは次のようになるはずです。
. ├── archives | ├── longhorn-104.2.2+up1.7.3.tgz │ └── longhorn-crd-104.2.2+up1.7.3.tgz ├── fleet-examples ... │ ├── fleets │ │ ├── day2 | | | ├── ... │ │ │ ├── eib-charts-upgrader │ │ │ │ ├── base │ │ │ │ │ ├── job.yaml │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ ├── patches │ │ │ │ │ │ └── job-patch.yaml │ │ │ │ │ ├── rbac │ │ │ │ │ │ ├── cluster-role-binding.yaml │ │ │ │ │ │ ├── cluster-role.yaml │ │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ │ └── sa.yaml │ │ │ │ │ └── secrets │ │ │ │ │ ├── eib-charts-upgrader-script.yaml │ │ │ │ │ └── kustomization.yaml │ │ │ │ ├── fleet.yaml │ │ │ │ └── kustomization.yaml │ │ │ └── ... │ └── ... └── generate-chart-upgrade-data.sh
generate-chart-upgrade-data.sh
スクリプトを実行します。# First make the script executable chmod +x ./generate-chart-upgrade-data.sh # Then execute the script ./generate-chart-upgrade-data.sh --archive-dir ./archives --fleet-path ./fleet-examples/fleets/day2/eib-charts-upgrader
スクリプト実行後のディレクトリ構造は次のようになるはずです。
. ├── archives | ├── longhorn-104.2.2+up1.7.3.tgz │ └── longhorn-crd-104.2.2+up1.7.3.tgz ├── fleet-examples ... │ ├── fleets │ │ ├── day2 │ │ │ ├── ... │ │ │ ├── eib-charts-upgrader │ │ │ │ ├── base │ │ │ │ │ ├── job.yaml │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ ├── patches │ │ │ │ │ │ └── job-patch.yaml │ │ │ │ │ ├── rbac │ │ │ │ │ │ ├── cluster-role-binding.yaml │ │ │ │ │ │ ├── cluster-role.yaml │ │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ │ └── sa.yaml │ │ │ │ │ └── secrets │ │ │ │ │ ├── eib-charts-upgrader-script.yaml │ │ │ │ │ ├── kustomization.yaml │ │ │ │ │ ├── longhorn-104-2-0-up1-7-1.yaml <- secret created by the generate-chart-upgrade-data.sh script │ │ │ │ │ └── longhorn-crd-104-2-0-up1-7-1.yaml <- secret created by the generate-chart-upgrade-data.sh script │ │ │ │ ├── fleet.yaml │ │ │ │ └── kustomization.yaml │ │ │ └── ... │ └── ... └── generate-chart-upgrade-data.sh
Gitで変更されたファイルは次のようになるはずです。
図 29.5: generate-chart-upgrade-data.shによって作成されたfleet-examplesの変更 #管理クラスタ
がGitOpsワークフローをサポートしていないため、バンドル
はeib-charts-upgrader
Fleet用に作成される必要があります。まず、Fleet自体に移動します。
cd ./fleet-examples/fleets/day2/eib-charts-upgrader
次に、
doc-example
クラスタをターゲットとするtargets.yaml
ファイルを作成します。cat > targets.yaml <<EOF targets: - clusterName: doc-example EOF
次に、
fleet-cli
バイナリを使用して、Fleetをバンドルに変換します。fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - eib-charts-upgrade > bundle.yaml
ここで、
管理クラスタ
マシンにbundle.yaml
を転送します。
管理クラスタ
がRancher
を実行しているため、Rancher UIを通じてバンドルをデプロイします。図 29.6: Rancher UIを通じたバンドルのデプロイ #ここから、[Read from File (ファイルから読み取り)]を選択し、システムで
bundle.yaml
ファイルを見つけます。これにより、RancherのUI内に
バンドル
が自動入力されます。図 29.7: 自動入力されたバンドルスニペット #[Create (作成)]を選択します。
正常にデプロイされたら、バンドルは次のようになります。
図 29.8: 正常にデプロイされたバンドル #
バンドル
のデプロイメントが成功した後で、アップグレードプロセスを監視するには次のようにします。
まず、
アップグレードPod
のログを確認します。図 29.9: アップグレードポッドのログの表示 #ここで、helm-controllerによってアップグレードに作成されたPodのログを確認します。
Pod名は次のテンプレートを使用します -
helm-install-longhorn-<random-suffix>
Podは、
HelmChart
リソースがデプロイされたネームスペースにあります。この場合、これは、デフォルト
です。図 29.10: 正常にアップグレードされたLonghornチャートのログ #
HelmChartバージョンが上がっていることを確認します。
図 29.11: 上がったLonghornのバージョン #最後に、Longhorn Podが実行中であることを確認します。
図 29.12: instance-managerポッドの検証例 #
上記の検証後、Longhorn
Helmチャートが103.3.0+up1.6.1
から104.2.2+up1.7.3
にアップグレードされていると仮定しても問題ないでしょう。
29.4.3.3.4 サードパーティのGitOpsツールを使用したHelmチャートのアップグレード #
ユーザがこのアップグレード手順をFleet以外のGitOpsワークフロー(Flux
など)で実行したいユースケースが存在する場合があります。
アップグレード手順に必要なリソースを生成するには、generate-chart-upgrade-data.sh
スクリプトを使用して、ユーザが提供するデータをeib-charts-upgrader
Fleetに入力することができます。この実行方法の詳細については、アップグレード手順(29.4.3.3.2項 「アップグレード手順」)を参照してください。
完全なセットアップ後、kustomizeを使用して、クラスタにデプロイ可能な完全な動作ソリューションを生成することができます。
cd /foo/bar/fleets/day2/eib-charts-upgrader
kustomize build .
GitOpsワークフローにソリューションを含める場合は、fleet.yaml
ファイルを削除して、残ったものものを有効なKustomize
セットアップとして使用できます。まず、
generate-chart-upgrade-data.sh
スクリプトを実行し、アップグレードするHelmチャートのデータをKustomize
セットアップに読み込ませることを忘れないでください。
このワークフローの使用方法を理解するには、「概要」(29.4.3.3.1項 「概要」)セクションと「アップグレード手順」(29.4.3.3.2項 「アップグレード手順」)セクションを参照すると役立つでしょう。