Apache Airflow 是一个用于以有向无环图(DAGs)形式表达和执行工作流的工具,包含任务调度、进度监控和依赖管理等功能。Bitnami 提供的该 Helm Chart 用于在 Kubernetes 集群上快速部署和配置 Apache Airflow,简化其在容器化环境中的管理流程。
Apache Airflow ***概述
商标说明:本软件包由 Bitnami 打包,提及的商标分属各自公司所有,使用不意味着关联或背书。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/airflow
生产环境建议使用 VMware Tanzu Application Catalog(Bitnami 商业版目录)。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,推出 Bitnami Secure Images 计划,重点提供安全硬化的容器镜像。过渡期间注意:
docker.io/bitnamilegacy 仓库,不再更新详细信息见 Bitnami Secure Images 公告。
使用发布名称 my-release 安装:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/airflow
需替换占位符:
REGISTRY_NAME为 Helm 镜像仓库(如registry-1.docker.io),REPOSITORY_NAME为仓库名称(如bitnamicharts)。
Airflow 支持多种执行器,通过 executor 参数指定:
基于 Redis 消息队列协调 worker 节点,适用于分布式任务处理:
consoleexecutor=CeleryExecutor # 默认启用,无需额外配置
为每个任务动态创建 worker pod,无需预置 worker:
consoleexecutor=KubernetesExecutor rbac.create=true serviceAccount.create=true redis.enabled=false # 无需 Redis,可禁用
任务 pod 模板通过
worker.podTemplate自定义。
在 Scheduler pod 内通过进程池执行任务:
consoleexecutor=LocalExecutor redis.enabled=false
Bitnami Chart 在首次启动时配置凭证,后续更新需手动操作:
shellkubectl create secret generic SECRET_NAME \ --from-literal=airflow-password=PASSWORD \ --from-literal=airflow-fernet-key=FERNET_KEY \ --from-literal=airflow-secret-key=SECRET_KEY \ --from-literal=airflow-jwt-secret-key=JWT_SECRET_KEY \ --dry-run -o yaml | kubectl apply -f -
默认根据 Chart 参数自动生成 airflow.cfg,例如 executor 参数对应 [core] 部分的 executor 配置。
通过 configuration 参数提供完整配置(YAML 格式):
yamlconfiguration: core: dags_folder: "/opt/bitnami/airflow/dags" load_examples: "False" webserver: expose_config: "True"
将被转换为:
ini[core] dags_folder = "/opt/bitnami/airflow/dags" load_examples = "False" [webserver] expose_config = "True"
通过 overrideConfiguration 参数覆盖默认配置,优先级高于 configuration:
yamloverrideConfiguration: core: parallelism: 32
支持以下两种方式(可同时使用):
consoledags.enabled=true dags.existingConfigmap=my-dags-configmap
通过 initContainer 克隆仓库,sidecar 容器定期更新:
consoledags.enabled=true dags.repositories[0].repository=[***] # Git 仓库地址 dags.repositories[0].name=REPO-IDENTIFIER # 仓库标识(唯一) dags.repositories[0].branch=main # 分支
[***])或 SSH(通过 dags.sshKey 或 dags.existingSshKeySecret 配置密钥)从 Git 仓库加载插件,配置方式类似 DAG:
consoleplugins.enabled=true plugins.repositories[0].repository=[***] plugins.repositories[0].branch=v1.0.9-branch plugins.repositories[0].path=plugins # 插件在仓库中的路径
通过 extraVolumes 和 extraVolumeMounts 挂载 requirements.txt 至 /bitnami/python/requirements.txt,容器启动时自动执行 pip install -r:
yamlextraVolumes: - name: requirements-volume configMap: name: airflow-requirements extraVolumeMounts: - name: requirements-volume mountPath: /bitnami/python/requirements.txt subPath: requirements.txt
consolepostgresql.enabled=false # 禁用内置 PostgreSQL externalDatabase.host=my.external.postgres.host # 外部数据库地址 externalDatabase.user=bn_airflow # 用户名 externalDatabase.database=bitnami_airflow # 数据库名 externalDatabase.existingSecret=all-my-secrets # 存储密码的 Secret 名称 externalDatabase.existingSecretPasswordKey=postgresql-password # Secret 中密码的 Key
consoleredis.enabled=false # 禁用内置 Redis externalRedis.host=my.external.redis.host # 外部 Redis 地址 externalRedis.existingSecret=all-my-secrets # 存储密码的 Secret 名称 externalRedis.existingSecretPasswordKey=redis-password # Secret 中密码的 Key
yamlapiVersion: v1 kind: Secret metadata: name: all-my-secrets type: Opaque data: airflow-password: "Smo1QTJLdGxXMg==" # base64 编码的密码 airflow-fernet-key: "YVRZeVJVWnlXbU4wY1dOalVrdE1SV3cxWWtKeFIzWkVRVTVrVjNaTFR6WT0=" postgresql-password: "cG9zdGdyZXMK" redis-password: "cmVkaXMK"
启用 StatsD 指标导出和 Prometheus 集成:
consolemetrics.enabled=true
Chart 会部署 StatsD Exporter,将指标转换为 Prometheus 格式。
部署 ServiceMonitor 资源:
consolemetrics.serviceMonitor.enabled=true
需确保集群已安装 Prometheus Operator CRD(可通过 Bitnami Kube Prometheus Chart 安装)。
通过 Ingress 控制器管理 TLS:
consoleingress.enabled=true ingress.tls=true ingress.hostname=airflow.example.com ingress.tlsSecret=airflow-tls-secret # 包含 tls.crt 和 tls.key 的 Secret
配置 Webserver 自身启用 TLS:
consoleweb.tls.enabled=true web.tls.existingSecret=web-tls-secret # 现有 TLS Secret
web.tls.autoGenerated.engine=helm)或 CertManager(engine=cert-manager,需集群安装 CertManager)yamlweb: resources: requests: cpu: 200m memory: 256Mi limits: cpu: 1000m memory: 1Gi scheduler: resources: requests: cpu: 300m memory: 512Mi worker: resources: requests: cpu: 500m memory: 1Gi
通过 resourcesPreset 快速应用预定义配置(如 small、medium,定义见 bitnami/common):
consoleweb.resourcesPreset=medium scheduler.resourcesPreset=medium worker.resourcesPreset=large
Airflow 自身无持久化存储需求,依赖 PostgreSQL 存储元数据(由 PostgreSQL Chart 管理持久化)。
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局镜像拉取密钥列表 | [] |
global.defaultStorageClass | 持久化存储的默认 StorageClass | "" |
完整参数列表:由于长度限制,完整参数请参考 Bitnami Airflow Chart 文档。
使用 Velero 备份和恢复 Kubernetes 集群中的持久化卷及部署配置,具体步骤见 Bitnami 备份指南。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429