在K8s Helm中配置Airflow SSL证书参数报错求助
问题描述
在Kubernetes环境中使用Helm 3.2.10部署Apache Airflow 2.6.2,已通过命令kubectl create secret generic web-cert-and-key --from-file=server.key --from-file=server.crt创建证书密钥Secret,尝试在Values.yaml中通过env字段配置web_server_ssl_cert和web_server_ssl_key以映射到airflow.cfg,配置内容如下:
env: - name: web_server_ssl_cert valueFrom: secretKeyRef: name: web-cert-and-key key: server.crt - name: web_server_ssl_cert valueFrom: secretKeyRef: name: web-cert-and-key key: server.key
执行Helm升级时出现Schema校验错误:
Error: UPGRADE FAILED: values don't meet the specifications of the schema(s) in the following chart(s): airflow: - webserver.env.0: value is required - webserver.env.0: Additional property valueFrom is not allowed - webserver.env.1: value is required - webserver.env.1: Additional property valueFrom is not allowed
正确配置方式
1. 挂载证书Secret到Webserver容器
在Values.yaml中为webserver添加额外的Volume和VolumeMount,将Secret挂载到容器内的指定路径:
webserver: extraVolumes: - name: web-cert-volume secret: secretName: web-cert-and-key extraVolumeMounts: - name: web-cert-volume mountPath: /opt/airflow/ssl/ readOnly: true
2. 配置Airflow Webserver的SSL参数
通过webserver.config字段直接设置airflow.cfg中的SSL相关参数,指向挂载的证书文件路径:
webserver: config: web_server_ssl_cert: "/opt/airflow/ssl/server.crt" web_server_ssl_key: "/opt/airflow/ssl/server.key"
3. (可选)调整Service端口
如果需要对外暴露HTTPS服务,可调整webserver的Service配置,将端口映射为443:
webserver: service: port: 443 targetPort: 8080
核心原因说明
原配置错误的本质是Airflow Helm Chart的Schema规定webserver.env仅支持name和value字段,不允许使用valueFrom引用Secret。因此必须通过挂载Secret到容器路径,再在Airflow配置中指定路径的方式实现SSL配置。
内容的提问来源于stack exchange,提问作者Samson Eromonsei
相关产品推荐
相关产品推荐

