【问题标题】:Airflow config from Vault secrets not working保险柜机密中的气流配置不起作用
【发布时间】:2021-07-29 01:00:33
【问题描述】:

我有一个 Airflow 应用程序与 Vault 一起在 kubernetes 中运行。我已经在使用 Vault 来管理某些 Airflow Connections 并且它工作正常(这证明与 Vault 的连接工作正常)。

我现在正在尝试通过 here 提到的 Vault 配置 Airflow 的配置 core.sql_alchemy_conncelery.result_backendcelery.broker_url

在我的values.yaml 我有

secrets_backend_kwargs:
  auth_type: 'kubernetes'
  kubernetes_role: 'role-id'
  connections_path: 'applications/secrets/airflow/connections/'
  config_path: 'applications/secrets/airflow/config/'

config:
  core:
    sql_alchemy_conn_secret: "sql_alchemy_conn"
  celery:
    broker_url_secret: 'broker_url_conn'
    result_backend_secret: 'result_backend_conn'
  secrets:
    backend: 'airflow.providers.hashicorp.secrets.vault.VaultBackend'
    backend_kwargs: '{{ .Values.secrets_backend_kwargs | toJson }}'

在我的保管库中,我将正确编码的 URI (postgresql%2Bpsycopg2%3A%2F%2Fblahblahblah...) 存储在正确的位置:

现在,当我部署应用程序时,run-airflow-migration 作业在验证配置时失败并出现 AirflowConfigException。

# AirflowConfigException
error: cannot use sqlite with the CeleryExecutor

这意味着它没有从 Vault 中选择 postgres 数据库连接设置并使用 Airflow 配置中的 sqlite 设置。

我也尝试过在容器的变量中提供这些配置。

env:
  - name: VAULT_ADDR
    value: 'https://path.to.vault/'
  - name: AIRFLOW__CORE__SQL_ALCHEMY_CONN_SECRET
    value: 'sql_alchemy_conn'
  - name: AIRFLOW__CELERY__BROKER_URL_SECRET
    value: 'broker_url_conn'
  - name: AIRFLOW__CELERY__RESULT_BACKEND_SECRET
    value: 'result_backend_conn'

我可以在容器中看到这些环境变量,但是由于迁移作业中的错误,部署失败。

我通过更改秘密后端 kwargs 中的 config_path 验证了 Vault 路径和连接性,如果我更改它,我仍然可以到达 Vault,但由于密钥/连接 ID 不存在于不正确的路径上,所以我收到错误从保险库。这意味着当我将 _secret 设置为配置时,应用程序正在到达 Vault 以获取值但不更新或使用该值。

我不知道我错过了什么。

【问题讨论】:

    标签: kubernetes airflow hashicorp-vault


    【解决方案1】:

    配置设置为秘密后端中的变量,而我将它们设置为以conn_uri 为键的连接。

    官方文档中没有说清楚,只能通过代码找到解决方法。

    所以在以正确的方式放置我的配置后(安装点是 secretconfig_pathapplications/secrets/airflow/config/),它工作了。

    vault kv put secret/applications/secrets/airflow/config/sql_alchemy_conn value=postgresql://user:pass@host:5432/db
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多