Airflow 2 Helm Chart如何引用K8s Secret配置MySQL连接串
你之前尝试修改的env配置段仅支持硬编码字面量值,是Chart模板渲染层面做的限制,要将已创建Secret中的MySQL连接串注入所有部署容器,可使用以下三种官方原生支持的配置方式:
方案1:全局
envFrom批量注入Secret全量键值
如果你存储连接串的Secret中,键名与Airflow识别的环境变量名AIRFLOW__DATABASE__SQL_ALCHEMY_CONN完全一致,可直接配置全局envFrom字段,该配置会对Chart部署的所有工作负载(Webserver、Scheduler、Worker、Triggerer、K8s Pod Operator拉起的任务Pod)生效,配置示例:envFrom: - secretRef: name: <替换为你提前创建的Secret资源名称>如果Secret中存在其他不需要注入的冗余键,或键名与Airflow要求的环境变量名不匹配,使用第二种方案更合适。
方案2:全局
extraEnv精准引用Secret指定键
官方Chart预留的extraEnv全局配置段完全兼容标准K8s环境变量的所有配置属性,支持valueFrom字段引用外部资源,可以精准指定注入的环境变量名称、关联的Secret与对应键,配置同样对全量容器生效:extraEnv: - name: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN valueFrom: secretKeyRef: name: <替换为你的Secret资源名称> key: <替换为Secret中存储MySQL连接串对应的键名> optional: false注意:该配置不要写入你之前找到的
env数组中,env字段仅接受字面量value输入,extraEnv为直接透传给Pod模板的原生字段,无该限制。方案3:按组件粒度单独配置(非全量注入场景)
如果你不需要将数据库连接串注入所有容器,仅需要给核心组件(如Scheduler、Webserver)配置,可在对应组件的独立配置段下添加extraEnv或envFrom,以Scheduler组件为例:scheduler: extraEnv: - name: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN valueFrom: secretKeyRef: name: <替换为你的Secret资源名称> key: <替换为连接串对应的键名>Webserver、Worker、Triggerer、初始化Job等组件均支持相同的
extraEnv、envFrom配置字段。
配置校验完成后,执行
helm upgrade命令更新Helm发行版即可生效。注意不要同时在Chart内置的data.metadataConnection配置段重复配置数据库连接,避免出现配置覆盖问题。在GKE Autopilot环境对接Cloud SQL时,请提前确认Workload Identity或Cloud SQL Auth Proxy配置正常,保证Airflow组件网络可连通Cloud SQL实例的3306端口。
内容的提问来源于stack exchange,提问作者Rohit Shisode

