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 #
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.
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:
Instalação do Fleet (Seção 22.2.1, “Instalação do System Upgrade Controller pelo Fleet”)
Instalação do Helm (Seção 22.2.2, “Instalação do System Upgrade Controller com o Helm”)
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:
GitRepo: para casos de uso em que um servidor Git externo/local está disponível. Para obter instruções de instalação, consulte Instalação do System Upgrade Controller – GitRepo (Seção 22.2.1.1, “Instalação do System Upgrade Controller – GitRepo”).
Bundle: para casos de uso air-gapped que não oferecem suporte à opção de servidor Git local. Para obter instruções de instalação, consulte Instalação do System Upgrade Controller – Bundle (Seção 22.2.1.2, “Instalação do System Upgrade Controller – Bundle”).
22.2.1.1 Instalação do System Upgrade Controller – GitRepo #
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:
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.
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:
NotaAntes 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
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
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.
Em uma máquina com acesso à rede, faça download de
fleet-cli
:NotaGaranta 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
Torne o
fleet-cli
executável:chmod +x fleet-cli
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
Navegue até a instância do Fleet do SUC, localizada no repositório
fleet-examples
:cd fleet-examples/fleets/day2/system-upgrade-controller
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.
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).
Avance para a criação do bundle :
NotaCertifique-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.
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>
No cluster de gerenciamento, implante o bundle
system-upgrade-controller-bundle.yaml
:kubectl apply -f system-upgrade-controller-bundle.yaml
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
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:
NotaO 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 #
Adicione o repositório de gráficos do Rancher:
helm repo add rancher-charts https://charts.rancher.io/
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.
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:
Pela IU do Rancher (Seção 22.3.1, “Monitorando os planos do System Upgrade Controller – IU do Rancher”).
Por monitoramento manual (Seção 22.3.2, “Monitorando os planos do System Upgrade Controller – Manual”) dentro do cluster.
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:
No canto superior esquerdo, ☰ → <nome-do-seu-cluster>
Selecione Workloads → Pods (Cargas de trabalho → Pods).
Selecione o menu suspenso
Only User Namespaces
(Somente namespaces de usuário) e adicione o namespacecattle-system
.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ó>
NotaPode haver pods tanto
Completed
(Concluídos) quantoUnknown
(Desconhecidos) para um plano do SUC específico. Isso é esperado e acontece por causa da natureza de alguns upgrades.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 #
As etapas abaixo pressupõem que o kubectl
foi configurado
para conectar-se ao cluster em que os planos do
SUC foram implantados.
Liste os planos do SUC implantados:
kubectl get plans -n cattle-system
Obtenha o pod para o plano do SUC:
kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-system
NotaPode haver pods tanto
Completed
(Concluídos) quantoUnknown
(Desconhecidos) para um plano do SUC específico. Isso é esperado e acontece por causa da natureza de alguns upgrades.Obtenha os registros do pod:
kubectl logs <pod_name> -n cattle-system