Segurança — Iceberg
O chart tdp-iceberg executa jobs de manutenção de tabelas Iceberg (expiração de snapshots, remoção de arquivos órfãos, reescrita de arquivos). Esses jobs acessam o armazenamento S3/MinIO via Spark e requerem o Secret Kubernetes s3-credentials com as credenciais de acesso ao bucket.
Secret de credenciais S3
Crie o Secret no namespace antes do deploy:
kubectl -n <namespace> create secret generic s3-credentials \
--from-literal=access-key="<ACCESS_KEY>" \
--from-literal=secret-key="<SECRET_KEY>"
| Chave | Descrição |
|---|---|
access-key | Chave de acesso ao bucket S3/MinIO |
secret-key | Chave secreta para autenticação S3 |
O nome do Secret deve ser exatamente s3-credentials. Os CronJobs do chart referenciam esse nome diretamente via env.secretKeyRef.
Configuração do catálogo Iceberg
O acesso ao Hive Metastore (usado como catálogo Iceberg) e ao endpoint S3 são configurados em maintenance.spark.config:
maintenance:
spark:
config:
"spark.sql.catalog.iceberg": "org.apache.iceberg.spark.SparkCatalog"
"spark.sql.catalog.iceberg.type": "hive"
"spark.sql.catalog.iceberg.uri": "thrift://<release>-metastore.<namespace>.svc.cluster.local:9083"
"spark.hadoop.fs.s3a.endpoint": "http://<s3-endpoint>:<porta>"
"spark.hadoop.fs.s3a.path.style.access": "true"
Ajuste o endereço do Metastore (spark.sql.catalog.iceberg.uri) se o nome do release ou namespace do Hive Metastore diferirem dos valores padrão.
Boas práticas
| Aspecto | Recomendação |
|---|---|
| Credenciais | Não versionar access-key e secret-key em repositório Git |
| Rotação | Recriar o Secret e aguardar o próximo ciclo dos CronJobs |
| Acesso mínimo | Credenciais com permissão apenas nos buckets das tabelas Iceberg |
Resolução de Problemas
| Problema | Causa provável | Solução |
|---|---|---|
| CronJob falha com erro 403 no S3 | Secret ausente ou chaves com nome incorreto | Verificar Secret s3-credentials no namespace |
| Erro de conexão ao Metastore | URI do Hive Metastore incorreto | Verificar endereço e porta 9083 acessíveis |
| Tabela não encontrada no catálogo | Namespace do catálogo Iceberg incorreto na query | Verificar configuração de spark.sql.catalog.iceberg |
Para a lista completa de parâmetros, use helm show values na versão do chart que instalou.