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 predefinida
Comportamento por omissão do chart tdp-airflow:
- Executor:
KubernetesExecutor - base de dados: PostgreSQL embutido (subchart), com
tdp-airflow.postgresql.enabled: truepor predefinição - DAGs: persistência em PVC habilitada por predefinição (
tdp-airflow.dags.persistence.enabled: true, tamanho típico5Gi) - Logs: persistência em PVC desabilitada por predefiniçã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 base de dados
O Airflow precisa de um base 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 predefiniçã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 predefiniçã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>"
Variáveis de ambiente adicionais
Use tdp-airflow.extraEnv para referenciar Secrets ou injetar outras variáveis (por exemplo, senha LDAP):
tdp-airflow:
extraEnv: |
- name: EXAMPLE_ENV
valueFrom:
secretKeyRef:
name: <secret-name>
key: <secret-key>
Dependências Python e imagem
Com KubernetesExecutor, cada task roda em um pod novo.
Instalar pacotes via init container em todo deploy pode aumentar muito o tempo de subida.
A abordagem usual em produção é imagem customizada com dependências já instaladas; defina a mesma imagem em tdp-airflow.images.airflow e tdp-airflow.images.pod_template.
Para opções adicionais (hooks, imagens), consulte a exportação de valores do pacote (helm show values) e a documentação do chart upstream do Apache Airflow.
Parâmetros principais
| Parâmetro | Descrição | Valor por omissão |
|---|---|---|
tdp-airflow.enabled | Habilita o deploy do Airflow | true |
tdp-airflow.executor | Executor | KubernetesExecutor |
tdp-airflow.config.core.default_timezone | Fuso padrão | America/Sao_Paulo |
tdp-airflow.apiServer.service.type | Tipo do Service do API Server | ClusterIP |
tdp-airflow.postgresql.enabled | PostgreSQL embutido | true |
tdp-airflow.dags.persistence.enabled | PVC de DAGs | true |
tdp-airflow.dags.persistence.size | Tamanho do PVC de DAGs | 5Gi |
tdp-airflow.logs.persistence.enabled | PVC de logs | false |
tdp-airflow.logs.persistence.size | Tamanho do PVC de logs | 10Gi |
tdp-airflow.ldap.enabled | LDAP | false |
tdp-airflow.ldap.apiServerConfig | Trecho Flask-AppBuilder | Ver helm show values para a sua versão |
tdp-airflow.extraEnv | Variáveis extras (ex.: Secret) | "" |
tdp-airflow.data | Metadados / DB externo | Desligado por predefinição; estrutura em helm show values |
TDPConfigurations.externalDatabase.enabled | Helpers DB externo TDP | false |
TDPConfigurations.s3Connection.enabled | Secret de conexão S3 TDP | false |