|Index|SUSE Edge Documentación|Componentes|Controlador de actualización del sistema
Applies to SUSE Edge 3.6

18 Controlador de actualización del sistema

Consultad la documentación del controlador de actualización del sistema.

El controlador de actualización del sistema (SUC) tiene como objetivo proporcionar un controlador de actualización de propósito general y nativo de Kubernetes (para nodos). Introduce una nueva CRD, el Plan, para definir todas y cada una de vuestras políticas/requisitos de actualización. Un Plan es una intención pendiente de mutar los nodos en vuestro clúster.

18.1 ¿Cómo utiliza SUSE Edge el controlador de actualización del sistema?

SUSE Edge utiliza SUC para facilitar diversas operaciones de "Día 2" relacionadas con las actualizaciones de la versión del SO y de Kubernetes en los clústeres de gestión y de sentido descendente.

Las operaciones de "Día 2" se definen a través de SUC Plans. Basándose en estos planes, SUC despliega cargas de trabajo en cada nodo para ejecutar la operación de "Día 2" correspondiente.

SUC también se utiliza dentro de Chapter 19, Controlador de actualización. Para obtener más información sobre las diferencias clave entre SUC y el controlador de actualización del sistema, véase Section 19.2, “Controlador de actualización frente a System Upgrade Controller”.

18.2 Instalación del controlador de actualización del sistema

Important
Important

A partir de Rancher v2.10.0, el System Upgrade Controller se instala automáticamente.

Seguid los pasos a continuación solo si vuestro entorno no está gestionado por Rancher, o si vuestra versión de Rancher es inferior a v2.10.0.

Recomendamos que instaléis SUC a través de Fleet (Chapter 6, Fleet) ubicado en el repositorio suse-edge/fleet-examples.

Note
Note

Los recursos ofrecidos por el repositorio suse-edge/fleet-examples deben utilizarse siempre desde una versión de fleet-examples válida. Para determinar qué versión necesitáis utilizar, consultad las Notas de la versión (Chapter 41, Notas de la versión).

Si no podéis utilizar Fleet para la instalación de SUC, podéis instalarlo a través del repositorio de charts de Helm de Rancher, o incorporar el chart de Helm de Rancher en vuestro propio flujo de trabajo GitOps de terceros.

Esta sección cubre:

18.2.1 Instalación de Fleet del controlador de actualización del sistema

Utilizando Fleet, hay dos recursos posibles que se pueden usar para desplegar SUC:

18.2.1.1 Instalación del controlador de actualización del sistema - GitRepo

Note
Note

Este proceso también puede realizarse a través de la interfaz de usuario de Rancher, si está disponible. Para obtener más información, consultad Acceso a Fleet en la interfaz de usuario de Rancher.

En vuestro clúster de gestión:

  1. Determinad en qué clústeres queréis desplegar SUC. Esto se hace desplegando un recurso GitRepo de SUC en el espacio de trabajo de Fleet correcto en vuestro clúster de gestión. Por defecto, Fleet tiene dos espacios de trabajo:

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

    • fleet-default - para recursos que deban desplegarse en clústeres sentido descendente.

      Para obtener más información sobre los espacios de trabajo de Fleet, consultad la documentación sentido ascendente.

  2. Despliega el recurso GitRepo:

    • Para desplegar SUC en vuestro 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.6.1
        paths:
        - fleets/day2/system-upgrade-controller
        repo: https://github.com/suse-edge/fleet-examples.git
      EOF
    • Para desplegar SUC en vuestros clústeres de sentido descendente:

      Note
      Note

      Antes de desplegar el recurso siguiente, debéis proporcionar una configuración targets válida, para que Fleet sepa en qué clústeres de sentido descendente desplegar vuestro recurso. Para obtener información sobre cómo realizar el mapeo a clústeres de sentido descendente, consultad 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.6.1
        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. Validad que el recurso GitRepo esté 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.6.1   1/1
  4. Validad el despliegue del controlador de actualización del sistema:

    kubectl get deployment system-upgrade-controller -n cattle-system
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    system-upgrade-controller   1/1     1            1           2m20s

18.2.1.2 Instalación del controlador de actualización del sistema - Bundle

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

  1. En una máquina con acceso a la red, descarga el fleet-cli:

    Note
    Note

    Aseguraos de que la versión de fleet-cli que descarguéis coincida con la versión de Fleet que se ha desplegado en vuestro clúster.

    • Para usuarios de Mac, existe una fleet-cli Homebrew Formulae.

    • Para usuarios de Linux y Windows, los binarios están presentes como assets en cada release de Fleet.

      • Linux AMD:

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-amd64
      • Linux ARM:

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-arm64
  2. Haced que fleet-cli sea ejecutable:

    chmod +x fleet-cli
  3. Clonad la suse-edge/fleet-examples release que deseéis utilizar:

    git clone -b release-3.6.1 https://github.com/suse-edge/fleet-examples.git
  4. Navegad al repositorio SUC fleet, ubicado en el fleet-examples:

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. Determinad en qué clústeres queréis desplegar SUC. Esto se hace desplegando el Bundle de SUC en el espacio de trabajo de Fleet correcto dentro de vuestro clúster de gestión. Por defecto, Fleet tiene dos espacios de trabajo:

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

    • fleet-default - para recursos que deban desplegarse en clústeres downstream.

      Para obtener más información sobre los espacios de trabajo de Fleet, consulta la documentación sentido ascendente.

  6. Si tenéis la intención de desplegar SUC solo en clústeres de sentido descendente, cread 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 el mapeo a clústeres de sentido descendente, consultad Mapping to Downstream Clusters

  7. Proceded a compilar el Bundle:

    Note
    Note

    Aseguraos de no descargar fleet-cli en el directorio fleet-examples/fleets/day2/system-upgrade-controller, de lo contrario se empaquetará con el Bundle, lo cual no es recomendable.

    • Para desplegar SUC en vuestro clúster de gestión, ejecutad:

      fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
    • Para desplegar SUC en vuestros clústeres de sentido descendente, ejecutad:

      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, consultad Convert a Helm Chart into a Bundle.

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

  8. Transferid el Bundle system-upgrade-controller-bundle.yaml a la máquina de vuestro clúster de gestión:

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

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. En vuestro clúster de gestión, validad 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 hayáis desplegado vuestro Bundle, navegad al clúster y validad el despliegue de SUC:

    Note
    Note

    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

18.2.2 Instalación de Helm del controlador de actualización del sistema

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

    helm repo add rancher-charts https://charts.rancher.io/
  2. Desplegad el chart de SUC:

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

    Esto instalará la versión v0.19.1 de SUC, necesaria para la plataforma Edge 3.6.

  3. Validad el despliegue de 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

18.3 Monitorización de los planes del controlador de actualización del sistema

Los planes SUC pueden visualizarse de las siguientes formas:

Important
Important

Los Pods desplegados para los planes SUC se mantienen activos 15 minutos después de una ejecución correcta. Después de eso, son eliminados por el Job correspondiente que los creó. Para tener acceso a los registros del Pod después de este periodo de tiempo, debéis habilitar el registro para vuestro clúster. Para obtener información sobre cómo hacerlo en Rancher, consultad Rancher Integration with Logging Services.

18.3.1 Monitorización de los planes del controlador de actualización del sistema - Interfaz de usuario de Rancher

Para consultar los registros de Pod de un plan SUC específico:

  1. En la esquina superior izquierda, ☰ → <your-cluster-name>

  2. Seleccionad Workloads → Pods

  3. Seleccionad el menú desplegable Only User Namespaces y añadid el espacio de nombres cattle-system

  4. En la barra de filtro de Pods, escribid el nombre de vuestro Pod del plan SUC. El nombre seguirá el siguiente formato de plantilla: apply-<plan_name>-on-<node_name>

    Note
    Note

    Puede haber Pods Completed y Unknown para un plan SUC específico. Esto es normal y ocurre debido a la naturaleza de algunas de las actualizaciones.

  5. Seleccionad el pod cuyos registros queréis revisar y navegad a ⋮ → View Logs

18.3.2 Planes del Upgrade Controller del sistema de monitorización - Manual

Note
Note

Los siguientes pasos asumen que kubectl se ha configurado para conectarse al clúster donde se han desplegado los SUC Plans.

  1. Listar los planes SUC desplegados:

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

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

    Puede haber ambos pods Completed y Unknown para un plan SUC específico. Esto es normal y ocurre debido a la naturaleza de algunas de las actualizaciones.

  3. Obtener los registros del pod:

    kubectl logs <pod_name> -n cattle-system