【问题标题】:Consume kubernetes secret from KubernetesPodOperator (Airflow)从 KubernetesPodOperator (Airflow) 使用 kubernetes secret
【发布时间】:2021-02-26 19:10:00
【问题描述】:

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

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 传递的秘密,如下所示:

call_api.py

if __name__ == '__main__':
print($secret_token) ====> how can I do this ?
  

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

【问题讨论】:

  • 您需要在 call_api.py 中打印秘密吗?根据documentation,您可以使用kubectl describe secrets/your-secret 访问机密。

标签: kubernetes google-cloud-platform airflow google-kubernetes-engine google-cloud-composer


【解决方案1】:

因为您将 deploy_type 指定为 env,airflow 会将您选择的机密添加到容器的环境中。

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

导入操作系统

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

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多