Saltar para o conteúdo principal

TDP Kubernetes

Pré-Requisitos
  • Cluster Kubernetes 1.32+
  • kubectl instalado e configurado
  • Helm 3.2.0+
  • Acesso ao registry OCI da Tecnisys (registry.tecnisys.com.br)
  • Recursos mínimos recomendados no cluster:
    • CPU: 16 vCPUs disponíveis
    • Memória RAM: 32 GB disponíveis
    • Armazenamento persistente: 200 GB disponíveis

O que é o TDP Kubernetes?​

O TDP Kubernetes é a edição cloud-native da plataforma TDP, projetada para execução em clusters Kubernetes. Esta edição utiliza contêineres e orquestração para fornecer:

  • Escalabilidade horizontal automática de componentes.
  • Alta disponibilidade com failover automático.
  • Implantação declarativa via Helm Charts ou ArgoCD.
  • Isolamento de recursos e gerenciamento eficiente.

Esta solução é ideal para equipes que buscam uma plataforma de dados moderna, escalável e baseada em práticas DevOps e GitOps.

Este guia o auxiliará na implantação, configuração e acesso ao TDP Kubernetes em um cluster Kubernetes.

1. Preparação do Ambiente​

Antes de iniciar a instalação, certifique-se de que o cluster Kubernetes está configurado e acessível.

1.1. Verificar acesso ao cluster​

Execute o comando abaixo para validar o acesso ao cluster Kubernetes:

Terminal input
kubectl cluster-info

A saída deve exibir informações sobre o cluster, incluindo o endereço do API server.

1.2. Criar namespace para o TDP​

Crie um namespace dedicado para os componentes do TDP. O nome é livre — escolha um identificador alinhado à sua política de namespaces (por exemplo tdp-homologacao, data-platform).

Terminal input
kubectl create namespace <NAMESPACE>
Exemplo

Nomes usados em trechos ilustrativos mais abaixo: tdp-project como namespace e releases alinhados ao nome do chart (por exemplo tdp-kafka).

Exemplo
kubectl create namespace tdp-project

1.3. Configurar acesso ao registry OCI​

Os Helm Charts do TDP Kubernetes estão hospedados no registry OCI da Tecnisys. Configure o acesso com suas credenciais:

Terminal input
helm registry login registry.tecnisys.com.br \
--username <username> \
--password <password>
note

Substitua <username> e <password> pelas credenciais fornecidas pela Tecnisys.

2. Instalação via Helm Charts​

O Helm é o método recomendado para instalação de componentes individuais do TDP Kubernetes.

2.1. Adicionar o repositório Helm (se aplicável)​

Caso o registry utilize repositório Helm tradicional, adicione-o:

Terminal input
helm repo add tecnisys https://registry.tecnisys.com.br/helm
helm repo update

2.2. Instalar componentes do TDP​

Cada componente do TDP possui seu próprio Helm Chart.

Instalação ilustrativa do Apache Kafka (substitua <RELEASE_NAME> pelo nome do release Helm e <NAMESPACE> pelo namespace alvo):

Terminal input
helm install <RELEASE_NAME> oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace <NAMESPACE> \
--version <CHART_VERSION> \
--create-namespace \
-f <VALUES_FILE>
Exemplo
Exemplo
helm install tdp-kafka oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace tdp-project \
--version 3.0.1 \
--create-namespace \
-f values-kafka.yaml

2.3. Personalizar a instalação​

Você pode personalizar a instalação criando um arquivo values.yaml:

values.yaml
kafka:
replicas: 3
resources:
requests:
memory: "4Gi"
cpu: "2"
limits:
memory: "8Gi"
cpu: "4"
persistence:
enabled: true
size: 100Gi

Aplique a configuração durante a instalação:

Terminal input
helm install <RELEASE_NAME> oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace <NAMESPACE> \
--version <CHART_VERSION> \
-f <VALUES_FILE>
Exemplo
Exemplo
helm install tdp-kafka oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace tdp-project \
--version 3.0.1 \
-f values.yaml

2.4. Verificar a instalação​

Liste os recursos criados no namespace:

Terminal input
kubectl get all -n <NAMESPACE>

Verifique o status dos Pods:

Terminal input
kubectl get pods -n <NAMESPACE>

Todos os Pods devem estar com status Running após alguns minutos.

3. Instalação via ArgoCD (GitOps)​

O ArgoCD permite gerenciar a implantação dos componentes de forma declarativa via Git.

3.1. Instalar o ArgoCD​

Se o ArgoCD ainda não estiver instalado no cluster, instale-o com os comandos:

Terminal input
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

3.2. Acessar a interface do ArgoCD​

Exponha o serviço do ArgoCD:

Terminal input
kubectl port-forward svc/argocd-server -n argocd 8080:443

Acesse a interface em https://localhost:8080.

A senha inicial do usuário admin pode ser obtida com:

Terminal input
kubectl get secret argocd-initial-admin-secret -n argocd \
-o jsonpath="{.data.password}" | base64 -d

3.3. Criar Application no ArgoCD​

Crie um arquivo YAML descrevendo a aplicação TDP, conforme exemplo:

tdp-application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-kafka
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp/charts
chart: tdp-kafka
targetRevision: 3.0.1
destination:
server: https://kubernetes.default.svc
namespace: tdp-project
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

Aplique a configuração:

Terminal input
kubectl apply -f <application-manifest>
Exemplo
Exemplo
kubectl apply -f tdp-application.yaml

O ArgoCD sincronizará automaticamente o estado desejado com o cluster.

4. Acesso aos Componentes​

Após a instalação, os componentes podem ser acessados via Services do Kubernetes.

4.1. Listar Services disponíveis​

Terminal input
kubectl get services -n <NAMESPACE>

4.2. Acessar interfaces web via Port Forwarding​

Para expor a UI do Kafka localmente:

Terminal input
kubectl port-forward svc/kafka-ui 8080:80 -n <NAMESPACE>
Exemplo

Em instalações Strimzi comuns, o serviço da UI pode aparecer como tdp-kafka-kafka-ui (ajuste ao seu cluster).

Exemplo
kubectl port-forward svc/tdp-kafka-kafka-ui 8080:80 -n tdp-project

Acesse a interface em http://localhost:8080.

4.3. Configurar Ingress (opcional)​

Para acesso externo permanente, configure um Ingress Controller (como NGINX Ingress).

Manifesto genérico (substitua <NAMESPACE>, <INGRESS_NAME> e <KAFKA_UI_HOSTNAME>):

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <INGRESS_NAME>
namespace: <NAMESPACE>
spec:
rules:
- host: <KAFKA_UI_HOSTNAME>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kafka-ui
port:
number: 80
Exemplo

Valores ilustrativos:

Exemplo
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kafka-ui-ingress
namespace: tdp-project
spec:
rules:
- host: kafka-ui.tdp.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: tdp-kafka-ui
port:
number: 80

Aplique o Ingress:

Terminal input
kubectl apply -f <ingress-manifest>
Exemplo
Exemplo
kubectl apply -f kafka-ui-ingress.yaml

Configure a resolução de DNS local (/etc/hosts no Linux ou C:\Windows\System32\drivers\etc\hosts no Windows):

<INGRESS_IP>   <hostname>
Exemplo
192.168.1.50   kafka-ui.tdp.local

5. Principais Componentes do TDP Kubernetes​

O TDP Kubernetes é composto por diversos componentes organizados em camadas:

ComponenteDescriçãoHelm Chart
Apache KafkaStreaming de eventostdp-kafka
Apache NiFiOrquestração de fluxos de dadostdp-nifi
TrinoMotor de consultas SQL distribuídastdp-trino
Apache AirflowOrquestração de workflowstdp-airflow
Apache SupersetVisualização e BItdp-superset
PostgreSQLBanco de dados relacionaltdp-postgresql
ClickHouseBanco de dados OLAPtdp-clickhouse

Para instalar múltiplos componentes, repita os passos de instalação via Helm ou ArgoCD para cada chart.

6. Solução de Problemas​

6.1. Pods não inicializam​

Verifique os logs do Pod com problemas:

Terminal input
kubectl logs <pod-name> -n <NAMESPACE>

Verifique eventos do namespace:

Terminal input
kubectl get events -n <NAMESPACE> --sort-by='.lastTimestamp'

6.2. Problemas de autenticação no registry​

Recrie o secret de autenticação:

Terminal input
kubectl delete secret <docker-registry-secret> -n <NAMESPACE>
kubectl create secret docker-registry <docker-registry-secret> \
--docker-server=registry.tecnisys.com.br \
--docker-username=<username> \
--docker-password=<password> \
-n <NAMESPACE>
Exemplo
Exemplo
kubectl delete secret regcred -n <NAMESPACE>
kubectl create secret docker-registry regcred \
--docker-server=registry.tecnisys.com.br \
--docker-username=<username> \
--docker-password=<password> \
-n <NAMESPACE>

6.3. Recursos insuficientes​

Verifique o consumo de recursos no cluster:

Terminal input
kubectl top nodes
kubectl top pods -n <NAMESPACE>

Ajuste os limites de recursos no arquivo values.yaml e execute um upgrade:

Terminal input
helm upgrade <RELEASE_NAME> oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace <NAMESPACE> \
--values values.yaml
Exemplo
Exemplo
helm upgrade tdp-kafka oci://registry.tecnisys.com.br/tdp/charts/tdp-kafka \
--namespace tdp-project \
--values values.yaml

Próximos Passos​

Após concluir a instalação do TDP Kubernetes, consulte a documentação completa para:

  • Configuração avançada de componentes
  • Integração com ferramentas de monitoramento (Prometheus, Grafana)
  • Backup e recuperação de dados
  • Atualizações de versões dos componentes
  • Segurança e controle de acesso (RBAC, Network Policies)

Para mais informações sobre os conceitos e arquitetura do TDP Kubernetes, consulte a seção de Conceitos na documentação.