_images/helm-logo.svg

Apache Airflow 的 Helm Chart

此 Chart 将使用 Helm 包管理器,在 Kubernetes 集群上引导 Airflow 部署。

要求

  • Kubernetes 1.29+ 集群

  • Helm 3.0+

  • 底层基础设施中的 PV 供应器支持(可选)

特性

  • 支持的执行器:LocalExecutorCeleryExecutorKubernetesExecutorLocalKubernetesExecutorCeleryKubernetesExecutor

  • 支持的 Airflow 版本:1.10+2.0+

  • 支持的数据库后端:PostgreSQLMySQL

  • 由 KEDA 提供的 CeleryExecutor 自动扩缩容

  • 采用经过实战检验的配置的 PostgreSQLPgBouncer

  • 监控

    • 用于 Airflow 的 StatsD/Prometheus 指标

    • 用于 PgBouncer 的 Prometheus 指标

    • Flower

  • 新部署后的自动数据库迁移

  • 部署期间创建管理员账号

  • Kerberos 安全配置

  • 支持任何类型执行器的一键部署。您无需提供其他服务(例如 Redis/数据库)即可测试 Airflow。

安装 Chart

要使用 Helm 3 安装此 Chart,请运行以下命令

helm repo add apache-airflow https://airflow.org.cn
helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace

该命令将使用默认配置在 Kubernetes 集群上部署 Airflow。《参数参考》部分列出了安装期间可配置的参数。

提示

使用 helm list 列出所有发布。

升级 Chart

要升级发布名称为 airflow 的 Chart

helm upgrade airflow apache-airflow/airflow --namespace airflow

注意

要升级到新版本的 Chart,请先运行 helm repo update

卸载 Chart

要卸载/删除 airflow 部署

helm delete airflow --namespace airflow

该命令将移除与此 Chart 关联的所有 Kubernetes 组件并删除该发布。

注意

执行 helm uninstall 后,由 Chart Helm hook 创建的某些 Kubernetes 资源可能会留在命名空间中,例如 brokerUrlSecretfernetKeySecret

使用 Argo CD、Flux、Rancher 或 Terraform 安装 Chart

当使用 Argo CD、Flux、Rancher 或 Terraform 安装 Chart 时,您必须设置以下四个值,否则您的应用程序将无法启动,因为迁移将不会运行。

createUserJob:
  useHelmHooks: false
  applyCustomEnv: false
migrateDatabaseJob:
  useHelmHooks: false
  applyCustomEnv: false

这是为了让这些 CI/CD 服务能够顺利执行更新并保留 Kubernetes Job manifest 的不变性。

如果您在 helm install 命令中使用 --wait 参数,这也适用。

注意

在使用 Argo 部署此 Helm Chart 时,您可能会遇到数据库迁移在升级时不会自动运行的问题。

要使用 Argo CD 自动运行数据库迁移,您需要添加

migrateDatabaseJob:
    jobAnnotations:
        "argocd.argoproj.io/hook": Sync

这将使数据库迁移在 Argo CD 中每次发生 Sync 事件时都运行。虽然在每次同步时都运行迁移并不理想,但这是一种权衡,可以使它们自动运行。

如果您使用内置 Redis 的 Celery(Kubernetes)Executor,建议您通过提供 redis.passwordSecretNamedata.brokerUrlSecretNameredis.password 来设置一个静态 Redis 密码。

默认情况下,Helm hook 也对 extraSecretsextraConfigMaps 启用。当使用上述 CI/CD 工具时,您可能会由于这些默认的 hook 而遇到问题。

为了避免潜在问题,建议通过设置 useHelmHooks=false 来禁用这些 hook,如下例所示

extraSecrets:
  '{{ .Release.Name }}-example':
    useHelmHooks: false
    data: |
      AIRFLOW_VAR_HELLO_MESSAGE: "Hi!"

extraConfigMaps:
  '{{ .Release.Name }}-example':
    useHelmHooks: false
    data: |
      AIRFLOW_VAR_HELLO_MESSAGE: "Hi!"

命名约定

对于新的安装,强烈建议开始使用标准命名约定。由于这可能会在现有安装上导致意外行为,因此默认情况下未启用它。但是,您可以通过使用 useStandardNaming 来启用它。

useStandardNaming: true

对于现有安装,您的所有资源将使用新名称重新创建,并且 helm 将删除之前的资源。

这不会删除 StatefulSets/Deployments 使用日志的现有 PVC,但会使用全新的 PVC 重新创建它们。如果您确实想保留日志历史记录,则需要在部署后手动将这些卷的数据复制到新卷中。根据您使用的存储后端/类,此过程可能会有所不同。如果您不介意从全新的日志/redis 卷开始,则可以直接删除旧的持久卷声明,例如

kubectl delete pvc -n airflow logs-gta-triggerer-0
kubectl delete pvc -n airflow logs-gta-worker-0
kubectl delete pvc -n airflow redis-db-gta-redis-0

注意

如果在升级后不更改 useStandardNamingfullnameOverride,您可以照常进行,不会出现意外行为。

此条目有帮助吗?