SUSE Edgeドキュメント|Day 2操作|Edge 3.5のマイグレーション

35 Edge 3.5のマイグレーション

このセクションでは、管理クラスタとダウンストリームクラスタをEdge 3.4からEdge 3.5.0に移行する方法について説明します。

重要
重要

クラスタマイグレーションは常に、Edge 3.4最新のZ-streamリリースから実行してください。

常に、Edge 3.5.0リリースに移行してください。マイグレーション後のアップグレードについては、管理クラスタ(第36章 「管理クラスタ)およびダウンストリームクラスタ(第37章 「ダウンストリームクラスタ)のセクションを参照してください。

次の表は、クラスタのさまざまなタイプと、クラスタをアップグレードする方法をリストしています。

表 35.1: クラスタタイプと、ダウンストリームクラスタをアップグレードする方法
クラスタタイプ方式

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のアップグレード

注記
注記

第10章 「Metal3チャートのアップグレードが必要なCAPI/Metal3管理クラスタにのみ適用されます。

Metal3 Helmチャートには、Bare Metal Operator (BMO) CRDが含まれており、これはHelmのCRDディレクトリを活用することで提供されています。

ただし、このアプローチには特定の制限があり、特にHelmを使用してこのディレクトリ内のCRDをアップグレードできません。詳細については、Helmのドキュメントを参照してください。

そのため、Metal3Edge 3.5.0互換のバージョンにアップグレードする前に、ユーザは基盤となるBMO CRDを手動でアップグレードする必要があります。

Helmがインストールされ、kubectl管理 クラスタを指すように設定されているマシンで、次の手順を実行します。

  1. 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のドキュメントに記載されているいくつかの追加のマイグレーション手順に従う必要があります。

  1. まず、インストールされている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
  2. 次に、現在インストールされている特定のLonghornバージョン用のrancher/chartsリポジトリのクローンを作成します。これを行うには、まずこのスクリプトをダウンロードする必要があります。

    スクリプトは次のように実行されます。

    ./download-longhorn-crd-chart.sh 107.1.1+up1.9.2

    これでlonghorn-crdチャートがローカルディレクトリ./107.1.1+up1.9.2にダウンロードされます。

  3. ダウンロード後、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
  4. 次に、クローンされた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 lines
  5. CRDが正しくパッチ適用されたことを確認するには、元のテンプレートとパッチ適用後のテンプレートの差分をチェックし、helm.sh/resource-policyに対してkeep値が設定されていることを確認します。

    vim -d /tmp/crds.yaml.original 107.1.1+up1.9.2/templates/crds.yaml
  6. 次に、ローカルでパッチ適用したチャートを使用してlonghorn-crd Helmリリースをアップグレードします。

    helm upgrade longhorn-crd -n longhorn-system ./107.1.1+up1.9.2
  7. ここで、システムから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
  8. 以前と同じコマンド(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に関する追加のドキュメントについては、 こちらをご覧ください。

  9. CRDのすべてが準備されたら、Rancher Application Collectionにログインし、Helmチャートをプルできるようにします。

    helm registry login dp.apps.rancher.io -u ${APPS.RANCHER.IO_USERNAME} -p ${APPS.RANCHER.IO_ACCESS_TOKEN}
  10. 次に、コンテナイメージをプルできるように、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}"
  11. 最後に、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            Ready

35.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リリースに移行できるバージョンが実行されていることを確認する必要があります。

このためには:

  1. 以前の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.3
  2. Upgrade Controllerがデプロイされていない場合は、22.3項 「Upgrade Controllerのインストール」に従います。

35.1.2.2 マイグレーション手順

Upgrade Controllerを使用した管理クラスタのマイグレーションの実行は、アップグレードの実行と基本的に類似しています。

唯一の違いは、UpgradePlan3.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を使用した管理クラスタのマイグレーションの実行は、基本的にアップグレードの実行と類似しています。

主な違いは次のとおりです。

  1. フリートはsuse-edge/fleet-examplesリポジトリのrelease-3.5.0リリースから使用される必要があります

  2. アップグレードがスケジュールされているチャートは、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を使用したダウンストリームクラスタのマイグレーションの実行は、アップグレードの実行と基本的に類似しています。

主な違いは次のとおりです。

  1. フリートはsuse-edge/fleet-examplesリポジトリのrelease-3.5.0リリースから使用される必要があります

  2. アップグレードがスケジュールされているチャートは、Edge 3.5.0リリースと互換性のあるバージョンにアップグレードする 必要がありますEdge 3.5.0コンポーネントのリストについては、53.3項 「リリース3.5.0」を参照してください。

重要
重要

Edge 3.5.0へのマイグレーションを成功させるには、ユーザが上記の点に従うことが重要です。

上記の点を踏まえて、ユーザはマイグレーションの実行に必要な手順に関する包括的なガイドとして、 ダウンストリームクラスタFleet (37.1項 「Fleet」)のドキュメントに従うことができます。