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

Terraform升级Helm部署的Airflow时遇fernet-key缺失错误求助

解决Airflow Helm Chart升级时"airflow-fernet-key"缺失问题

问题原因

从Helm Chart 8.2.0(对应Airflow 2.0.1)升级到13.0.0(对应Airflow 2.3.3)时,新版本Chart会强制检查名为airflow的Secret中是否存在airflow-fernet-key密钥——该密钥用于加密Airflow的敏感数据(如连接配置),而旧版本Chart无此强制要求,导致升级流程中断。

解决步骤

1. 检查现有Secret状态

执行命令确认目标Secret是否包含所需密钥:

kubectl get secret airflow -o jsonpath='{.data["airflow-fernet-key"]}'

若返回空值,说明Secret中确实缺少该密钥,需进行后续操作。

2. 生成Fernet密钥

使用Python生成符合Airflow要求的Fernet密钥:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

复制输出的字符串,此为后续使用的有效Fernet密钥。

3. 更新或创建Secret

若Secret已存在,直接添加密钥:

# 生成并编码密钥
FERNET_KEY=$(python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
ENCODED_KEY=$(echo -n "$FERNET_KEY" | base64)

# 补丁更新Secret
kubectl patch secret airflow -p "{\"data\": {\"airflow-fernet-key\": \"$ENCODED_KEY\"}}"

若Secret不存在,直接创建:

FERNET_KEY=$(python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
kubectl create secret generic airflow --from-literal=airflow-fernet-key="$FERNET_KEY"

4. 优化Terraform配置(可选但推荐)

为避免后续升级再次出现该问题,在Terraform的helm_release资源中显式指定Fernet密钥配置:

resource "helm_release" "airflow" {
  # 保留原有配置...
  values = [
    yamlencode({
      airflow = {
        config = {
          fernetKey = "your-generated-fernet-key" # 替换为实际生成的密钥,建议用Terraform变量管理
        }
      }
      # 其他values配置项...
    })
  ]
}

注意:密钥请勿硬编码,建议使用Terraform变量或专业密钥管理工具存储。

5. 重新执行Terraform升级

terraform plan
terraform apply

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:15:27