You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Airflow Helm覆盖默认PostgreSQL凭据?

问题

我正在使用官方Airflow Helm测试新的LocalKubernetesExecutor特性,需要实现以下需求:

  • 由Helm拉起PostgreSQL容器
  • 修改该容器的凭据、用户名及数据库名

我尝试在配置中覆盖postgresql字段:

postgresql:
  enabled: true
  postgresqlPassword: airflow
  postgresqlUsername: airflow

但配置未生效。获取创建的连接并解码base64字符串:

kubectl get secret airflow-airflow-metadata -o json

返回结果:

{
    "apiVersion": "v1",
    "data": {
        "connection": "cG9zdGdyZXNxbDovL3Bvc3RncmVzOnBvc3RncmVzQGFpcmZsb3ctcG9zdGdyZXNxbC5haXJmbG93OjU0MzIvcG9zdGdyZXM/c3NsbW9kZT1kaXNhYmxl"
    },
    "kind": "Secret",
    "metadata": {
        "annotations": {
            "meta.helm.sh/release-name": "airflow",
            "meta.helm.sh/release-namespace": "airflow"
        },
        "creationTimestamp": "2022-11-20T20:14:30Z",
        "labels": {
            "app.kubernetes.io/managed-by": "Helm",
            "chart": "airflow",
            "heritage": "Helm",
            "release": "airflow",
            "tier": "airflow"
        },
        "name": "airflow-airflow-metadata",
        "namespace": "airflow",
        "resourceVersion": "7643",
        "uid": "14fff962-aec8-4862-b598-4ae3dbeca26f"
    },
    "type": "Opaque"
}

解码连接字符串:

echo cG9zdGdyZXNxbDovL3Bvc3RncmVzOnBvc3RncmVzQGFpcmZsb3ctcG9zdGdyZXNxbC5haXJmbG93OjU0MzIvcG9zdGdyZXM/c3NsbW9kZT1kaXNhYmxl | base64 -D

得到:

postgresql://postgres:postgres@airflow-postgresql.airflow:5432/postgres?sslmode=disable

请问:使用官方Airflow Helm时,能否覆盖PostgreSQL的用户、密码及数据库名?具体如何操作?

解决方案

可以覆盖,之前的配置遗漏了关键的数据库名字段,且未同步更新Airflow的元数据连接配置,导致未生效。具体操作如下:

1. 完整配置示例

创建自定义values文件(如custom-airflow-values.yaml),包含以下配置:

# 配置PostgreSQL容器的自定义参数
postgresql:
  enabled: true
  postgresqlUsername: airflow       # 自定义用户名
  postgresqlPassword: airflow       # 自定义密码
  postgresqlDatabase: airflow_db    # 自定义数据库名

# 同步配置Airflow的元数据连接,关联上述PostgreSQL参数
airflow:
  metadataConnection:
    user: "{{ .Values.postgresql.postgresqlUsername }}"
    password: "{{ .Values.postgresql.postgresqlPassword }}"
    db: "{{ .Values.postgresql.postgresqlDatabase }}"

2. 应用配置

执行Helm安装/升级命令,加载自定义配置文件:

# 首次安装
helm install airflow apache-airflow/airflow -f custom-airflow-values.yaml -n airflow --create-namespace

# 已安装则执行升级
helm upgrade airflow apache-airflow/airflow -f custom-airflow-values.yaml -n airflow

3. 验证配置生效

重新获取并解码元数据连接secret:

kubectl get secret airflow-airflow-metadata -o jsonpath='{.data.connection}' | base64 -D

输出的连接字符串应包含你自定义的用户名、密码和数据库名。

关键说明

仅修改postgresql字段只会更新PostgreSQL容器的配置,但Airflow默认会使用postgres默认用户和数据库名,因此必须显式配置airflow.metadataConnection,将Airflow的元数据连接与自定义的PostgreSQL参数绑定,才能让Airflow使用新的凭据和数据库。

内容的提问来源于stack exchange,提问作者Marin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:50:47