使用KubernetesPodOperator的kubernetes秘密(气流)

使用KubernetesPodOperator的kubernetes秘密(气流),kubernetes,google-cloud-platform,airflow,google-kubernetes-engine,google-cloud-composer,Kubernetes,Google Cloud Platform,Airflow,Google Kubernetes Engine,Google Cloud Composer,我正在Google Cloud Composer上设置气流环境进行测试。我在名称空间中添加了一些秘密,它们显示得很好 secret_token = secret.Secret( deploy_type='env', deploy_target='SQL_CONN', secret='m-secrets', key='token') YESTERDAY = datetime.datetime.now() - datetime.timedelta(days=1)

我正在Google Cloud Composer上设置气流环境进行测试。我在名称空间中添加了一些秘密,它们显示得很好

secret_token = secret.Secret(
    deploy_type='env',
    deploy_target='SQL_CONN',
    secret='m-secrets',
    key='token')

YESTERDAY = datetime.datetime.now() - datetime.timedelta(days=1)

with models.DAG(
        dag_id='composer_set_controlm_secret_kubernetes_pod',
        schedule_interval=datetime.timedelta(days=1),
        start_date=YESTERDAY) as dag:

  kubernetes_secret_vars_ex = kubernetes_pod_operator.KubernetesPodOperator(
        task_id='ex-kube-secrets',
        name='ex-kube-secrets',
        image='eu.gcr.io/$PROJECT/$DOCKER_IMG:latest',
        namespace='default',
        cmds=['python'],
        arguments=['call_api.py'],
        secrets=[secret_token]
  )
如上所述,我正在运行一个调用我的call_api.py程序的docker映像,我想打印通过KubernetesPodOperator传递的秘密,如下所示:

调用api.py


在文档中找不到任何有价值的资源…

因为您将deploy\u type指定为env,airflow会将您选择的机密添加到容器的环境中

您有多个从环境中读取的选项。通过默认库的方式是os.environ,它为您提供了当前环境变量的字典

导入操作系统

打印(os.environ['SQL\u CONN'])
但是,如果您想以这种方式进行配置,还有其他选项。我们在气流部署中使用dynaconf,它为您提供了一个设置对象,您可以从中读取环境变量,只要这些变量具有dynaconf前缀。

您需要在调用_api.py中打印机密吗?根据,您可以使用
kubectl descripe secrets/your secret
访问机密。
if __name__ == '__main__':
print($secret_token) ====> how can I do this ?