Configuração do PostgreSQL
O papel do PostgreSQL no TDP
O PostgreSQL não é um componente de análise de dados — ele é a infraestrutura de metadados da plataforma. Vários componentes TDP precisam de um banco relacional para armazenar suas próprias configurações, usuários, estado e histórico:
| Componente | O que armazena no PostgreSQL |
|---|---|
| Airflow | Definições de DAGs, execuções, conexões, variáveis |
| Hive Metastore | Esquemas, tabelas, partições e localizações no S3 |
| Ranger | Políticas de acesso, usuários, grupos, logs de auditoria |
| CloudBeaver | Configurações de datasources e workspaces (opcional) |
| Superset | Dashboards, usuários, conexões de banco |
| JupyterHub | Sessões e configurações de usuários (opcional) |
O chart tdp-postgresql implanta um PostgreSQL compartilhado para todos esses componentes.
Cada componente cria seu próprio base de dados (schema isolado) dentro desta instância.
Cada componente TDP pode usar o PostgreSQL compartilhado (tdp-postgresql) ou um PostgreSQL próprio. Para ambientes de produção com alta carga, considere usar instâncias dedicadas para componentes como Airflow e Hive Metastore. O TDPConfigurations.externalDatabase.* nas páginas de cada componente explica como configurar isso.
Esta página resume a configuração do chart tdp-postgresql no TDP Kubernetes. O chart publica PostgreSQL para uso pela plataforma.
Visão geral
| Propriedade | Valor |
|---|---|
| Chart | tdp-postgresql |
| Versão do PostgreSQL | 17.5.0 |
| Versão do Chart | 3.0.0 |
| Registry (OCI) | oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql |
Instalação (OCI)
helm install <release> oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql -n <namespace> --create-namespace
Parâmetros principais
| Parâmetro | Descrição | Padrão |
|---|---|---|
tdp-postgresql.postgresql.enabled | Habilitar subchart PostgreSQL | true |
tdp-postgresql.primary.persistence.enabled | Habilitar persistência | true |
tdp-postgresql.primary.persistence.size | Tamanho do PVC | 1Gi |
tdp-postgresql.primary.resources.requests.cpu | CPU solicitada | 500m |
tdp-postgresql.primary.resources.requests.memory | Memória solicitada | 1Gi |
tdp-postgresql.primary.resources.limits.cpu | Limite de CPU | 1000m |
tdp-postgresql.primary.resources.limits.memory | Limite de memória | 2Gi |
tdp-postgresql.primary.configuration | Sobrescritas de postgresql.conf | "" |
tdp-postgresql.service.type | Tipo do Service | ClusterIP |
tdp-postgresql.service.port | Porta do Service | 5432 |
tdp-postgresql.metrics.enabled | Exporter de métricas | false |
Para a lista completa, execute helm show values oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql (ou o registry que utilizar) na versão instalada.
Sobrescritas em postgresql.conf
O chart aceita configuração customizada via tdp-postgresql.primary.configuration. Exemplo:
tdp-postgresql:
primary:
configuration: |-
listen_addresses = '*'
max_connections = 400
superuser_reserved_connections = 10
wal_level = 'replica'
fsync = 'on'
max_wal_size = '400MB'
max_wal_senders = '16'
wal_keep_size = '128MB'
hot_standby = 'on'
log_connections = 'false'
log_disconnections = 'false'
log_hostname = 'false'
client_min_messages = 'error'
Para voltar ao comportamento padrão do subchart em relação a esse bloco, use configuration: "" ou omita o trecho, conforme sua necessidade.
Acesso
DNS dentro do cluster: <release>.<namespace>.svc.cluster.local:5432
Obter a senha
export POSTGRES_PASSWORD=$(kubectl get secret --namespace <namespace> <release> \
-o jsonpath="{.data['postgres-password']}" | base64 -d)
Conectar a partir de um pod temporário
kubectl run <release>-client --rm --tty -i --restart='Never' --namespace <namespace> \
--image docker.io/bitnamilegacy/postgresql:17.5.0-debian-12-r20 \
--env="PGPASSWORD=$POSTGRES_PASSWORD" \
--command -- psql -h <release> -p 5432 -U postgres -d postgres
Port-forward (fora do cluster)
kubectl port-forward --namespace <namespace> svc/<release> 5432:5432
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
Resolução de Problemas
kubectl -n <namespace> get pods
kubectl -n <namespace> get svc
kubectl -n <namespace> get pvc
kubectl -n <namespace> get events --sort-by=.lastTimestamp
Desinstalação
helm uninstall <release> -n <namespace>