微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从任何 Airflow 任务中获取 K8s 的秘密

如何解决从任何 Airflow 任务中获取 K8s 的秘密

我们有一个 Airflow(Celery 执行器)设置,可以在我们的 K8s 集群上运行任务。使用 KubernetesPodoperator 的任务可以访问 K8s 机密 as described in the documentation。其余任务在 K8s 集群之外的 Celery 工作进程上运行。

使用其他运算符(例如,sqlSensor)的任务如何访问与使用 KubernetesPodoperator 的任务相同的 K8s 机密?

解决方法

您可以将机密作为卷或变量映射到您的 Worker Pod 中,它们将可用于所有任务 - 无论是作为特定目录还是作为环境变量。

您只需修改 Helm Chart(或您使用的任何部署)即可使用它们。

,

如果您需要在 MWAA 和 K8s 之间传递机密,我建议使用外部机密管理器。

AWS Secrets Manager 可由 MWAA 和 K8S 本地使用。 https://docs.aws.amazon.com/mwaa/latest/userguide/connections-secrets-manager.html https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html

Hashicorp Vault 是另一种选择。

需要注意的一点是不要将 Secrets 作为变量传递给 KubernetesPodOperator


我们的解决方案是使用 ECS operator 在 AWS Fargate 上实际运行 MWAA 任务

https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/operators/ecs.html

根据 ECS 任务定义共享机密并用作环境变量。开发人员有一个简单的 YAML 配置文件,用于定义来自 AWS Secrets Manager 的 ECS 任务和关联的机密,Terraform 会根据此 YAML 处理管理任务定义。对于我们的特定用例,它运行起来非常顺畅。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。