kubernetes - 从 KubernetesPodOperator (Airflow) 使用 kubernetes secret
问题描述
我正在 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 ?
在文档中找不到任何有价值的资源...
解决方案
因为您将 deploy_type 指定为 env,所以气流会将您选择的秘密添加到容器的环境中。
您有多种从环境中读取的选项。通过默认库的方式是 os.environ ,它为您提供当前环境变量的字典。
导入操作系统
print(os.environ['SQL_CONN']) 但是,如果您想以这种方式进行配置,还有其他选项。我们使用 dynaconf 进行气流部署,它为您提供了一个设置对象,您可以从中读取环境变量,只要它们是使用 DYNACONF_ 前缀制作的。
推荐阅读
- selenium - 每次更改页面时抓取页面
- modelica - 我如何使用“fmi2GetDirectionalDerivative”?
- javascript - 使用 php 和 ajax 验证字段并使用部分
- amazon-web-services - 时间范围内的 Cloudwatch 警报
- android - 如何让应用程序从 Flutter 中的任何键盘读取贴纸、GIF 等
- git - 推送失败后如何撤消提交?
- c# - C#中的.net HttpClient:重新实例化时出现异常
- java - 当我单击鼠标时,我试图让我的三角形自己重绘,但是当我单击鼠标时它们只会相乘
- python - Beautifoulsoup 刮谷歌
- python - 替换 Unicode 符号