Upgrade via Helm
This guide describes how to upgrade TDP Kubernetes components using the Helm CLI.
Upgrading with Helm lets you apply new chart versions, update settings, and keep the environment aligned with the latest releases.
- Preparation
- Upgrade
- Validation
- Troubleshooting
Upgrade preparation
Before you start any upgrade, run the checks below for a safe process.
- Commands
- Video
Check current versions
List all releases installed in the namespace to see the current versions:
helm list -n <namespace>

The output shows the release name, namespace, revision, status, chart, and application version.
Check pods and workload readiness
Confirm workloads are ready in the target namespace before you continue:
kubectl get pods -n <namespace>
kubectl get statefulset -n <namespace>


If the app uses a Deployment, validate that as well:
kubectl get deploy -n <namespace>
What to validate:
- Pods show
STATUSRunning - The pods
READYcolumn is complete, for example1/1 - StatefulSets or Deployments show all replicas ready, for example
1/1,2/2, or3/3
Why validate before upgrading:
- Ensure the application is already stable before the change
- Avoid confusing an existing failure with one caused by the upgrade
- Reduce the risk of downtime during the process
Back up current values
Export the current values for each release so you can roll back if something fails:
helm get values <release> -n <namespace> -o yaml > <release>-values-backup.yaml
Repeat this command for every release you will upgrade.
Back up persistent volumes
Before any upgrade, back up persistent data. If a serious failure occurs, you will need those backups to recover.
-
Identify the component PVCs:
Terminal inputkubectl get pvc -n <namespace> -l app.kubernetes.io/instance=<release>

-
Create persistent volume snapshots (if the StorageClass supports it):
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 -
Check snapshot status:
Terminal inputkubectl get volumesnapshot -n <namespace>
Upgrade CRDs
CRDs must be upgraded before the other components. They are cluster-scoped resources and are not managed automatically by Helm during upgrade.
Upgrade Argo CD CRDs before any other component:
helm upgrade tdp-argo-crds oci://registry.tecnisys.com.br/tdp/charts/tdp-argo-crds \
-n <namespace> \
-f values-argo-crds.yaml
Wait for it to finish and verify the CRDs were updated:
kubectl get crds | grep argoproj.io
Video coming soon.
Upgrading components
- Commands
- Video
Upgrade command
The standard command to upgrade a TDP Kubernetes component is:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml
Where:
<release>: Helm release name (e.g.tdp-kafka,tdp-trino)<chart>: chart name in the registry (e.g.tdp-kafka,tdp-trino)values.yaml: file with customized settings for the component
Recommended upgrade order
Before upgrading, read the TDP release notes to confirm chart version compatibility. If in doubt, contact Tecnisys support.
Follow the order below so dependencies are satisfied:
-
CRDs and infrastructure
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 -
Database
Terminal inputhelm upgrade tdp-postgresql oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql -n <namespace> -f values-postgresql.yaml -
Messaging
Terminal inputhelm upgrade tdp-kafka oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka -n <namespace> -f values-kafka.yaml -
Storage and metadata layer
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 -
Security and governance
Terminal inputhelm upgrade tdp-ranger oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger -n <namespace> -f values-ranger.yaml -
Processing and ingestion
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 -
Tools and 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
Upgrade with custom values
To upgrade a component with extra values, use --set together with the values file:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
--set replicaCount=3 \
--set resources.requests.memory=4Gi
Or combine multiple values files:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
-f values-production.yaml
When several values files are passed, the last file wins over the previous ones.
Check the available chart version
Before upgrading, check the latest chart version available in the registry:
helm show chart oci://registry.tecnisys.com.br/tdp/charts/<chart>
To upgrade to a specific chart version:
helm upgrade <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml \
--version <chart-version>
Version compatibility
When upgrading TDP Kubernetes components, keep in mind:
- Incremental upgrades: always move from version to version in order. Skipping intermediate versions can break compatibility.
- Cross-component dependencies: some components need specific versions of others. For example,
tdp-trinomay require a minimumtdp-hive-metastoreversion. - Kubernetes compatibility: confirm the chart version matches your cluster Kubernetes version.
Video coming soon.
Post-upgrade validation
After each upgrade, run the checks below.
- Commands
- Video
Check pods and workload readiness
kubectl get pods -n <namespace>
kubectl get statefulset -n <namespace>
If the app uses a Deployment, validate that as well:
kubectl get deploy -n <namespace>
What to confirm:
- Pods show
STATUSRunning - The pods
READYcolumn is complete, for example1/1 - StatefulSets or Deployments show all replicas ready, for example
1/1,2/2, or3/3
Check Helm releases
helm list -n <namespace>

All releases should show status deployed.
Check Services
kubectl get svc -n <namespace> -l app.kubernetes.io/instance=<release>

Check persistent volumes
kubectl get pvc -n <namespace>

All PersistentVolumeClaims should show status Bound.
Check logs
Review logs from the upgraded component for errors:
kubectl logs -n <namespace> -l app.kubernetes.io/instance=<release> --tail=100

Check Helm revision
Confirm the release revision increased successfully:
helm history <release> -n <namespace>
Video coming soon.
Troubleshooting
- Commands
- Video
Identify the issue
Check release status:
helm status <release> -n <namespace>
Inspect Kubernetes events to find the failure cause:
kubectl describe pods -n <namespace> -l app.kubernetes.io/instance=<release>
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
Roll back the upgrade
If needed, roll back to the previous revision:
helm rollback <release> -n <namespace>
See the Rollback page for detailed steps.
Force pod recreation
Sometimes you need to restart pods so configuration applies correctly:
kubectl rollout restart deployment/<deployment-name> -n <namespace>
# or for StatefulSets:
kubectl rollout restart statefulset/<statefulset-name> -n <namespace>
To find the Deployment or StatefulSet name:
kubectl get deployments,statefulsets -n <namespace> -l app.kubernetes.io/instance=<release>
rollout restart restarts pods in a controlled way (rolling update). For components without multiple replicas, expect brief downtime during the restart.
Uninstall a failing component
To uninstall and reinstall a specific component:
helm uninstall <release> -n <namespace>
helm install <release> oci://registry.tecnisys.com.br/tdp/charts/<chart> \
-n <namespace> \
-f values.yaml
Uninstalling a Helm release does not remove associated PersistentVolumeClaims (PVCs). For a clean reinstall, delete PVCs manually before reinstalling:
kubectl delete pvc <pvc-name> -n <namespace>
Video coming soon.