|Index|SUSE Edge Documentação|Componentes|Upgrade Controller do Sistema
Applies to SUSE Edge 3.6

18 Upgrade Controller do Sistema

Consulte a documentação do Upgrade Controller do Sistema.

O Upgrade Controller do Sistema (SUC) visa fornecer um Upgrade Controller de uso geral, nativo do Kubernetes (para nós). Ele introduz um novo CRD, o Plano, para definir todas e quaisquer políticas e requisitos para fazer upgrade. Um Plano representa a intenção de modificar os nós do seu cluster.

18.1 Como o SUSE Edge usa o Upgrade Controller do Sistema?

O SUSE Edge usa o SUC para facilitar várias operações de "Dia 2" relacionadas a atualizações de versão do SO e do Kubernetes em clusters de gerenciamento e downstream.

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

O SUC também é usado dentro do Chapter 19, Upgrade Controller. Para saber mais sobre as principais diferenças entre o SUC e o Upgrade Controller, consulte Section 19.2, “Upgrade Controller vs System Upgrade Controller”.

18.2 Instalando o Upgrade Controller do Sistema

Important
Important

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

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

Recomendamos que você instale o SUC por meio do Fleet (Chapter 6, Fleet) localizado no repositório suse-edge/fleet-examples.

Note
Note

Os recursos oferecidos pelo repositório suse-edge/fleet-examples devem ser sempre usados a partir de uma versão do fleet-examples válida. Para determinar qual versão você precisa usar, consulte as Notas de Versão (Chapter 41, Notas de versão).

Se você não puder usar o Fleet para a instalação do SUC, poderá instalá-lo através do repositório de Helm charts do Rancher ou incorporar o Helm chart do Rancher em seu próprio fluxo de trabalho GitOps de terceiros.

Esta seção aborda:

18.2.1 Instalação do Upgrade Controller do Sistema via Fleet

Usando o Fleet, existem dois recursos possíveis que podem ser usados para implantar o SUC:

18.2.1.1 Instalação do Upgrade Controller - GitRepo

Note
Note

Este processo também pode ser feito através da interface do usuário do Rancher, caso esteja disponível. Para mais informações, consulte Acessar o Fleet na interface do usuário do Rancher.

No seu cluster de gerenciamento:

  1. Determine em quais clusters você deseja implantar o SUC. Isso é feito implantando um recurso GitRepo do SUC no workspace do Fleet correto em seu cluster de gerenciamento. Por padrão, o Fleet possui dois workspaces:

    • 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 os workspaces do Fleet, consulte a documentação upstream.

  2. Implante o recurso GitRepo:

    • Para implantar o SUC em seu 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.6.1
        paths:
        - fleets/day2/system-upgrade-controller
        repo: https://github.com/suse-edge/fleet-examples.git
      EOF
    • Para implantar o SUC em seus clusters downstream:

      Note
      Note

      Antes de implantar o recurso abaixo, você deve fornecer uma configuração targets válida, para que o Fleet saiba em quais clusters downstream implantar seu recurso. Para obter informações sobre como mapear para clusters downstream, consulte 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. Valide se o recurso GitRepo está 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.6.1   1/1
  4. Valide a implantação do Upgrade Controller do 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 Instalação do Upgrade Controller - Bundle

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

  1. Em uma máquina com acesso à rede, baixe o fleet-cli:

    Note
    Note

    Certifique-se de que a versão do fleet-cli que você baixar corresponda à versão do Fleet que foi implantada em seu cluster.

    • Para usuários de Mac, existe uma fleet-cli Homebrew Formulae.

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

    chmod +x fleet-cli
  3. Clone a suse-edge/fleet-examples release que você deseja usar:

    git clone -b release-3.6.1 https://github.com/suse-edge/fleet-examples.git
  4. Navegue até o fleet do SUC, localizado no repositório fleet-examples:

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. Determine em quais clusters você deseja implantar o SUC. Isso é feito implantando o SUC Bundle no workspace do Fleet correto dentro do seu cluster de gerenciamento. Por padrão, o Fleet possui dois workspaces:

    • 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 os workspaces do Fleet, consulte a documentação upstream.

  6. Se você pretende implantar o SUC apenas em clusters downstream, crie um arquivo targets.yaml que corresponda 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

  7. Prossiga para a construção do Bundle:

    Note
    Note

    Certifique-se de não baixar o fleet-cli no diretório fleet-examples/fleets/day2/system-upgrade-controller, caso contrário, ele será empacotado com o Bundle, o que não é recomendado.

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

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

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

      Para mais informações sobre este processo, consulte Convert a Helm Chart into a Bundle.

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

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

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

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. No seu cluster de gerenciamento, valide se o Bundle está 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. Com base no workspace do Fleet no qual você implantou seu Bundle, navegue até o cluster e valide a implantação do SUC:

    Note
    Note

    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

18.2.2 Instalação do Helm do Upgrade Controller do Sistema

  1. Adicione o repositório de charts do Rancher:

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

    Isso instalará a versão v0.19.1 do SUC, que é necessária pela plataforma Edge 3.6.

  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

18.3 Monitoramento de Planos do Upgrade Controller do Sistema

Os Planos SUC podem ser visualizados das seguintes maneiras:

Important
Important

Os Pods implantados para Planos SUC são mantidos ativos por 15 minutos após uma execução bem-sucedida. Após esse período, eles são removidos pelo Job correspondente que os criou. Para ter acesso aos logs do Pod após esse período, você deve habilitar o registro em log para seu cluster. Para obter informações sobre como fazer isso no Rancher, consulte Rancher Integration with Logging Services.

18.3.1 Monitoramento de Planos do Upgrade Controller do Sistema - Rancher UI

Para verificar os logs do Pod para o plano SUC específico:

  1. No canto superior esquerdo, ☰ → <your-cluster-name>

  2. Selecione Workloads → Pods

  3. Selecione o menu suspenso Only User Namespaces e adicione o namespace cattle-system

  4. Na barra de filtro de Pods, escreva o nome do Pod do seu Plano SUC. O nome estará no seguinte formato de modelo: apply-<plan_name>-on-<node_name>

    Note
    Note

    Podem existir Pods Completed e Unknown para um Plano SUC específico. Isso é esperado e acontece devido à natureza de algumas das atualizações.

  5. Selecione o pod cujos logs você deseja revisar e navegue até ⋮ → View Logs

18.3.2 Monitoramento de Planos do Upgrade Controller do Sistema - Manual

Note
Note

As etapas abaixo pressupõem que kubectl foi configurado para se conectar ao cluster onde os Planos SUC foram implantados.

  1. Liste os Planos SUC implantados:

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

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

    Podem existir tanto Completed Pods quanto Unknown para um Plano SUC específico. Isso é esperado e acontece devido à natureza de alguns dos upgrades.

  3. Obtenha os logs para o Pod:

    kubectl logs <pod_name> -n cattle-system