本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Apache Airflow 是一个用于以有向无环图(DAGs)形式表达和执行工作流的工具,包含任务调度、进度监控和依赖管理等功能。Bitnami 提供的该 Helm Chart 用于在 Kubernetes 集群上快速部署和配置 Apache Airflow,简化其在容器化环境中的管理流程。
Apache Airflow 官方概述
商标说明:本软件包由 Bitnami 打包,提及的商标分属各自公司所有,使用不意味着关联或背书。
helm 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 安装:
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/airflow
需替换占位符:
REGISTRY_NAME为 Helm 镜像仓库(如registry-1.docker.io),REPOSITORY_NAME为仓库名称(如bitnamicharts)。
Airflow 支持多种执行器,通过 executor 参数指定:
基于 Redis 消息队列协调 worker 节点,适用于分布式任务处理:
executor=CeleryExecutor # 默认启用,无需额外配置
为每个任务动态创建 worker pod,无需预置 worker:
executor=KubernetesExecutor rbac.create=true serviceAccount.create=true redis.enabled=false # 无需 Redis,可禁用
任务 pod 模板通过
worker.podTemplate自定义。
在 Scheduler pod 内通过进程池执行任务:
executor=LocalExecutor redis.enabled=false
Bitnami Chart 在首次启动时配置凭证,后续更新需手动操作:
kubectl 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 格式):
configuration: core: dags_folder: "/opt/bitnami/airflow/dags" load_examples: "False" webserver: expose_config: "True"
将被转换为:
[core] dags_folder = "/opt/bitnami/airflow/dags" load_examples = "False" [webserver] expose_config = "True"
通过 overrideConfiguration 参数覆盖默认配置,优先级高于 configuration:
overrideConfiguration: core: parallelism: 32
支持以下两种方式(可同时使用):
dags.enabled=true dags.existingConfigmap=my-dags-configmap
通过 initContainer 克隆仓库,sidecar 容器定期更新:
dags.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:
plugins.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:
extraVolumes: - name: requirements-volume configMap: name: airflow-requirements extraVolumeMounts: - name: requirements-volume mountPath: /bitnami/python/requirements.txt subPath: requirements.txt
postgresql.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
redis.enabled=false # 禁用内置 Redis externalRedis.host=my.external.redis.host # 外部 Redis 地址 externalRedis.existingSecret=all-my-secrets # 存储密码的 Secret 名称 externalRedis.existingSecretPasswordKey=redis-password # Secret 中密码的 Key
apiVersion: 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 集成:
metrics.enabled=true
Chart 会部署 StatsD Exporter,将指标转换为 Prometheus 格式。
部署 ServiceMonitor 资源:
metrics.serviceMonitor.enabled=true
需确保集群已安装 Prometheus Operator CRD(可通过 Bitnami Kube Prometheus Chart 安装)。
通过 Ingress 控制器管理 TLS:
ingress.enabled=true ingress.tls=true ingress.hostname=airflow.example.com ingress.tlsSecret=airflow-tls-secret # 包含 tls.crt 和 tls.key 的 Secret
配置 Webserver 自身启用 TLS:
web.tls.enabled=true web.tls.existingSecret=web-tls-secret # 现有 TLS Secret
web.tls.autoGenerated.engine=helm)或 CertManager(engine=cert-manager,需集群安装 CertManager)web: 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):
web.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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429