この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

新しいクラスターへのSUSE Rancher Primeの移行

Rancherを新しいKubernetesクラスターに移行する場合、新しいクラスターに最初にRancherをインストールする必要はありません。Rancherがすでにインストールされた新しいクラスターに復元されると、問題が発生する可能性があります。

前提条件

これらの手順は、バックアップを作成し、Rancherがデプロイされる新しいKubernetesクラスターをすでにインストールしていることを前提としています。バックアップはRancherアプリケーションに特有であり、Rancherアプリケーションのみを移行できます。

元のクラスターでサーバーURLとして設定されたのと同じホスト名を使用する必要があります。そうしないと、ダウンストリームクラスターはUIのクラスター管理ページで利用できないと表示され、クラスター内やクラスターの*探索*ボタンをクリックできなくなります。

Rancherのバージョンはv2.5.0以上でなければなりません。

Rancherは、Amazon EKSクラスターなどのホスティングされたKubernetesクラスターを含む、任意のKubernetesクラスターにインストールできます。Kubernetesのインストールに関するヘルプについては、Kubernetesディストリビューションのドキュメントを参照してください。Rancherが作成したKubernetesディストリビューション、例えば RKEやhttps://documentation.suse.com/cloudnative/k3s/latest/en/installation/installation.html[K3s]なども使用できます。

Rancherは任意のKubernetesクラスターにインストールできるため、このバックアップと復元の方法を使用して、Rancherを1つのKubernetesクラスターから別のKubernetesクラスターに移行できます。この方法は_のみ_Rancher関連のリソースを移行し、クラスター上の他のアプリケーションには影響しません。どのKubernetesクラスタータイプとバージョンがあなたのRancherバージョンに対応しているかを特定するには、 サポートマトリックスを参照してください。

1.rancher-backup Helmチャートをインストールします。

rancher-backup chartをインストールします:

  1. Helmリポジトリを追加します:

    helm repo add rancher-charts https://charts.rancher.io
    helm repo update
  2. `CHART_VERSION`変数を設定し、あなたのRancherバージョンと互換性のある`rancher-backup`チャートバージョンを選択します。 サポートマトリックスを*Rancher Apps / Cluster Tools*セクション内で確認し、どの`rancher-backup`バージョンがサポートされているかを確認してください。

    CHART_VERSION=<chart-version>
  3. チャートをインストールします。

    helm install rancher-backup-crd rancher-charts/rancher-backup-crd -n cattle-resources-system --create-namespace --version $CHART_VERSION
    helm install rancher-backup rancher-charts/rancher-backup -n cattle-resources-system --version $CHART_VERSION

    上記は、Docker Hubへのアウトバウンド接続がある環境を前提としています。

    *エアギャップされた環境*の場合、rancher-backup Helmチャートをインストールする際に、プライベートレジストリから`backup-restore-operator`および`kubectl`イメージを取得するために、次のHelm値を使用してください。

    --set image.repository=<registry>/rancher/backup-restore-operator --set global.kubectl.repository=<registry>/rancher/kubectl

    Helmコマンドを実行しているホストが*エアギャップされた状態で、charts.rancher.ioにアクセスできない場合*、非エアギャップのホストでチャートをダウンロードし、エアギャップされたホストのローカルファイルからインストールしてください。

    非エアギャップされたホストで:

    helm repo add rancher-charts https://charts.rancher.io
    helm repo update
    helm fetch rancher-charts/rancher-backup-crd --version $CHART_VERSION
    helm fetch rancher-charts/rancher-backup --version $CHART_VERSION

    `rancher-backup-crd-<chart-version>.tgz`および`rancher-backup-<chart-version>.tgz`ファイルをエアギャップされたホストにコピーし、それらを使用してチャートをインストールします。

    helm install rancher-backup-crd ./rancher-backup-crd-<chart-version>.tgz -n cattle-resources-system --create-namespace
    helm install rancher-backup ./rancher-backup-<chart-version>.tgz -n cattle-resources-system --set image.repository=<registry>/rancher/backup-restore-operator --set global.kubectl.repository=<registry>/rancher/kubectl

2.バックアップから復元するには、Restoreカスタムリソースを使用します。

  1. 資格情報を必要とする復元のバックアップソースとしてS3オブジェクトストレージを使用する場合、このクラスターに`Secret`オブジェクトを作成してS3資格情報を追加します。シークレットデータには、S3資格情報を含む`accessKey`および`secretKey`の2つのキーが必要です。

    シークレットは任意のネームスペースで作成できます。この例ではデフォルトのネームスペースを使用しています。

    kubectl create secret generic s3-creds \
      --from-literal=accessKey=<access key> \
      --from-literal=secretKey=<secret key>

    上記のコマンドで`accessKey`および`secretKey`の値としてアクセスキーとシークレットキーを追加してください。

  2. `Restore`オブジェクトを作成します。

    移行中は、`prune`を`false`に設定する必要があります。以下の例をご参照ください:

    # restore-migration.yaml
    apiVersion: resources.cattle.io/v1
    kind: Restore
    metadata:
      name: restore-migration
    spec:
      backupFilename: backup-b0450532-cee1-4aa1-a881-f5f48a007b1c-2020-09-15T07-27-09Z.tar.gz
      // highlight-next-line
      prune: false
      // highlight-next-line
      encryptionConfigSecretName: encryptionconfig
      storageLocation:
        s3:
          credentialSecretName: s3-creds
          credentialSecretNamespace: default
          bucketName: backup-test
          folder: ecm1
          region: us-west-2
          endpoint: s3.us-west-2.amazonaws.com
    重要

    フィールド`encryptionConfigSecretName`は、バックアップが暗号化を有効にして作成された場合にのみ使用する必要があります。

    これが該当する場合、暗号化設定ファイルを含む`Secret`オブジェクトの名前を提供してください。暗号化設定ファイルのみがあり、このクラスターにシークレットが作成されていない場合は、次の手順でシークレットを作成してください。

    1. 暗号化設定ファイルを作成します。

    2. 以下のコマンドは、encryption-provider-config.yaml`というファイル名を使用し、--from-file`フラグを持っています。`EncryptionConfiguration`が`encryption-provider-config.yaml`という名前のファイルに保存されたら、以下を実行してください。

      kubectl create secret generic encryptionconfig \
        --from-file=./encryption-provider-config.yaml \
        -n cattle-resources-system
  3. マニフェストを適用し、復元ステータスを監視します:

    1. `Restore`オブジェクトリソースを適用します:

      kubectl apply -f restore-migration.yaml
    2. 復元ステータスを監視します:

      kubectl get restore
    3. 復元ログを監視します:

      kubectl logs -n cattle-resources-system --tail 100 -f -l app.kubernetes.io/instance=rancher-backup
    4. 復元リソースのステータスが`Completed`になったら、cert-managerとRancherのインストールを続行できます。

      Rancherを異なるKubernetesディストリビューション間で移行する際(例:K3sからRKE2へ)、ローカルクラスタを表すオブジェクトを修正して、Rancherが新しいディストリビューションを検出できるようにする必要があります。復元が完了した後、before新しいクラスタでRancherを立ち上げる前に、ローカルクラスタオブジェクトを編集します:

      kubectl edit clusters.management.cattle.io local
      1. `status.driver`の値を`imported`に変更します。

      2. `status.provider`を削除します。

      3. 全体の`status.version`マップを削除します。

      4. `metadata.labels`内のキー`provider.cattle.io`を持つラベルを削除します。

      5. `metadata.annotations`内のキー`management.cattle.io/current-cluster-controllers-version`を持つアノテーションを削除します。

      6. 存在する場合、全体の`spec.rke2Config`または`spec.k3sConfig`マップを削除します。

      7. 変更内容を保存します。

      `spec.rke2Config`または`spec.k3sConfig`を削除すると、ローカルクラスタのディストリビューション固有のアップグレード設定が消去されることに注意してください。新しいディストリビューションがローカルクラスタ用に設定可能であれば、再構成できます。

3.cert-managerをインストールします。

Kubernetesにcert-managerをインストールする際のドキュメントにある手順に従ってcert-managerをインストールします。

4.HelmでRancherを立ち上げます。

最初のクラスターで使用したのと同じバージョンのHelmを使用してRancherをインストールします。

helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --set hostname=<same hostname as the server URL from the first Rancher server> \
  --version x.y.z

元のRancher環境が実行中の場合、元の環境のkubeconfigを使用して現在の値を収集できます:

helm get values rancher -n cattle-system -o yaml > rancher-values.yaml

これらの値は、`rancher-values.yaml`ファイルを使用して再利用できます。新しいRancher環境にkubeconfigを切り替えることを忘れないでください。

helm install rancher rancher-prime/rancher -n cattle-system -f rancher-values.yaml --version x.y.z

5.新しいクラスターへのトラフィックをリダイレクトする

移行が完了したら、DNSレコードとロードバランサーを更新して、トラフィックが正しく移行されたクラスターにルーティングされるようにします。元のクラスターでサーバーURLとして設定されたのと同じホスト名を使用する必要があることを忘れないでください。

移行されたクラスターへのトラフィックをリダイレクトする方法に関する完全な手順は、特定の環境に基づいて異なります。詳細については、ホスティングプロバイダーのドキュメントを参照してください。

6.元のRancherインスタンスをスケールダウンする

新しいRancher環境にトラフィックをリダイレクトした後、元のRancherインスタンスを0レプリカにスケールダウンします

古いサーバーを稼働させておくと、エージェントが元の`server-url`に連絡し続ける可能性があり、これによりクラスターが新しい環境で*更新中*のままになることがあります。

kubectl scale deployment rancher -n cattle-system --replicas=0

元のRancher環境を稼働させ続けたい場合は、Rancher環境に接続されている各クラスターの`cattle-cluster-agent`ポッドを再起動することもできます。

kubectl rollout restart deployment cattle-cluster-agent -n cattle-system

これにより、エージェントのローリング再起動がトリガーされ、新しいRancher環境への接続が再確立されます。