35 Edge 3.5のマイグレーション #
このセクションでは、管理クラスタとダウンストリームクラスタをEdge
3.4からEdge 3.5.0に移行する方法について説明します。
クラスタマイグレーションは常に、Edge 3.4の
最新のZ-streamリリースから実行してください。
常に、Edge
3.5.0リリースに移行してください。マイグレーション後のアップグレードについては、管理クラスタ(第36章 「管理クラスタ」)およびダウンストリームクラスタ(第37章 「ダウンストリームクラスタ」)のセクションを参照してください。
次の表は、クラスタのさまざまなタイプと、クラスタをアップグレードする方法をリストしています。
| クラスタタイプ | 方式 |
|---|---|
EIBでプロビジョニングされたクラスタ | 詳細については、35.1.3項 「Fleet」を参照してください。 |
Metal3でプロビジョニングされたクラスタ | 詳細については、「ダウンストリームクラスタのアップグレード」(44.3項 「ダウンストリームクラスタのアップグレード」)を参照してください。 |
Phone-Homeでプロビジョニングされたクラスタ | Kubernetesバージョンのアップグレードについては「Upgrading the Kubernetes Version (Kubernetesバージョンのアップグレード)」、 SUC、オペレーティングシステム、その他のコンポーネントについては「ダウンストリームクラスタ」(第37章 「ダウンストリームクラスタ」)を参照してください。 |
35.1 管理クラスタ #
このセクションでは、次のトピックについて説明します。
35.1.1項 「前提条件」 - マイグレーションを開始する前に完了する必要がある前提条件の手順。
35.1.2項 「Upgrade Controller」 - 第22章 「Upgrade Controller」を使用して管理クラスタのマイグレーションを実行する方法。
35.1.3項 「Fleet」 - 第8章 「Fleet」を使用して管理クラスタのマイグレーションを実行する方法。
35.1.1 前提条件 #
35.1.1.1 Bare Metal Operator CRDのアップグレード #
Metal3 Helmチャートには、Bare Metal Operator
(BMO) CRDが含まれており、これはHelmのCRDディレクトリを活用することで提供されています。
ただし、このアプローチには特定の制限があり、特にHelmを使用してこのディレクトリ内のCRDをアップグレードできません。詳細については、Helmのドキュメントを参照してください。
そのため、Metal3をEdge
3.5.0互換のバージョンにアップグレードする前に、ユーザは基盤となるBMO CRDを手動でアップグレードする必要があります。
Helmがインストールされ、kubectlが管理
クラスタを指すように設定されているマシンで、次の手順を実行します。
BMO CRDを手動で適用します。
helm show crds oci://registry.suse.com/edge/charts/metal3 --version 305.0.21+up0.13.0 | kubectl apply -f -
35.1.1.2 SUSE Storageマイグレーションの準備 #
Edge 3.5.0にアップグレードする場合は、以前のLonghornチャートからSUSE
Application Collectionで管理されているSUSE Storageチャートに移行する必要があります 。
この手順は、Longhornチャートのアップグレードが必要な管理クラスタにのみ適用されます。
まず管理クラスタが、必要な1.9.2 SUSE Storageバージョンを含む最新の3.4 z-streamに更新されていることを確認する必要があります。
SUSE Storageチャートは個別のCRD Helmチャートを持たなくなり、1つにパッケージ化されるようになったため、SUSE Storageのドキュメントに記載されているいくつかの追加のマイグレーション手順に従う必要があります。
まず、インストールされているLonghorn CRDの現在のバージョンを確認します。
helm list --all-namespaces | grep longhorn-crd longhorn-crd longhorn-system 1 2026-01-16 02:17:16.7804359 +0000 UTC deployed longhorn-crd-107.1.1+up1.9.2 v1.9.2次に、現在インストールされている特定のLonghornバージョン用のrancher/chartsリポジトリのクローンを作成します。これを行うには、まずこのスクリプトをダウンロードする必要があります。
スクリプトは次のように実行されます。
./download-longhorn-crd-chart.sh 107.1.1+up1.9.2これでlonghorn-crdチャートがローカルディレクトリ
./107.1.1+up1.9.2にダウンロードされます。ダウンロード後、
Chart.yamlを開いてappVersionがv1.9.2であることを確認し、正しいバージョンであることをチェックします。cat 107.1.1+up1.9.2/Chart.yaml annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/hidden: "true" catalog.cattle.io/namespace: longhorn-system catalog.cattle.io/release-name: longhorn-crd apiVersion: v1 appVersion: v1.9.2 description: Installs the CRDs for longhorn. name: longhorn-crd version: 107.1.1+up1.9.2次に、クローンされた
longhorn-crdチャート内のtemplates/crds.yamlで、helm.sh/resource-policyアノテーションをkeep値にパッチ適用する必要があります。これにより、リリースのアンインストール時にHelmがCRDを削除しなくなります。この操作を行うには、次のスクリプトをダウンロードして、アノテーションを自動的にパッチ適用します。
./patch-resource-policy-annotation.sh 107.1.1+up1.9.2/templates/crds.yaml Processing CRDs in '107.1.1+up1.9.2/templates/crds.yaml'... Creating backup: '/tmp/crds.yaml.original' Successfully processed the file Original file backed up to: '/tmp/crds.yaml.original' Modified file saved as: '107.1.1+up1.9.2/templates/crds.yaml' Found 22 CustomResourceDefinition(s) Added 22 helm.sh/resource-policy: keep annotation(s) Original file: 4575 lines, Modified file: 4597 linesCRDが正しくパッチ適用されたことを確認するには、元のテンプレートとパッチ適用後のテンプレートの差分をチェックし、
helm.sh/resource-policyに対してkeep値が設定されていることを確認します。vim -d /tmp/crds.yaml.original 107.1.1+up1.9.2/templates/crds.yaml次に、ローカルでパッチ適用したチャートを使用してlonghorn-crd Helmリリースをアップグレードします。
helm upgrade longhorn-crd -n longhorn-system ./107.1.1+up1.9.2ここで、システムからlonghorn-crd Helmリリースをアンインストールします。適用されたパッチにより、CRDは残ります。
helm uninstall longhorn-crd --namespace longhorn-system These resources were kept due to the resource policy: [CustomResourceDefinition] backingimagedatasources.longhorn.io [CustomResourceDefinition] backingimagemanagers.longhorn.io [CustomResourceDefinition] nodes.longhorn.io [CustomResourceDefinition] orphans.longhorn.io [CustomResourceDefinition] recurringjobs.longhorn.io [CustomResourceDefinition] replicas.longhorn.io [CustomResourceDefinition] settings.longhorn.io [CustomResourceDefinition] sharemanagers.longhorn.io [CustomResourceDefinition] snapshots.longhorn.io [CustomResourceDefinition] supportbundles.longhorn.io [CustomResourceDefinition] systembackups.longhorn.io [CustomResourceDefinition] systemrestores.longhorn.io [CustomResourceDefinition] backingimages.longhorn.io [CustomResourceDefinition] volumeattachments.longhorn.io [CustomResourceDefinition] volumes.longhorn.io [CustomResourceDefinition] backupbackingimages.longhorn.io [CustomResourceDefinition] backups.longhorn.io [CustomResourceDefinition] backuptargets.longhorn.io [CustomResourceDefinition] backupvolumes.longhorn.io [CustomResourceDefinition] engineimages.longhorn.io [CustomResourceDefinition] engines.longhorn.io [CustomResourceDefinition] instancemanagers.longhorn.io release "longhorn-crd" uninstalled以前と同じコマンド(
helm list --all-namespaces | grep longhorn-crd)を再実行してlonghorn-crdチャートがアンインストールされていることを確認し、longhorn-crdが存在していないことを確認します。その後、既存のLonghorn CRDの所有権ラベルを更新して、SUSE Storage Helmチャートへのアップグレードを準備する必要があります。
次のスクリプトを適用して、置き換えを実行します。
./migrate-crd-ownership.sh # The output will look like the following for each CRD. The most important thing to note is that each operation says "Successfully updated CRD..." at the end: Processing CRD: volumes.longhorn.io Warning: resource customresourcedefinitions/volumes.longhorn.io is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically. customresourcedefinition.apiextensions.k8s.io/volumes.longhorn.io configured Successfully updated CRD: volumes.longhorn.io注記Rancher Application Collectionレジストリのログイン資格情報は、設定のアクセストークンセクションにあります (サインインする必要があります)。
さらに、Rancher Application Collectionに関する追加のドキュメントについては、 こちらをご覧ください。
CRDのすべてが準備されたら、Rancher Application Collectionにログインし、Helmチャートをプルできるようにします。
helm registry login dp.apps.rancher.io -u ${APPS.RANCHER.IO_USERNAME} -p ${APPS.RANCHER.IO_ACCESS_TOKEN}次に、コンテナイメージをプルできるように、docker-registryシークレットを作成します。
kubectl create secret docker-registry rancher-app-collection \ --namespace longhorn-system \ --docker-server=dp.apps.rancher.io \ --docker-username="${APPS.RANCHER.IO_USERNAME}" \ --docker-password="${APPS.RANCHER.IO_ACCESS_TOKEN}"最後に、LonghornインストールをSUSE Storageにアップグレードします。
helm upgrade longhorn oci://dp.apps.rancher.io/charts/suse-storage \ --namespace longhorn-system \ --version 1.10.1 \ --set privateRegistry.registrySecret=rancher-app-collection必要に応じて、アップグレードコマンドに
-f values.yamlを追加して、values.yamlファイルを提供できます。
35.1.1.3 Rancher Turtlesアップグレードの準備 #
Rancher Turtlesチャートのアップグレードが必要なCAPI/Metal3管理クラスタにのみ適用されます。
まず、管理クラスタが最新の3.4 z-streamに更新されていることを確認する必要があります。これには必要な0.24.3 Rancher Turtlesバージョンが含まれています。
Rancher 2.13以降では、Rancher Turtlesはデフォルトでインストールされるため、 Rancher Turtlesのドキュメントに記載されているいくつかの追加のマイグレーション手順に従う必要があります。
まず、インストール済みのCAPIProviderリソースを削除します。
kubectl delete capiprovider -A --all上記手順の完了を待った後で、インストール済みrancher-turtlesチャートとrancher-turtles-airgap-resourcesを削除します(インストールしている場合)。Edge
Image
Builderを介してインストールした場合は、対応するHelmChartリソースの削除が必要となります。
kubectl delete -n kube-system helmchart rancher-turtles
kubectl delete -n kube-system helmchart rancher-turtles-airgap-resources次に、Rancher Turtlesのドキュメントの記載に従って、CRDリソースにパッチを適用する必要があります。
kubectl patch crd capiproviders.turtles-capi.cattle.io --type=json -p='[{"op": "add", "path": "/metadata/annotations/meta.helm.sh~1release-namespace", "value": "cattle-turtles-system"}]'
kubectl patch crd clusterctlconfigs.turtles-capi.cattle.io --type=json -p='[{"op": "add", "path": "/metadata/annotations/meta.helm.sh~1release-namespace", "value": "cattle-turtles-system"}]'次に、通常の手順に従って、管理クラスタをEdge 3.5.0にアップグレードします。
35.1.1.4 Rancher Turtlesのアップグレード後 #
以下の手順に従ってEdge 3.5.0にアップグレードした後で、新しいrancher-turtles-providers
Helmチャートをインストールする必要があります。これにより、上記のアップグレード前の手順で削除したリソースを置き換える新しいCAPIProviderリソースが作成されます。
Upgrade
Controllerを介した将来の自動アップグレードを可能にするため、このチャートのインストールはHelmChartリソースを介して実行する必要があります。
helm pull oci://registry.suse.com/edge/charts/rancher-turtles-providers --version 305.0.4+up0.25.1
cat > turtles-providers-helmchart.yaml <<EOF
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
annotations:
edge.suse.com/repository-url: oci://registry.suse.com/edge/charts/rancher-turtles-providers
name: rancher-turtles-providers
namespace: kube-system
spec:
chartContent: $(base64 -w 0 rancher-turtles-providers-305.0.4+up0.25.1.tgz)
failurePolicy: reinstall
createNamespace: true
targetNamespace: cattle-turtles-system
version: 305.0.4+up0.25.1
EOF
kubectl apply -f turtles-providers-helmchart.yaml数分後、次のような出力が確認されるはずです。
kubectl get capiprovider -A
NAMESPACE NAME TYPE PROVIDERNAME INSTALLEDVERSION PHASE
capm3-system metal3 infrastructure metal3 v1.10.4 Ready
cattle-capi-system cluster-api core cluster-api v1.10.6 Ready
fleet-addon-system fleet addon rancher-fleet v0.12.0 Ready
metal3-ipam-system metal3ipam ipam metal3ipam v1.10.4 Ready
rke2-bootstrap-system rke2-bootstrap bootstrap rke2 v0.21.1 Ready
rke2-control-plane-system rke2-control-plane controlPlane rke2 v0.21.1 Ready35.1.2 Upgrade Controller #
Upgrade Controllerは現在、非エアギャップ管理クラスタに対してのみEdgeリリースのマイグレーションをサポートしています。
次のトピックは、このセクションの一部として説明します。
35.1.2.1項 「前提条件」 -
Upgrade Controllerに固有の前提条件。
35.1.2.2項 「マイグレーション手順」 -
Upgrade
Controllerを使用して、管理クラスタを新しいEdgeバージョンに移行するための手順。
35.1.2.1 前提条件 #
35.1.2.1.1 Edge 3.5 Upgrade Controller #
Upgrade
Controllerを使用する前に、まず目的のEdgeリリースに移行できるバージョンが実行されていることを確認する必要があります。
このためには:
以前のEdgeリリースから
Upgrade Controllerがすでにデプロイされている場合は、そのチャートをアップグレードします。helm upgrade upgrade-controller -n upgrade-controller-system oci://registry.suse.com/edge/charts/upgrade-controller --version 305.0.3+up0.1.3Upgrade Controllerがデプロイされていない場合は、22.3項 「Upgrade Controllerのインストール」に従います。
35.1.2.2 マイグレーション手順 #
Upgrade
Controllerを使用した管理クラスタのマイグレーションの実行は、アップグレードの実行と基本的に類似しています。
唯一の違いは、UpgradePlanが3.5.0リリースバージョンを指定する必要があることです。
apiVersion: lifecycle.suse.com/v1alpha1
kind: UpgradePlan
metadata:
name: upgrade-plan-mgmt
# Change to the namespace of your Upgrade Controller
namespace: CHANGE_ME
spec:
releaseVersion: 3.5.0上記のUpgradePlanを使用してマイグレーションを実行する方法については、Upgrade
Controllerのアップグレードプロセス(36.1項 「Upgrade Controller」)を参照してください。
35.1.3 Fleet #
可能な限り、マイグレーションには35.1.2項 「Upgrade Controller」を使用してください。
Upgrade
Controllerでカバーされていないユースケースの場合にのみ、このセクションを参照してください。
Fleetを使用した管理クラスタのマイグレーションの実行は、基本的にアップグレードの実行と類似しています。
主な違いは次のとおりです。
フリートは
suse-edge/fleet-examplesリポジトリのrelease-3.5.0リリースから使用される必要があります。アップグレードがスケジュールされているチャートは、
Edge 3.5.0リリースと互換性のあるバージョンにアップグレードする 必要があります。Edge 3.5.0コンポーネントのリストについては、53.3項 「リリース3.5.0」を参照してください。
Edge 3.5.0へのマイグレーションを成功させるには、ユーザが上記の点に従うことが重要です。
上記の点を踏まえて、ユーザはマイグレーションの実行に必要な手順に関する包括的なガイドとして、管理
クラスタFleet (36.2項 「Fleet」)のドキュメントに従うことができます。
35.2 ダウンストリームクラスタ #
35.2.1項 「Fleet」 - 第8章 「Fleet」を使用してダウンストリームクラスタのマイグレーションを実行する方法。
35.2.1 Fleet #
Fleetを使用したダウンストリームクラスタのマイグレーションの実行は、アップグレードの実行と基本的に類似しています。
主な違いは次のとおりです。
フリートは
suse-edge/fleet-examplesリポジトリのrelease-3.5.0リリースから使用される必要があります。アップグレードがスケジュールされているチャートは、
Edge 3.5.0リリースと互換性のあるバージョンにアップグレードする 必要があります。Edge 3.5.0コンポーネントのリストについては、53.3項 「リリース3.5.0」を参照してください。
Edge 3.5.0へのマイグレーションを成功させるには、ユーザが上記の点に従うことが重要です。
上記の点を踏まえて、ユーザはマイグレーションの実行に必要な手順に関する包括的なガイドとして、
ダウンストリームクラスタFleet (37.1項 「Fleet」)のドキュメントに従うことができます。