documentation.suse.com / Documentación de SUSE Edge / Componentes / System Upgrade Controller

22 System Upgrade Controller

Consulte la documentación de System Upgrade Controller.

System Upgrade Controller (SUC) proporciona un controlador de actualización de uso general y nativo de Kubernetes (para nodos). Introduce una nueva CRD, llamada "plan", para definir todas sus políticas y requisitos de actualización. Un plan es una intención pendiente de mutar nodos en su clúster.

22.1 ¿Cómo se usa System Upgrade Controller en SUSE Edge?

SUSE Edge usa SUC para facilitar diversas operaciones de "día 2" relacionadas con las actualizaciones de la versión del sistema operativo y Kubernetes en los clústeres de gestión y descendentes.

Las operaciones de "día 2" se definen mediante planes de SUC. Según esos planes, SUC despliega las cargas de trabajo en cada nodo para ejecutar la operación correspondiente de "día 2".

SUC también se utiliza en Capítulo 23, Upgrade Controller. Para obtener más información sobre las diferencias clave entre SUC y Upgrade Controller, consulte la Sección 23.2, “Diferencias entre Upgrade Controller y System Upgrade Controller”.

22.2 Instalación de System Upgrade Controller

Importante
Importante

A partir de la versión 2.10.0 de Rancher, System Upgrade Controller se instala automáticamente.

Siga los pasos siguientes solo si su entorno no está gestionado por Rancher, o si su versión de Rancher es anterior a la 2.10.0.

Se recomienda instalar SUC mediante Fleet (Capítulo 8, Fleet), situado en el repositorio suse-edge/fleet-examples.

Nota
Nota

Los recursos ofrecidos por el repositorio suse-edge/fleet-examples deben utilizarse siempre desde una versión válida de fleet-examples. Para determinar qué versión debe utilizar, consulte las Notas de la versión (Sección 52.1, “Resumen”).

Si no puede utilizar Fleet para la instalación de SUC, puede instalarlo mediante el repositorio de charts de Helm de Rancher o incorporar el chart de Helm de Rancher en su propio flujo de trabajo de GitOps de terceros.

En esta sección se trata lo siguiente:

22.2.1 Instalación de System Upgrade Controller con Fleet

Hay dos posibles recursos que se pueden usar para desplegar SUC mediante Fleet:

22.2.1.1 Instalación de System Upgrade Controller - GitRepo

Nota
Nota

Este proceso también se puede realizar a través de la interfaz de usuario de Rancher, si está disponible. Para obtener más información, consulte Accessing Fleet in the Rancher UI (Acceso a Fleet en la interfaz de Rancher).

En el clúster de gestión:

  1. Determine en qué clústeres desea desplegar SUC. Para ello, despliegue un recurso GitRepo de SUC en el espacio de trabajo correcto de Fleet de su clúster de gestión. De forma predeterminada, Fleet tiene dos espacios de trabajo:

    • fleet-local: para recursos que deben desplegarse en el clúster de gestión.

    • fleet-default: para recursos que deben desplegarse en clústeres descendentes.

      Para obtener más información sobre los espacios de trabajo de Fleet, consulte la documentación original.

  2. Despliegue el recurso GitRepo:

    • Para desplegar SUC en el clúster de gestión:

      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
    • Para desplegar SUC en los clústeres descendentes:

      Nota
      Nota

      Antes de desplegar el recurso que se indica a continuación, debe proporcionar una configuración válida para targets, de modo que Fleet sepa en qué clústeres descendentes debe desplegar su recurso. Para obtener más información sobre cómo realizar la asignación a clústeres descendentes, consulte Mapping to Downstream Clusters (Asignación a clústeres descendentes).

      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. Compruebe que el recurso GitRepo se ha desplegado:

    # 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. Compruebe que System Upgrade Controller se ha desplegado:

    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 Instalación de System Upgrade Controller - Bundle

Esta sección muestra cómo crear y desplegar un recurso Bundle a partir de una configuración estándar de Fleet utilizando fleet-cli.

  1. En un equipo con acceso de red, descargue fleet-cli:

    Nota
    Nota

    Asegúrese de que la versión de fleet-cli que descargue coincida con la versión de Fleet que se ha desplegado en su clúster.

    • Para usuarios de Mac, hay una versión propia de fleet-cli.

    • Para usuarios de Linux y Windows, los binarios son recursos distintos para cada versión de 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. Permita que fleet-cli se pueda ejecutar:

    chmod +x fleet-cli
  3. Clone la versión de suse-edge/fleet-examples que desee usar:

    git clone -b release-3.3.0 https://github.com/suse-edge/fleet-examples.git
  4. Diríjase a la instancia de Fleet de SUC, situada en el repositorio fleet-examples:

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. Determine en qué clústeres desea desplegar SUC. Para ello, despliegue el Bundle de SUC en el espacio de trabajo correcto de Fleet dentro de su clúster de gestión. De forma predeterminada, Fleet tiene dos espacios de trabajo:

    • fleet-local: para recursos que deben desplegarse en el clúster de gestión.

    • fleet-default: para recursos que deben desplegarse en clústeres descendentes.

      Para obtener más información sobre los espacios de trabajo de Fleet, consulte la documentación original.

  6. Si tiene intención de desplegar SUC solo en clústeres descendentes, cree un archivo targets.yaml que coincida con los clústeres específicos:

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

    Para obtener información sobre cómo realizar la asignación a clústeres descendentes, consulte Mapping to Downstream Clusters (Asignación a clústeres descendentes).

  7. Cree el Bundle:

    Nota
    Nota

    Asegúrese de que no ha descargado fleet-cli en el directorio fleet-examples/fleets/day2/system-upgrade-controller, ya que, si fuera así, se empaquetaría con el Bundle, lo cual no es recomendable.

    • Para desplegar SUC en su clúster de gestión, ejecute:

      fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
    • Para desplegar SUC en sus clústeres descendentes, ejecute:

      fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml

      Para obtener más información sobre este proceso, consulte la sección Convert a Helm Chart into a Bundle (Conversión de un chart de Helm en un Bundle).

      Para obtener más información sobre el comando fleet-cli apply, consulte fleet apply.

  8. Transfiera el Bundle system-upgrade-controller-bundle.yaml al equipo del clúster de gestión:

    scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>
  9. En el clúster de gestión, despliegue el Bundle system-upgrade-controller-bundle.yaml:

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. En el clúster de gestión, compruebe que el Bundle está desplegado:

    # 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. Según el espacio de trabajo de Fleet en el que haya desplegado su Bundle, diríjase al clúster y compruebe que SUC se ha desplegado:

    Nota
    Nota

    SUC siempre se despliega en el espacio de nombres 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 Instalación de System Upgrade Controller con Helm

  1. Añada el repositorio de charts de Rancher:

    helm repo add rancher-charts https://charts.rancher.io/
  2. Despliegue el chart de 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

    Esto instalará la versión 0.15.2 de SUC, que es la que necesita la plataforma Edge 3.3.1.

  3. Compruebe que SUC se ha desplegado:

    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 Supervisión de planes de System Upgrade Controller

Los planes de SUC se pueden consultar de las siguientes maneras:

Importante
Importante

Los pods desplegados para los planes de SUC se mantienen activos 15 minutos tras una ejecución correcta. Después, son eliminados por el trabajo correspondiente que los creó. Para tener acceso a los registros del pod después de este periodo de tiempo, debe habilitar el registro para su clúster. Para obtener información sobre cómo hacerlo en Rancher, consulte Rancher Integration with Logging Services (Integración de Rancher con servicios de registro).

22.3.1 Supervisión de planes de System Upgrade Controller - Interfaz de usuario de Rancher

Para comprobar los registros del pod para el plan de SUC específico:

  1. En la esquina superior izquierda, ☰ → <nombre-de-su-clúster>.

  2. Seleccione Workloads → Pods (Cargas de trabajo > Pods).

  3. Seleccione el menú desplegable Only User Namespaces (Solo espacios de nombres de usuario) y añada el espacio de nombres cattle-system.

  4. En la barra de filtro Pod, escriba el nombre de su pod del plan de SUC. El nombre tendrá el siguiente formato: apply-<nombre_plan>-on-<nombre_nodo>.

    Nota
    Nota

    Puede haber pods con los estados Completed (Completado) y Unknown (Desconocido) para un plan de SUC específico. Esto está previsto debido a la naturaleza de algunas de las actualizaciones.

  5. Seleccione el pod cuyos registros desea revisar y vaya a ⋮ → View Logs (⋮ > Ver registros).

22.3.2 Supervisión de planes de System Upgrade Controller - Manual

Nota
Nota

Los pasos siguientes dan por supuesto que kubectl se ha configurado para conectarse al clúster en el que se han desplegado los planes de SUC.

  1. Muestre los planes de SUC desplegados:

    kubectl get plans -n cattle-system
  2. Obtenga el pod para el plan de SUC:

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

    Puede haber pods con los estados Completed (Completado) y Unknown (Desconocido) para un plan de SUC específico. Esto está previsto debido a la naturaleza de algunas de las actualizaciones.

  3. Obtenga los registros del pod:

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