【发布时间】:2022-08-24 02:14:11
【问题描述】:
我正在使用带有 Airflow 2.1.4 的 Google Cloud Composer 1.17.7。 我主要关注these docs。
我创建了一个 Kubernetes 机密,如下所示:
apiVersion: v1
data:
KEY1: base64encodedvalue1
KEY2: base64encodedvalue2
KEY3: base64encodedvalue3
...
KEYN: base64encodedvalueN
kind: Secret
metadata:
creationTimestamp: \"2021-12-13T12:58:03Z\"
name: airflow-secrets
namespace: default
resourceVersion: \"*****\"
uid: *****
type: Opaque
要加载此密钥并将其在 Airflow 中用作环境变量,在我看来,我必须为 K8s 密钥中包含的每个密钥创建一个 airflow.kubernetes.secret.Secret 对象。
secret_env1 = Secret(
deploy_type=\'env\',
deploy_target=\'KEY1\',
secret=\'airflow-secrets\',
key=\'KEY1\')
secret_env2 = Secret(
deploy_type=\'env\',
deploy_target=\'KEY2\',
secret=\'airflow-secrets\',
key=\'KEY2\')
...
secret_envN = Secret(
deploy_type=\'env\',
deploy_target=\'KEYN\',
secret=\'airflow-secrets\',
key=\'KEYN\')
当有很多键要使用时,这变得很麻烦。 我想出了一个 for 循环解决方案,它仍然迫使我指定所有需要的键:
secret_envvars = [
\'KEY1\',
\'KEY2\',
\'KEY3\',
...
\'KEYN\'
]
secret_envs = [
Secret(
deploy_type=\'env\',
secret=\'airflow-secrets\',
deploy_target=var,
key=var,
) for var in secret_envvars]
我想知道是否有一种方法可以在 Airflow 中加载 K8s 机密的所有密钥,而无需显式指定密钥。例如,能够以编程方式访问 K8s 密钥中包含的所有密钥的列表(类似于 k8sSecret.keys().
-
上面的链接能回答你的问题吗?
-
我不明白该方法如何解决我的问题,为什么不使用代码 sn-p 演示如何使用它来回答呢?
标签: kubernetes kubernetes-secrets airflow-2.x