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

22 System Upgrade Controller

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

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

22.1 SUSE EdgeでのSystem Upgrade Controllerの用途

SUSE Edgeでは、SUCを使用して、管理クラスタとダウンストリームクラスタでのOSとKubernetesのバージョンアップグレードに関連するさまざまな「Day 2」操作を容易にします。

「Day 2」操作は、SUC Planによって定義されます。これらのプランに基づき、SUCは各ノードにワークロードをデプロイし、それぞれの「Day 2」操作を実行します。

SUCは、第23章 「Upgrade Controller内でも使用されます。SUCとUpgrade Controllerの主な違いに関する詳細については、 23.2項 「Upgrade ControllerとSystem Upgrade Controller」を参照してください。

22.2 System Upgrade Controllerのインストール

重要
重要

Rancher v2.10.0以降、System Upgrade Controllerは自動的にインストールされます。

ご使用の環境がRancherによって管理されていない場合、またはRancherのバージョンがv2.10.0より前の場合にのみ、以下の手順に従ってください。

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

注記
注記

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

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

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

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

Fleetを使用して、SUCをデプロイするために使用できるリソースは2つあります。

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

22.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/v0.12.2/fleet-linux-amd64
      • Linux ARM:

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

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

    git clone -b release-3.3.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

22.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 106.0.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace

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

  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

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

SUC Planは次の方法で確認できます。

重要
重要

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

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

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

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

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

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

  4. Podフィルタバーに、SUC Plan Podの名前を入力します。名前は次のテンプレート形式になります: apply-<plan_name>-on-<node_name>

    注記
    注記

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

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

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