Segurança — Hive Metastore
O acesso ao Hive Metastore é controlado pelas credenciais do banco de dados PostgreSQL. O chart tdp-hive-metastore suporta banco interno (embedded) ou externo, e em ambos os casos a proteção da senha do banco é feita via Secret Kubernetes.
Banco interno (embedded PostgreSQL)
Quando postgres.enabled: true, o chart sobe um PostgreSQL interno. A senha do usuário hive é definida diretamente no values.yaml:
tdp-hive-metastore:
postgres:
enabled: true
database: hive
username: hive
password: "<POSTGRES_PASSWORD>"
Não armazene a senha em arquivos values.yaml versionados. Use um arquivo de valores privado (fora do controle de versão) ou mecanismo de gestão de Secrets do seu ambiente.
Após o deploy, o chart cria automaticamente um Secret com o nome <release>-hive-database contendo a chave password. Para recuperar a senha gerada:
kubectl get secret -n <namespace> <release>-hive-database \
-o jsonpath="{.data.password}" | base64 --decode
Banco externo (PostgreSQL compartilhado)
Quando postgres.enabled: false, o Hive Metastore conecta-se a um PostgreSQL externo. A autenticação é gerenciada via TDPConfigurations.externalDatabase:
tdp-hive-metastore:
postgres:
enabled: false
external:
host: "<POSTGRESQL_HOST>"
port: 5432
TDPConfigurations:
externalDatabase:
enabled: true
externalSecret:
releaseName: "tdp-postgresql-project"
O campo externalSecret.releaseName aponta para o release do PostgreSQL cujo Secret contém a chave postgres-password (senha do administrador). Os hooks de pré-instalação usam essa credencial para criar o banco e o usuário hive.
| Campo | Descrição |
|---|---|
externalDatabase.enabled | Ativa os hooks que validam e provisionam o banco externo |
externalDatabase.recreate | Quando true, recria o banco antes do provisionamento — usar apenas em reinstalações |
externalSecret.releaseName | Nome do release do PostgreSQL de onde o Secret com postgres-password é lido |
Capacidade mínima do PostgreSQL
O Hive Metastore exige alta disponibilidade de conexões ao banco:
| Requisito | Mínimo | Recomendado |
|---|---|---|
max_connections | 300 | 400+ |
O chart TDP PostgreSQL é configurado com 400 conexões por padrão. Se usar PostgreSQL externo, verifique esse parâmetro antes do deploy.
Resolução de Problemas
| Problema | Causa provável | Solução |
|---|---|---|
| Metastore não sobe (banco externo) | Secret com postgres-password ausente ou nome do release incorreto | Verificar externalSecret.releaseName |
| Falha nos hooks de pré-instalação | PostgreSQL não acessível ou max_connections insuficiente | Verificar conectividade e SHOW max_connections |
| Autenticação negada | Credenciais incorretas no values | Rever postgres.username e postgres.password |
Para a lista completa de parâmetros, use helm show values na versão do chart que instalou.