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 #
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.
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:
Instalação do Fleet (Section 18.2.1, “Instalação do Upgrade Controller do Sistema via Fleet”)
Instalação do Helm (Section 18.2.2, “Instalação do Helm do Upgrade Controller do Sistema”)
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:
Recurso GitRepo - para casos de uso onde um servidor Git externo/local está disponível. Para instruções de instalação, consulte Instalação do Upgrade Controller - GitRepo (Section 18.2.1.1, “Instalação do Upgrade Controller - GitRepo”).
Recurso Bundle - para casos de uso air-gapped que não suportam uma opção de servidor Git local. Para instruções de instalação, consulte Instalação do Upgrade Controller - Bundle (Section 18.2.1.2, “Instalação do Upgrade Controller - Bundle”).
18.2.1.1 Instalação do Upgrade Controller - GitRepo #
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:
Determine em quais clusters você deseja implantar o SUC. Isso é feito implantando um recurso
GitRepodo 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.
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 EOFPara implantar o SUC em seus clusters downstream:
NoteAntes de implantar o recurso abaixo, você deve fornecer uma configuração
targetsvá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
Valide se o recurso
GitRepoestá 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/1Valide 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.
Em uma máquina com acesso à rede, baixe o
fleet-cli:NoteCertifique-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-amd64Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-arm64
Torne o
fleet-cliexecutável:chmod +x fleet-cliClone a
suse-edge/fleet-examplesrelease que você deseja usar:git clone -b release-3.6.1 https://github.com/suse-edge/fleet-examples.gitNavegue até o fleet do SUC, localizado no repositório
fleet-examples:cd fleet-examples/fleets/day2/system-upgrade-controllerDetermine 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.
Se você pretende implantar o SUC apenas em clusters downstream, crie um arquivo
targets.yamlque corresponda aos clusters específicos:cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOFPara obter informações sobre como mapear para clusters downstream, consulte Mapping to Downstream Clusters
Prossiga para a construção do Bundle:
NoteCertifique-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.yamlPara 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.yamlPara 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.
Transfira o Bundle
system-upgrade-controller-bundle.yamlpara a máquina do seu cluster de gerenciamento:scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>No seu cluster de gerenciamento, implante o Bundle
system-upgrade-controller-bundle.yaml:kubectl apply -f system-upgrade-controller-bundle.yamlNo 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/1Com base no workspace do Fleet no qual você implantou seu Bundle, navegue até o cluster e valide a implantação do SUC:
NoteO 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 #
Adicione o repositório de charts do Rancher:
helm repo add rancher-charts https://charts.rancher.io/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-namespaceIsso instalará a versão v0.19.1 do SUC, que é necessária pela plataforma Edge 3.6.
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:
Através da Rancher UI (Section 18.3.1, “Monitoramento de Planos do Upgrade Controller do Sistema - Rancher UI”).
Através de monitoramento manual (Section 18.3.2, “Monitoramento de Planos do Upgrade Controller do Sistema - Manual”) dentro do cluster.
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:
No canto superior esquerdo, ☰ → <your-cluster-name>
Selecione Workloads → Pods
Selecione o menu suspenso
Only User Namespacese adicione o namespacecattle-systemNa 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>NotePodem existir Pods
CompletedeUnknownpara um Plano SUC específico. Isso é esperado e acontece devido à natureza de algumas das atualizações.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 #
As etapas abaixo pressupõem que kubectl foi configurado para se conectar ao cluster onde os Planos SUC foram implantados.
Liste os Planos SUC implantados:
kubectl get plans -n cattle-systemObtenha o Pod para o plano SUC:
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-systemNotePodem existir tanto
CompletedPods quantoUnknownpara um Plano SUC específico. Isso é esperado e acontece devido à natureza de alguns dos upgrades.Obtenha os logs para o Pod:
kubectl logs <pod_name> -n cattle-system