1

我们有一个 Airflow(Celery 执行器)设置,可以在我们的 K8s 集群上运行任务。使用 KubernetesPodOperator 的任务可以访问 K8s 机密,如文档中所述。其余任务在 K8s 集群之外的 Celery 工作人员上运行。

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

4

2 回答 2

1

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

MWAA 和 K8S 可以原生使用 AWS Secrets Manager。 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 运算符在 AWS Fargate 上实际运行 MWAA 任务

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

每个 ECS 任务定义共享机密并用作环境变量。开发人员有一个简单的 YAML 配置文件,用于从 AWS Secrets Manager 定义 ECS 任务和关联的密钥,Terraform 处理基于此 YAML 的任务定义管理。对于我们的特定用例,它非常顺利。

于 2021-08-09T07:37:06.270 回答
1

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

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

于 2021-07-27T08:58:34.350 回答