Atualização via Helm
Este guia descreve o processo de atualização dos componentes do TDP Kubernetes utilizando o Helm CLI.
A atualização via Helm permite aplicar novas versões dos charts, atualizar configurações e garantir que o ambiente esteja sempre alinhado com as versões mais recentes.
- Preparo
- Atualização
- Validação
- Resolução de Problemas
Preparo da Atualização
Antes de iniciar qualquer atualização, execute as verificações abaixo para garantir um processo seguro.
- Comandos
- Vídeo
Verificar Versões Atuais
Liste todos os releases instalados no namespace para identificar as versões atuais:
helm list -n <namespace>

A saída exibirá nome do release, namespace, revisão, status, chart e versão da aplicação.
Verificar os pods e a prontidão dos workloads
Verifique se os workloads estão prontos no namespace de destino antes de prosseguir:
kubectl get pods -n <namespace>
kubectl get statefulset -n <namespace>


Se a aplicação utilizar Deployment, valide também:
kubectl get deploy -n <namespace>
O que validar:
- Os pods estão com
STATUSRunning - A coluna
READYdos pods está completa, por exemplo1/1 - Os StatefulSets ou Deployments da aplicação mostram todas as réplicas prontas, por exemplo
1/1,2/2ou3/3
Por que validar antes da atualização:
- Garantir que a aplicação já está estável antes da mudança
- Evitar confundir falha anterior com falha causada pela atualização
- Reduzir o risco de indisponibilidade durante o processo
Backup dos Valores Atuais
Exporte os valores atuais de cada release para possibilitar rollback em caso de falha:
helm get values <release> -n <namespace> -o yaml > <release>-values-backup.yaml
Repita este comando para cada release que será atualizado.
Backup dos Volumes Persistentes
Antes de qualquer atualização, realize backup dos dados persistentes. Em caso de falha grave, esses backups serão necessários para recuperação.
-
Identifique os PVCs do componente:
Terminal inputkubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>

-
Crie snapshots dos volumes persistentes (se o StorageClass suportar):
Terminal inputkubectl apply -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: <release>-snapshot
namespace: <namespace>
spec:
volumeSnapshotClassName: <snapshot-class>
source:
persistentVolumeClaimName: <pvc-name>
EOF -
Verifique o status do snapshot:
Terminal inputkubectl get volumesnapshot -n <namespace>
Atualização dos CRDs
Os CRDs devem ser atualizados antes dos demais componentes. São recursos de escopo global no cluster e não são geridos automaticamente pelo Helm durante o upgrade.
Atualize os CRDs do ArgoCD antes de qualquer outro componente:
helm upgrade tdp-argo-crds oci://registry.tecnisys.com.br/tdp/charts/tdp-argo-crds \
-n <namespace> \
-f values-argo-crds.yaml
Aguarde a conclusão e verifique se os CRDs foram atualizados:
kubectl get crds | grep argoproj.io
Vídeo em breve.
Atualização de Componentes
- Comandos
- Vídeo
Comando de Atualização
O comando padrão para atualizar um componente do TDP Kubernetes é:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml
Onde:
<release>: nome do release Helm (ex.:tdp-kafka,tdp-trino)<chart>: nome do chart no registry (ex.:tdp-kafka,tdp-trino)values.yaml: ficheiro com as configurações personalizadas do componente
Ordem de Atualização Recomendada
Antes de atualizar, consulte as Notas de Release do TDP para verificar compatibilidade entre versões de charts. Em caso de dúvida, entre em contato com o suporte Tecnisys.
Respeite a ordem abaixo para garantir que as dependências sejam atendidas:
-
CRDs e Infraestrutura
Terminal inputhelm upgrade tdp-argo-crds oci://registry.tecnisys.com.br/tdp/charts/tdp-argo-crds -n <namespace> -f values-argo-crds.yaml
helm upgrade tdp-argo oci://registry.tecnisys.com.br/tdp/charts/tdp-argo -n <namespace> -f values-argo.yaml -
Base de dados
Terminal inputhelm upgrade tdp-postgresql oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql -n <namespace> -f values-postgresql.yaml -
Mensageria
Terminal inputhelm upgrade tdp-kafka oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka -n <namespace> -f values-kafka.yaml -
Camada de Armazenamento e Metadados
Terminal inputhelm upgrade tdp-hive-metastore oci://registry.tecnisys.com.br/tdp/charts/tdp-hive-metastore -n <namespace> -f values-hive-metastore.yaml
helm upgrade tdp-iceberg oci://registry.tecnisys.com.br/tdp/charts/tdp-iceberg -n <namespace> -f values-iceberg.yaml
helm upgrade tdp-ozone oci://registry.tecnisys.com.br/tdp/charts/tdp-ozone -n <namespace> -f values-ozone.yaml
helm upgrade tdp-deltalake oci://registry.tecnisys.com.br/tdp/charts/tdp-deltalake -n <namespace> -f values-deltalake.yaml -
Segurança e Governança
Terminal inputhelm upgrade tdp-ranger oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger -n <namespace> -f values-ranger.yaml -
Processamento e Ingestão
Terminal inputhelm upgrade tdp-nifi oci://registry.tecnisys.com.br/tdp/charts/tdp-nifi -n <namespace> -f values-nifi.yaml
helm upgrade tdp-spark oci://registry.tecnisys.com.br/tdp/charts/tdp-spark -n <namespace> -f values-spark.yaml
helm upgrade tdp-trino oci://registry.tecnisys.com.br/tdp/charts/tdp-trino -n <namespace> -f values-trino.yaml
helm upgrade tdp-clickhouse oci://registry.tecnisys.com.br/tdp/charts/tdp-clickhouse -n <namespace> -f values-clickhouse.yaml -
Ferramentas e Interfaces
Terminal inputhelm upgrade tdp-airflow oci://registry.tecnisys.com.br/tdp/charts/tdp-airflow -n <namespace> -f values-airflow.yaml
helm upgrade tdp-jupyter oci://registry.tecnisys.com.br/tdp/charts/tdp-jupyter -n <namespace> -f values-jupyter.yaml
helm upgrade tdp-superset oci://registry.tecnisys.com.br/tdp/charts/tdp-superset -n <namespace> -f values-superset.yaml
helm upgrade tdp-openmetadata oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata -n <namespace> -f values-openmetadata.yaml
helm upgrade tdp-cloudbeaver oci://registry.tecnisys.com.br/tdp/charts/tdp-cloudbeaver -n <namespace> -f values-cloudbeaver.yaml
Atualização com Valores Personalizados
Para atualizar um componente aplicando valores adicionais, utilize --set em conjunto com o ficheiro de valores:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
--set replicaCount=3 \
--set resources.requests.memory=4Gi
Ou combine múltiplos ficheiros de valores:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
-f values-production.yaml
Quando múltiplos ficheiros de valores são fornecidos, o último ficheiro tem precedência sobre os anteriores.
Verificar a Versão Disponível
Antes de atualizar, verifique a versão mais recente disponível no registry:
helm show chart oci://registry.tecnisys.com.br/tdp/charts/<chart>
Para atualizar para uma versão específica:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
--version <versao-do-chart>
Compatibilidade de Versões
Ao atualizar componentes do TDP Kubernetes, observe:
- Atualizações incrementais: sempre atualize versão a versão sequencialmente. Pular versões intermediárias pode causar incompatibilidades.
- Dependências entre componentes: alguns componentes dependem de versões específicas de outros. Por exemplo, o
tdp-trinopode depender de uma versão mínima dotdp-hive-metastore. - Compatibilidade com Kubernetes: verifique se a versão do chart é compatível com a versão do seu cluster Kubernetes.
Vídeo em breve.
Validação Pós-Atualização
Após cada atualização, execute as validações abaixo.
- Comandos
- Vídeo
Verificar os pods e a prontidão dos workloads
kubectl get pods -n <namespace>
kubectl get statefulset -n <namespace>
Se a aplicação utilizar Deployment, valide também:
kubectl get deploy -n <namespace>
O que confirmar:
- Os pods estão com
STATUSRunning - A coluna
READYdos pods está completa, por exemplo1/1 - Os StatefulSets ou Deployments da aplicação mostram todas as réplicas prontas, por exemplo
1/1,2/2ou3/3
Verificar os Releases do Helm
helm list -n <namespace>

Todos os releases devem apresentar o status deployed.
Verificar os Serviços
kubectl get svc -n <namespace> -l app.kubernetes.io/instance=<release>

Verificar os Volumes Persistentes
kubectl get pvc -n <namespace>

Todos os Persistent Volume Claims devem apresentar o status Bound.
Verificar os Logs
Analise os logs do componente atualizado para identificar possíveis erros:
kubectl logs -n <namespace> -l app.kubernetes.io/instance=<release> --tail=100

Verificar a Revisão do Helm
Confirme que a revisão do release foi incrementada com sucesso:
helm history <release> -n <namespace>
Vídeo em breve.
Resolução de Problemas
- Comandos
- Vídeo
Identificar o Problema
Verifique o status do release:
helm status <release> -n <namespace>
Analise os eventos do Kubernetes para identificar a causa da falha:
kubectl describe pods -n <namespace> -l app.kubernetes.io/instance=<release>
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
Reverter a Atualização
Se necessário, realize o rollback para a versão anterior:
helm rollback <release> -n <namespace>
Consulte a página de Rollback para instruções detalhadas.
Forçar a Recriação dos Pods
Em alguns casos, pode ser necessário forçar a recriação dos pods para aplicar configurações corretamente:
kubectl rollout restart deployment/<nome-do-deployment> -n <namespace>
# ou para StatefulSets:
kubectl rollout restart statefulset/<nome-do-statefulset> -n <namespace>
Para encontrar o nome do Deployment ou StatefulSet:
kubectl get deployments,statefulsets -n <namespace> -l app.kubernetes.io/instance=<release>
O rollout restart reinicia os pods de forma controlada (rolling update). Para componentes sem réplicas configuradas, haverá breve indisponibilidade durante a reinicialização.
Desinstalar um Componente com Problema
Para desinstalar e reinstalar um componente específico:
helm uninstall <release> -n <namespace>
helm install <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml
A desinstalação de um release Helm não remove os Persistent Volume Claims (PVCs) associados. Para uma reinstalação limpa, exclua os PVCs manualmente antes de reinstalar:
kubectl delete pvc <pvc-name> -n <namespace>
Vídeo em breve.