Saltar para o conteúdo principal
Versão 3.0.0

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 dentro desta instância compartilhada.

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.

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 registry.tecnisys.com.br/community/images/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>