Saltar para o conteúdo principal
Versão Next 🚧

Configuração do Airflow

Para saber mais

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: true por padrão
  • DAGs: persistência em PVC habilitada por padrão (tdp-airflow.dags.persistence.enabled: true, tamanho típico 5Gi)
  • 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)
Terminal input
helm upgrade --install <release> oci://registry.tecnisys.com.br/tdp/charts/tdp-airflow \
-n <namespace> --create-namespace \
-f meu-values.yaml
Dica

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):

Terminal input
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
Atenção

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.

Dica

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.

Documentação detalhada

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
Modo de acesso

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: ""
Atenção

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âmetroDescriçãoValor por omissão
tdp-airflow.enabledHabilita o deploy do Airflowtrue
tdp-airflow.executorExecutorKubernetesExecutor
tdp-airflow.config.core.default_timezoneFuso padrãoAmerica/Sao_Paulo
tdp-airflow.apiServer.service.typeTipo do Service do API ServerClusterIP
tdp-airflow.postgresql.enabledPostgreSQL embutidotrue
tdp-airflow.dags.persistence.enabledPVC de DAGstrue
tdp-airflow.dags.persistence.sizeTamanho do PVC de DAGs5Gi
tdp-airflow.logs.persistence.enabledPVC de logsfalse
tdp-airflow.logs.persistence.sizeTamanho do PVC de logs10Gi
tdp-airflow.ldap.enabledLDAPfalse
tdp-airflow.ldap.apiServerConfigTrecho Flask-AppBuilderVer helm show values para a sua versão
tdp-airflow.extraEnvVariáveis extras (ex.: Secret)""
tdp-airflow.dataMetadados / DB externoDesligado por padrão; estrutura em helm show values
TDPConfigurations.externalDatabase.enabledHelpers DB externo TDPfalse
TDPConfigurations.s3Connection.enabledSecret de conexão S3 TDPfalse