Instalação via Helm
Esta seção descreve o processo de instalação dos componentes do TDP Kubernetes utilizando o Helm CLI.
Nessa abordagem, os componentes são instalados por meio da execução direta de comandos helm install, que implantam no cluster Kubernetes os recursos definidos em cada Helm Chart disponível no registry OCI privado da Tecnisys.
Na instalação via Helm a aplicação dos charts é realizada manualmente ou por automação externa, comando a comando, com controle direto sobre a sequência de implantação de cada componente.
Antes de iniciar a instalação, certifique-se de que todos os pré-requisitos foram atendidos, incluindo a autenticação no registry OCI da Tecnisys.
Ordem de Instalação
A instalação dos componentes deve seguir uma ordem específica para garantir que as dependências sejam atendidas. A tabela abaixo apresenta a ordem recomendada:
| Ordem | Chart | Componente | Versão | Dependências |
|---|---|---|---|---|
| 1 | tdp-crds | CRDs da Plataforma | 3.0.1 | Nenhuma |
| 2 | tdp-argo | Argo CD | 3.2.5 | tdp-crds |
| 3 | tdp-postgresql | PostgreSQL | 17.5.0 | Nenhuma |
| 4 | tdp-kafka | Kafka (Strimzi) | 4.1.0 | tdp-crds (Strimzi CRDs) |
| 5 | tdp-hive-metastore | Hive Metastore | 4.0.0 | tdp-postgresql |
| 6 | tdp-deltalake | Delta Lake | 4.0.1 | Nenhuma |
| 7 | tdp-iceberg | Iceberg | 1.10.0 | Nenhuma |
| 8 | tdp-ozone | Apache Ozone | 2.0.0 | Nenhuma |
| 9 | tdp-ranger | Ranger | 2.7.0 | tdp-postgresql |
| 10 | tdp-nifi | NiFi | 1.28.0 | Nenhuma |
| 11 | tdp-spark | Spark | 4.0.2 | Nenhuma |
| 12 | tdp-trino | Trino | 478 | Nenhuma |
| 13 | tdp-airflow | Airflow | 3.0.2 | tdp-postgresql |
| 14 | tdp-jupyter | JupyterHub | 5.3.0 | tdp-postgresql |
| 15 | tdp-clickhouse | ClickHouse | 25.8.11.66 | tdp-crds (Altinity CRDs) |
| 16 | tdp-cloudbeaver | CloudBeaver | 25.3.0 | tdp-postgresql |
| 17 | tdp-openmetadata | OpenMetadata | 1.12.4 | tdp-postgresql |
| 18 | tdp-superset | Superset | 5.0.0 | tdp-postgresql |
A coluna Versão refere-se à versão do componente (appVersion do chart, ex.: Kafka 4.1.0, Argo CD 3.2.5).
A versão do chart Helm (version no Chart.yaml) é um número separado — para o tdp-kafka, por exemplo, a chart version é 3.0.1 enquanto a appVersion é 4.1.0.
Ao omitir --version no helm install, o Helm instala a versão mais recente disponível no registry.
-
O
tdp-postgresqlé uma dependência para componentes configurados para usar o PostgreSQL da stack e deve estar operacional antes deles. -
Instalar um componente dependente sem o PostgreSQL ativo resultará em falha.
-
Conforme recomendado para ambientes de produção, componentes que dependem de banco de dados devem utilizar uma base externa.
-
No entanto, se nenhuma base externa for informada, o componente utilizará uma instância interna exclusiva quando essa opção existir no chart.
-
Para entender melhor essa diferença, consulte PostgreSQL interno versus externo.
- Instalação dos Componentes
- Verificação da Instalação
- Resolução de Problemas
- Comandos
- Vídeo
Instalação
O padrão de instalação é o mesmo para todos os componentes. Para cada chart, execute:
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/<chart> \
--version <CHART_VERSION> \
-n <NAMESPACE> \
--create-namespace \
-f <VALUES_FILE>

O parâmetro --create-namespace cria o namespace <NAMESPACE> automaticamente na primeira instalação. Nas instalações subsequentes, o namespace já existirá e o parâmetro será ignorado.
Se a flag --version for omitida, o Helm instalará a versão mais recente do chart disponível no registry. Para fixar uma versão específica do chart, utilize --version <CHART_VERSION>.
A versão do componente instalado (Kafka, Airflow, etc.) é definida pelo appVersion do chart e pode ser consultada no próprio chart antes da instalação ou verificada nos recursos implantados após a instalação.
Após instalar cada componente, aguarde os pods ficarem prontos antes de prosseguir:
kubectl get pods -n <NAMESPACE> --watch

Pressione Ctrl+C quando todos os pods do componente estiverem com status Running e READY.
1. CRDs da Plataforma (tdp-crds)
Custom Resource Definitions (CRDs) ensinam ao Kubernetes novos tipos de recurso que ele não conhece nativamente. Os operadores da plataforma (NiFiKop, Strimzi, ArgoCD, ClickHouse etc.) precisam que esses tipos estejam registrados no cluster antes de serem instalados — sem eles, o Kubernetes não consegue criar objetos como NifiCluster, Kafka ou Application.
Os CRDs são recursos de escopo global (não pertencem a um namespace) e são gerenciados num chart dedicado (tdp-crds) para evitar conflitos durante upgrades do Helm.
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-crds \
--version <CHART_VERSION> \
-n <NAMESPACE> \
--create-namespace \
-f <VALUES_FILE>
<RELEASE_NAME>)Nos comandos de instalação abaixo, <RELEASE_NAME> é o nome do release Helm do componente. Muitas equipes usam o prefixo tdp- alinhado ao nome do chart (ex.: chart tdp-kafka com release tdp-kafka). Ajuste à convenção do seu ambiente.
tdp-crdsEste chart instala os CRDs necessários para:
- Argo CD —
Application,ApplicationSet,AppProject - Strimzi Kafka Operator —
Kafka,KafkaConnect,KafkaTopic,KafkaUser,KafkaNodePool, entre outros - NiFiKop Operator —
NifiCluster,NifiDataflow,NifiUser, entre outros - Altinity ClickHouse Operator —
ClickHouseInstallation,ClickHouseKeeperInstallation, entre outros - OpenMetadata OMJob Operator —
OMJob,CronOMJob - cert-manager —
Certificate,ClusterIssuer,Issuer, entre outros
2. ArgoCD
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-argo \
--version <CHART_VERSION> \
-n <NAMESPACE> \
--create-namespace \
-f <VALUES_FILE>
3. PostgreSQL
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
Aguarde o PostgreSQL ficar totalmente operacional antes de prosseguir com a instalação dos componentes que dependem dele. Verifique o status:
kubectl get pods -n <NAMESPACE> | grep <RELEASE_NAME>
O pod deve apresentar o status Running e estar com todas as réplicas prontas (READY 1/1).
Se o release do PostgreSQL for tdp-postgresql, o filtro pode ser grep tdp-postgresql na saída de kubectl get pods.
4. Kafka (Strimzi)
O tdp-kafka depende dos CRDs do Strimzi (ex.: Kafka, KafkaNodePool, KafkaConnect, KafkaConnector) que são instalados pelo tdp-crds (passo 1).
Certifique-se de que o tdp-crds foi aplicado antes de instalar o tdp-kafka.
Sem os CRDs, o Helm não conseguirá criar os recursos do Strimzi e a instalação falhará.
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--version <CHART_VERSION> \
-n <NAMESPACE> \
--create-namespace \
-f <VALUES_FILE>
Após a instalação, verifique se o cluster Kafka foi criado corretamente:
kubectl get kafka -n <NAMESPACE>
kubectl get kafkanodepools -n <NAMESPACE>
kubectl get pods -n <NAMESPACE> -l strimzi.io/cluster=<KAFKA_CLUSTER_NAME>
kubectl get svc -n <NAMESPACE> | grep kafka
kubectl get kafkaconnect -n <NAMESPACE>
kubectl get kafkaconnector -n <NAMESPACE>
Substitua <KAFKA_CLUSTER_NAME> pelo valor de name no values.yaml (padrão: tdp-kafka).
Para o tdp-kafka, a chart version (ex.: 3.0.1) é diferente da appVersion (ex.: 4.1.0 — versão do Apache Kafka).
Use helm show chart oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka para consultar ambas.
5. Hive Metastore
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-hive-metastore \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
6. Delta Lake
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-deltalake \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
7. Iceberg
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-iceberg \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
8. Apache Ozone
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-ozone \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
9. Ranger
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-ranger \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
10. NiFi
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-nifi \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
11. Spark
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-spark \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
12. Trino
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-trino \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
13. Airflow
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-airflow \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
O Airflow requer que o PostgreSQL esteja operacional. Além disso, caso utilize o executor CeleryExecutor ou KubernetesExecutor com compartilhamento de DAGs via volume, certifique-se de que uma Storage Class com suporte a ReadWriteMany (RWX) esteja disponível.
14. JupyterHub
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-jupyter \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
15. ClickHouse
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-clickhouse \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
16. CloudBeaver
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-cloudbeaver \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
17. OpenMetadata
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE> \
--wait --wait-for-jobs --timeout 10m
O OpenMetadata executa Jobs Kubernetes durante a instalação e atualização.
O flag --wait-for-jobs instrui o Helm a aguardar a conclusão desses jobs antes de considerar a instalação bem-sucedida.
Recomenda-se usar --wait --wait-for-jobs --timeout 10m para garantir que os jobs pós-instalação sejam concluídos.
No Argo CD, a Application só deve ser considerada saudável após os jobs pós-instalação/atualização serem concluídos.
18. Superset
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-superset \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
- Comandos
- Vídeos
Verificação da Instalação
Após instalar todos os componentes desejados, verifique o status geral da instalação.
Verificar os Pods
kubectl get pods -n <NAMESPACE>

Todos os pods devem apresentar o status Running e estar com todas as replicas prontas.
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>

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

Todos os Persistent Volume Claims devem apresentar o status Bound.
- Verificar os Pods
- Verificar os Releases do Helm
- Verificar os Serviços
- Verificar os Volumes Persistentes
Pods Não Iniciam
Se um pod permanece no status Pending ou CrashLoopBackOff:
- Verifique os eventos do pod:
kubectl describe pod <pod-name> -n <NAMESPACE>
- Verifique os logs do pod:
kubectl logs <pod-name> -n <NAMESPACE>
- Causas comuns:
- Recursos insuficientes: o cluster não possui CPU ou memória suficiente para agendar o pod. Verifique com
kubectl describe node - PVC pendente: a Storage Class configurada não está disponível ou não suporta o modo de acesso solicitado
- Dependência não atendida: o componente depende do PostgreSQL ou de outro serviço que ainda não está operacional
Erro de Pull de Imagem (ImagePullBackOff)
Se um pod apresenta o status ImagePullBackOff ou ErrImagePull:
- Verifique se a autenticação no registry foi realizada corretamente:
helm registry login registry.tecnisys.com.br
- Verifique se o Secret de autenticação do registry está configurado no namespace:
kubectl get secrets -n <NAMESPACE> | grep registry
- Caso necessário, crie o Secret manualmente:
kubectl delete secret <docker-registry-secret> -n <NAMESPACE> 2>/dev/null || true
kubectl create secret docker-registry <docker-registry-secret> \
--docker-server=registry.tecnisys.com.br \
--docker-username=<username> \
--docker-password=<password> \
-n <NAMESPACE>
kubectl delete secret tdp-registry-secret -n <NAMESPACE> 2>/dev/null || true
kubectl create secret docker-registry tdp-registry-secret \
--docker-server=registry.tecnisys.com.br \
--docker-username=<username> \
--docker-password=<password> \
-n <NAMESPACE>
Falha na Conexão com o Banco de Dados
Se componentes como Airflow, Superset, Ranger, OpenMetadata ou CloudBeaver apresentam erros de conexão com o banco de dados:
- Verifique se o PostgreSQL está operacional:
kubectl get pods -n <NAMESPACE> | grep <RELEASE_NAME>
Com release tdp-postgresql: kubectl get pods -n <NAMESPACE> | grep tdp-postgresql
- Verifique a conectividade interna do cluster:
kubectl run pg-test --rm -it --image=busybox -n <NAMESPACE> -- \
sh -c "nc -zv <postgresql-service> 5432"
Quando o serviço padrão do chart expõe o host tdp-postgresql no namespace:
kubectl run pg-test --rm -it --image=busybox -n <NAMESPACE> -- \
sh -c "nc -zv tdp-postgresql 5432"
- Verifique as credenciais configuradas nos values do chart do componente
Desinstalar um Componente com Problema
Para desinstalar e reinstalar um componente especifico:
helm uninstall <RELEASE_NAME> -n <NAMESPACE>
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/<chart> \
--version <CHART_VERSION> \
-n <NAMESPACE> \
-f <VALUES_FILE>
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>