Configuração do Airflow
Consulte Apache Airflow — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.
O chart tdp-airflow é um chart umbrella: as opções do Airflow upstream ficam sob a chave tdp-airflow.
O projeto empaceta o Apache Airflow 3.0.2 para Kubernetes, com KubernetesExecutor como executor padrão.
Configuração padrão
Comportamento por omissão do chart tdp-airflow:
- Executor:
KubernetesExecutor - Banco de dados: PostgreSQL embutido (subchart), com
tdp-airflow.postgresql.enabled: truepor padrão - DAGs: persistência em PVC habilitada por padrão (
tdp-airflow.dags.persistence.enabled: true, tamanho típico5Gi) - Logs: persistência em PVC desabilitada por padrão (
tdp-airflow.logs.persistence.enabled: false); habilite apenas se o StorageClass atender ao padrão de acesso necessário (em geral RWX)
helm upgrade --install <release> oci://registry.tecnisys.com.br/tdp/charts/tdp-airflow \
-n <namespace> --create-namespace \
-f meu-values.yaml
A primeira instalação pode levar alguns minutos (imagens, migrations, hooks). Use --wait com um timeout adequado (por exemplo --timeout 15m) para evitar falha prematura do Helm.
Acesso
O API Server é exposto por um Service (em geral ClusterIP).
Para acessar a partir da sua máquina (por exemplo em desenvolvimento):
kubectl -n <namespace> port-forward svc/<release>-api-server 8080:8080
Configuração do banco de dados
O Airflow precisa de um banco de dados relacional para armazenar seus metadados: DAGs registrados, histórico de execuções, conexões, variáveis e usuários.
O chart suporta dois modos — para entender quando usar cada um, consulte PostgreSQL interno versus externo na página de Configuração Geral.
PostgreSQL embutido (padrão)
Indicado para desenvolvimento e testes:
tdp-airflow:
postgresql:
enabled: true
O PostgreSQL embutido é conveniente para desenvolvimento.
Para produção, prefira PostgreSQL externo.
PostgreSQL externo
Desative o subchart e preencha tdp-airflow.data com a conexão ao PostgreSQL externo (estrutura e comentários na exportação helm show values).
Para os helpers de integração TDP:
tdp-airflow:
postgresql:
enabled: false
data:
metadataSecretName: "<release>-airflow-database"
metadataConnection:
user: airflow
pass: ""
protocol: postgresql
host: "<postgres-service>.<namespace>.svc.cluster.local"
port: 5432
db: airflow
sslmode: disable
TDPConfigurations:
externalDatabase:
enabled: true
recreate: false
externalSecret:
releaseName: "<tdp-postgresql-release>"
area: "<area>"
Com TDPConfigurations.externalDatabase.enabled: true, o chart utiliza o release e a área informados para alinhar banco, usuário e Secret de metadados à stack TDP.
Prefira definir metadataSecretName e deixar pass vazio quando os jobs TDP forem responsáveis por gerar o Secret de conexão.
Autenticação LDAP
LDAP é opcional e vem desligado por padrão.
A configuração usa tdp-airflow.ldap e variáveis injetadas via tdp-airflow.extraEnv.
Veja Segurança — Airflow para Secret de bind e exemplos de configuração LDAP.
Persistência de DAGs (PVC)
Por padrão o chart já cria PVC para DAGs. Ajuste tamanho, StorageClass ou modo de acesso conforme o cluster:
tdp-airflow:
dags:
persistence:
enabled: true
size: 5Gi
storageClassName: ""
accessMode: ReadWriteOnce
Com KubernetesExecutor, vários pods precisam ler os mesmos DAGs.
Se o scheduler, webserver e tasks não compartilharem o volume, use uma StorageClass com ReadWriteMany (RWX), conforme permitido pelo seu ambiente.
Persistência de logs (PVC)
Padrão do chart: enabled: false. Se habilitar, avalie o modo de acesso ao volume: os logs são escritos por vários componentes e RWO costuma ser inadequado.
tdp-airflow:
logs:
persistence:
enabled: false
size: 10Gi
storageClassName: ""
Com RWO, a persistência de logs costuma ser inadequada.
Prefira RWX ou outra estratégia de logs (por exemplo, stack externa) alinhada ao seu ambiente.
Conexão S3 (TDP)
Configure esta seção quando o Airflow precisar acessar o armazenamento de objetos do cluster — por exemplo, para que os DAGs fiquem armazenados no Apache Ozone em vez de em PVC, ou para que operadores Airflow leiam e gravem arquivos no storage S3-compatível.
Para entender o conceito e quando a conexão S3 é necessária, consulte Armazenamento S3-compatível (Ozone) na página de Configuração Geral.
Com TDPConfigurations.s3Connection.enabled: true, o chart cria um Secret com parâmetros de conexão S3-compatível para integrações TDP. Use placeholders; não versione credenciais em texto plano:
TDPConfigurations:
s3Connection:
enabled: true
secretName: "<s3-connection-secret>"
name: "<connection-name>"
type: "aws"
accessKey: "<s3-access-key>"
secretKey: "<s3-secret-key>"
uri: "https://<s3-endpoint>"