Saltar para o conteúdo principal
Versão Next 🚧

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:

ComponenteO que armazena no PostgreSQL
AirflowDefinições de DAGs, execuções, conexões, variáveis
Hive MetastoreEsquemas, tabelas, partições e localizações no S3
RangerPolíticas de acesso, usuários, grupos, logs de auditoria
CloudBeaverConfigurações de datasources e workspaces (opcional)
SupersetDashboards, usuários, conexões de banco
JupyterHubSessõ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 banco de dados (schema isolado) dentro desta instância.

PostgreSQL interno vs. externo

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

PropriedadeValor
Charttdp-postgresql
Versão do PostgreSQL17.5.0
Versão do Chart3.0.0
Registry (OCI)oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql

Instalação (OCI)

Terminal input
helm install <release> oci://registry.tecnisys.com.br/tdp/charts/tdp-postgresql -n <namespace> --create-namespace

Parâmetros principais

ParâmetroDescriçãoPadrão
tdp-postgresql.postgresql.enabledHabilitar subchart PostgreSQLtrue
tdp-postgresql.primary.persistence.enabledHabilitar persistênciatrue
tdp-postgresql.primary.persistence.sizeTamanho do PVC1Gi
tdp-postgresql.primary.resources.requests.cpuCPU solicitada500m
tdp-postgresql.primary.resources.requests.memoryMemória solicitada1Gi
tdp-postgresql.primary.resources.limits.cpuLimite de CPU1000m
tdp-postgresql.primary.resources.limits.memoryLimite de memória2Gi
tdp-postgresql.primary.configurationSobrescritas de postgresql.conf""
tdp-postgresql.service.typeTipo do ServiceClusterIP
tdp-postgresql.service.portPorta do Service5432
tdp-postgresql.metrics.enabledExporter de métricasfalse

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

Terminal input
export POSTGRES_PASSWORD=$(kubectl get secret --namespace <namespace> <release> \
-o jsonpath="{.data['postgres-password']}" | base64 -d)

Conectar a partir de um pod temporário

Terminal input
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)

Terminal input
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

Terminal input
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

Terminal input
helm uninstall <release> -n <namespace>