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

如何在Helm的values.yaml中使用自定义Secret配置Airflow账号

解决Airflow Helm Chart通过K8s Secret传递默认用户账号密码的问题

问题根源

你配置的secret字段仅对Airflow核心容器(webserver、scheduler等)生效,create-user初始化Job的容器不在该范围内,导致WS_USER/WS_PW环境变量未被注入;同时Helm模板中直接写$(VAR)会被当成字面量传递,若未正确转义,bash无法解析环境变量。

正确配置步骤

1. 为create-user Job注入Secret环境变量

在values.yaml中添加createUserJob配置,将Secret中的账号密码注入到Job容器:

# 配置create-user Job的额外环境变量,从K8s Secret读取
createUserJob:
  extraEnv:
    - name: WS_USER
      valueFrom:
        secretKeyRef:
          name: webserverus
          key: user
    - name: WS_PW
      valueFrom:
        secretKeyRef:
          name: webserverpw
          key: password

2. 修改defaultUser配置,正确引用环境变量

由于Helm模板会解析$符号,需用$$转义为字面量$,让bash能正确解析环境变量:

defaultUser:
  enabled: true
  role: Admin
  username: "$$WS_USER"  # Helm渲染后变为$WS_USER,bash会解析为环境变量值
  email: admin@example.com
  firstName: User
  lastName: Test
  password: "$$WS_PW"

3. (可选)合并Secret简化配置

将用户名和密码合并到同一个Secret中,减少配置项:

kubectl create secret generic airflow-webserver-creds \
  --from-literal=user=test \
  --from-literal=password=123456

对应的values.yaml配置改为:

createUserJob:
  extraEnv:
    - name: WS_USER
      valueFrom:
        secretKeyRef:
          name: airflow-webserver-creds
          key: user
    - name: WS_PW
      valueFrom:
        secretKeyRef:
          name: airflow-webserver-creds
          key: password

验证部署

部署后执行以下命令检查:

# 查看create-user Pod的环境变量
kubectl exec <create-user-pod-name> -- env | grep -E "WS_USER|WS_PW"
# 查看Pod的命令参数
kubectl describe pod <create-user-pod-name> | grep -A 10 "Command:"

确认环境变量存在,且命令参数中显示$WS_USER和$WS_PW,此时bash会自动解析为Secret中的实际值,create-user Job即可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:15:35