【发布时间】:2021-07-29 01:00:33
【问题描述】:
我有一个 Airflow 应用程序与 Vault 一起在 kubernetes 中运行。我已经在使用 Vault 来管理某些 Airflow Connections 并且它工作正常(这证明与 Vault 的连接工作正常)。
我现在正在尝试通过 here 提到的 Vault 配置 Airflow 的配置 core.sql_alchemy_conn、celery.result_backend 和 celery.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