documentation.suse.com / Documentação do SUSE Edge / Componentes / System Upgrade Controller

22 System Upgrade Controller

Consulte a documentação do System Upgrade Controller.

O System Upgrade Controller (SUC) tem como objetivo oferecer um controlador de upgrade nativo do Kubernetes genérico (para nós). Ele introduz uma nova CRD, o plano, para definir todas as suas políticas/requisitos de upgrade. O plano é uma intenção evidente de mudar nós no cluster.

22.1 Como o SUSE Edge usa o System Upgrade Controller?

O SUSE Edge usa o SUC para facilitar diversas operações de "dia 2" relacionadas a upgrades de versão de sistema operacional e Kubernetes em clusters de gerenciamento e downstream.

As operações de "dia 2" são definidas em planos do SUC. Com base nesses planos, o SUC implanta as cargas de trabalho em cada nó para executar a respectiva operação de "dia 2".

O SUC também é usado no Capítulo 23, Controller de upgrade. Para saber mais sobre as principais diferenças entre o SUC e o Controller de upgrade, consulte a Seção 23.2, “Comparação entre Controller de upgrade e System Upgrade Controller”.

22.2 Instalando o System Upgrade Controller

Importante
Importante

A partir do Rancher v2.10.0, o System Upgrade Controller é instalado automaticamente.

Siga as etapas abaixo apenas se o seu ambiente não é gerenciado pelo Rancher, ou se a versão do Rancher é inferior a v2.10.0.

Recomendamos a instalação do SUC pelo Fleet (Capítulo 8, Fleet), localizado no repositório suse-edge/fleet-examples.

Nota
Nota

Os recursos disponíveis no repositório suse-edge/fleet-examples sempre devem ser usados de uma versão válida de fleet-examples. Para determinar a versão que você precisa usar, consulte as Notas de lançamento (Seção 52.1, “Resumo”).

Se não for possível usar o Fleet para instalação do SUC, instale-o por meio do repositório de gráficos Helm do Rancher ou incorpore o gráfico Helm do Rancher ao seu próprio fluxo de trabalho do GitOps de terceiros.

Esta seção aborda o seguinte:

22.2.1 Instalação do System Upgrade Controller pelo Fleet

Com o Fleet, há dois recursos possíveis para serem usados na implantação do SUC:

22.2.1.1 Instalação do System Upgrade Controller – GitRepo

Nota
Nota

Também é possível realizar esse processo pela IU do Rancher, se disponível. Para obter mais informações, consulte Accessing Fleet in the Rancher UI (Acessando o Fleet na IU do Rancher).

Em seu cluster de gerenciamento:

  1. Determine os clusters em que deseja implantar o SUC. Para fazer isso, implante um recurso GitRepo do SUC no espaço de trabalho correto do Fleet em seu cluster de gerenciamento. Por padrão, o Fleet tem dois espaços de trabalho:

    • fleet-local: para recursos que precisam ser implantados no cluster de gerenciamento.

    • fleet-default: para recursos que precisam ser implantados em clusters downstream.

      Para obter mais informações sobre espaços de trabalho do Fleet, consulte a documentação upstream.

  2. Implante o recurso GitRepo :

    • Para implantar o SUC no cluster de gerenciamento:

      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 implantar o SUC em clusters downstream:

      Nota
      Nota

      Antes de implantar o recurso a seguir, você deve especificar uma configuração válida de targets, para que o Fleet saiba em quais clusters downstream implantar seu recurso. Para obter informações de como mapear para clusters downstream, consulte Mapping to Downstream Clusters (Mapeando para clusters downstream).

      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. Valide que o recurso GitRepo foi implantado:

    # 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. Valide a implantação do 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 Instalação do System Upgrade Controller – Bundle

Esta seção ilustra como criar e implantar um recurso Bundle de uma configuração padrão do Fleet usando fleet-cli.

  1. Em uma máquina com acesso à rede, faça download de fleet-cli:

    Nota
    Nota

    Garanta que a versão do fleet-cli do download seja a mesma do Fleet que foi implantado em seu cluster.

    • Para usuários do Mac, existe um Homebrew Formulae fleet-cli.

    • Para usuários do Linux e Windows, os binários estão presentes como ativos para cada versão do 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. Torne o fleet-cli executável:

    chmod +x fleet-cli
  3. Clone a versão do suse-edge/fleet-examples que deseja usar:

    git clone -b release-3.3.0 https://github.com/suse-edge/fleet-examples.git
  4. Navegue até a instância do Fleet do SUC, localizada no repositório fleet-examples:

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. Determine os clusters em que deseja implantar o SUC. Para fazer isso, implante o bundle do SUC no espaço de trabalho correto do Fleet em seu cluster de gerenciamento. Por padrão, o Fleet tem dois espaços de trabalho:

    • fleet-local: para recursos que precisam ser implantados no cluster de gerenciamento.

    • fleet-default: para recursos que precisam ser implantados em clusters downstream.

      Para obter mais informações sobre espaços de trabalho do Fleet, consulte a documentação upstream.

  6. Se você pretende implantar o SUC apenas em clusters downstream, crie um arquivo targets.yaml correspondente aos clusters específicos:

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

    Para obter informações sobre como mapear para clusters downstream, consulte Mapping to Downstream Clusters (Mapeando para clusters downstream).

  7. Avance para a criação do bundle :

    Nota
    Nota

    Certifique-se de que você não fez download de fleet-cli no diretório fleet-examples/fleets/day2/system-upgrade-controller; do contrário, ele será empacotado com o bundle, o que não é aconselhável.

    • Para implantar o SUC no cluster de gerenciamento, execute:

      fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
    • Para implantar o SUC em clusters downstream, execute:

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

      Para obter mais informações sobre esse processo, consulte Convert a Helm Chart into a Bundle (Converter um gráfico Helm em bundle).

      Para obter mais informações sobre o comando fleet-cli apply, consulte fleet apply.

  8. Transfira o bundle system-upgrade-controller-bundle.yaml para sua máquina do cluster de gerenciamento:

    scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>
  9. No cluster de gerenciamento, implante o bundle system-upgrade-controller-bundle.yaml:

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. No cluster de gerenciamento, valide se o bundle foi implantado:

    # 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. De acordo com o espaço de trabalho do Fleet em que você implantou o bundle, navegue até o cluster e valide a implantação do SUC:

    Nota
    Nota

    O SUC é sempre implantado no namespace 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 Instalação do System Upgrade Controller com o Helm

  1. Adicione o repositório de gráficos do Rancher:

    helm repo add rancher-charts https://charts.rancher.io/
  2. Implante o gráfico do 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

    Isto instalará a versão 0.15.2 do SUC, que é necessária para a plataforma Edge 3.3.1.

  3. Valide a implantação do 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 Monitorando os planos do System Upgrade Controller

É possível ver os planos do SUC destas maneiras:

Importante
Importante

Os pods implantados para os planos do SUC se mantêm ativos por 15 minutos após a execução bem-sucedida e, depois disso, são removidos pelo job correspondente que os criou. Para ter acesso aos registros do pod após esse período, habilite o registro em seu cluster. Para obter informações sobre como fazer isso no Rancher, consulte Rancher Integration with Logging Services (Integração do Rancher a serviços de registro).

22.3.1 Monitorando os planos do System Upgrade Controller – IU do Rancher

Para consultar os registros do pod referentes ao plano do SUC específico:

  1. No canto superior esquerdo, ☰ → <nome-do-seu-cluster>

  2. Selecione Workloads → Pods (Cargas de trabalho → Pods).

  3. Selecione o menu suspenso Only User Namespaces (Somente namespaces de usuário) e adicione o namespace cattle-system.

  4. Na barra de filtro Pod, escreva o nome do pod do plano do SUC, que terá este formato de gabarito: apply-<nome_do_plano>-on-<nome_do_nó>

    Nota
    Nota

    Pode haver pods tanto Completed (Concluídos) quanto Unknown (Desconhecidos) para um plano do SUC específico. Isso é esperado e acontece por causa da natureza de alguns upgrades.

  5. Selecione o pod dos quais deseja revisar os registros e navegue até ⋮ → View Logs (Ver registros).

22.3.2 Monitorando os planos do System Upgrade Controller – Manual

Nota
Nota

As etapas abaixo pressupõem que o kubectl foi configurado para conectar-se ao cluster em que os planos do SUC foram implantados.

  1. Liste os planos do SUC implantados:

    kubectl get plans -n cattle-system
  2. Obtenha o pod para o plano do SUC:

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

    Pode haver pods tanto Completed (Concluídos) quanto Unknown (Desconhecidos) para um plano do SUC específico. Isso é esperado e acontece por causa da natureza de alguns upgrades.

  3. Obtenha os registros do pod:

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