documentation.suse.com / SUSE Edgeドキュメント / 使用するコンポーネント / System Upgrade Controller

19 System Upgrade Controller

System Upgrade Controllerのドキュメントを参照してください。

System Upgrade Controller (SUC)は、汎用のKubernetesネイティブアップグレードコントローラー(ノード用)を提供することを目的としています。あらゆるアップグレードポリシー/要件を定義するための新しいCRDであるPlanが導入されています。Planは、クラスタ内のノードを変更する明確な意図です。

19.1 SUSE EdgeでSystem Upgrade Controllerを使用する方法

SUCは、管理クラスタ/ダウンストリームクラスタをあるEdgeプラットフォームバージョンから別のバージョンにアップグレードするために実行する必要があるさまざまなDay 2操作を支援するために使用されます。 Day 2操作は、 SUC Planの形式で定義されます。これらのプランに基づき、SUCは各ノードにワークロードをデプロイし、それぞれのDay 2操作を実行します。

19.2 System Upgrade Controllerのインストール

suse-edge/fleet-examplesリポジトリにあるFleet (第6章 「Fleet)を介してSUCをインストールすることをお勧めします。

注記
注記

suse-edge/fleet-examplesリポジトリで提供されるリソースは常に有効なfleet-examples releaseから使用される「必要があります」。使用する必要のあるリリースを確認するには、リリースノート(45.1項 「要約」)を参照してください。

SUCのインストールにFleet (第6章 「Fleet)を使用できない場合は、RancherのHelmチャートリポジトリを介してインストールするか、RancherのHelmチャートを独自のサードパーティGitOpsワークフローに組み込むことができます。

このセクションでは以下の内容を取り上げます。

19.2.1 System Upgrade Controller Fleetのインストール

Fleetを使用する場合は、SUCのデプロイに使用可能な2つのリソースがあります。

19.2.1.1 System Upgrade Controllerのインストール - GitRepo

注記
注記

このプロセスは、使用できる場合はRancher UIから実行することもできます。詳細については、「Rancher UIでのFleetへのアクセス」を参照してください。

管理クラスタで、次の操作を実行します。

  1. SUCをデプロイするクラスタを決定します。これは、 管理クラスタ内の適切なFleetワークスペースにSUC GitRepoをデプロイすることで実行されます。デフォルトでは、Fleetには2つのワークスペースがあります。

    • fleet-local - 管理クラスタにデプロイする必要があるリソース用。

    • fleet-default - ダウンストリームクラスタにデプロイする必要があるリソース用。

      Fleetワークスペースの詳細については、アップストリームドキュメントを参照してください。

  2. 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.1.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.1.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
  3. 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.1.0   1/1
  4. 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

19.2.1.2 System Upgrade Controllerのインストール - バンドル

このセクションは、fleet-cliを使用して標準のFleet設定からバンドルリソースを構築およびデプロイする方法について説明します。

  1. ネットワークにアクセスできるマシンで、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/<FLEET_VERSION>/fleet-linux-amd64
      • Linux ARM:

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-arm64
  2. fleet-cliを実行可能にします。

    chmod +x fleet-cli
  3. 使用するsuse-edge/fleet-examples リリースのクローンを作成します。

    git clone -b release-3.1.0 https://github.com/suse-edge/fleet-examples.git
  4. fleet-examplesリポジトリにある、SUC fleetに移動します。

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. SUCをデプロイするクラスタを決定します。これは、管理クラスタ内の適切なFleetワークスペースにSUCバンドルをデプロイすることで実行されます。デフォルトでは、Fleetには2つのワークスペースがあります。

    • fleet-local - 管理クラスタにデプロイする必要があるリソース用。

    • fleet-default - ダウンストリームクラスタにデプロイする必要があるリソース用。

      Fleetワークスペースの詳細については、アップストリームドキュメントを参照してください。

  6. ダウンストリームクラスタにのみSUCをデプロイする場合は、特定のクラスタに一致するtargets.yamlファイルを作成します。

    cat > targets.yaml <<EOF
    targets:
    - clusterSelector: CHANGEME
    EOF

    ダウンストリームクラスタへのマッピング方法については、「Mapping to Downstream Clusters (ダウンストリームクラスタへのマッピング)」を参照してください。

  7. バンドルの構築に進みます。

    注記
    注記

    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」を参照してください。

  8. system-upgrade-controller-bundle.yamlバンドルを管理クラスタマシンに転送します。

    scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>
  9. 管理クラスタに、system-upgrade-controller-bundle.yamlバンドルをデプロイします。

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. 管理クラスタで、バンドルがデプロイされていることを確認します。

    # 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
  11. バンドルをデプロイした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

19.2.2 System Upgrade Controller Helmのインストール

  1. Rancherチャートリポジトリを追加します。

    helm repo add rancher-charts https://charts.rancher.io/
  2. SUCチャートをデプロイします。

    helm install system-upgrade-controller rancher-charts/system-upgrade-controller --version 104.0.0+up0.7.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace

    これにより、Edge 3.1プラットフォームで必要なSUC 0.13.4バージョンがインストールされます。

  3. 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

19.3 System Upgrade Controller Planのモニタリング

SUC Planは次の方法で表示できます。

重要
重要

SUC Plan用にデプロイされたPodは正常実行後、15分間維持されます 。その後、作成元の対応するジョブによって削除されます。この時間後もPodのログにアクセスできるようにするには、クラスタのログ記録を有効にする必要があります。Rancherでこれを実行する方法については、「Rancher Integration with Logging Services (Rancherとログ記録サービスの統合)」を参照してください。

19.3.1 System Upgrade Controller Planのモニタリング - Rancher UI

特定のSUC PlanのPodのログを確認するには、次の手順を実行します。

  1. 左上隅で、☰ → <クラスタ名>を選択します。

  2. [Workloads (ワークロード)] → [Pods]を選択します。

  3. Only User Namespaces (ユーザネームスペースのみ)]ドロップダウンメニューを選択し、[cattle-system]ネームスペースを追加します。

  4. [Pods]フィルタバーにSUC Plan Podの名前を入力します。名前はapply-<plan_name>-on-<node_name>のテンプレート形式に従います。

    注記
    注記

    特定のSUC Planに対して[Completed (完了)] Podと[Unknown (不明)]Podの両方が存在する場合があります。これは予期されており、一部のアップグレードの性質により発生します。

  5. ログを確認するPodを選択し、⋮ → [View Logs (ログの表示)]に移動します。

19.3.2 System Upgrade Controller Planのモニタリング - 手動

注記
注記

以下の手順は、 kubectlが、SUC Planがデプロイされたクラスタに接続するように設定されていることを前提としています。

  1. デプロイしたSUC Planを一覧にします。

    kubectl get plans -n cattle-system
  2. SUC Plan用Podを入手します。

    kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-system
    注記
    注記

    特定のSUC Planに対して[Completed (完了)] Podと[Unknown (不明)]Podの両方が存在する場合があります。これは予期されており、一部のアップグレードの性質により発生します。

  3. Podのログを取得します。

    kubectl logs <pod_name> -n cattle-system
Documentation survey