在 eks 上安装 Airflow
在 eks 上安装 Airflow
本指南将引导您在 amazon eks 集群(即托管的 k8s 集群)上彻底安装 apache-airflow。
该设置包括您想要的 python 版本和使用带有 Keda autoscaling 的 Celerykubernetes 执行器,以及使用 Gitsync 来获取您的 DAG。
您只需要一个 EKS 集群和一个 aws alb 控制器,这样您就可以从集群外部访问气流。
(我已经使用 eksctl 来启动集群,如果配置正确,这非常容易并且可以投入生产)
链接在底部。
首先从官方下载值文件 气流舵图网站 :
download the Default values
现在我们将介绍重要的价值观:
气流图像和版本:
在这个例子中,我使用了 python 3.10 气流图像(气流对于大多数 python 3 版本 3.7-3.10 和 python2 都有一个 docker 图像,如果你真的需要它......)
链接到 docker 图像 气流支持并提供:
you can use pullPolicy ifNotPresent if you don’t want k8s to alway pull the image and use cache
因此,您需要适应您想要的 python 版本,只需选择正确的图像,例如 2.3.0-python3.9 将为您提供 python 3.9 。
使用 SSL 证书的下一个入口配置:
您需要安装 aws alb 控制器(底部的链接)
注意路径类型——它需要是前缀
并且证书需要在 aws 证书管理器中,您将需要可以从 aws 控制台复制的证书的 ARN。
此配置将为负载均衡器提供健康检查和证书,该证书将直接指向您的气流网络服务器。
(如果您不需要 https,只需删除证书注释和侦听端口注释,默认为端口 80,因此您不需要它)
下一个数据库配置:
(如果你想使用默认的 Postgresql DB 跳过这个,虽然不推荐用于生产):
您将需要一个正在运行的带有 Postgres 的 RDS 实例,该实例启动起来相当简单,只需记住数据库的凭据是什么(如果您想安装自己的,我想它的工作方式相同)
这里有两个选项
1-使用包含用户/密码的 K8s 机密
2- 只需在图表配置中使用用户名/密码,当您想将代码添加到 git 时,这很简单但很烦人。
第一个选项:
如果您还没有创建一个,那么您将需要在气流命名空间中创建两个秘密(是的两个,因为气流的 resultBackendSecretName 需要不同的 URI)现在就这样做:
kubectl 创建 ns 气流
现在将您的用户密码获取到数据库并创建两个秘密:
kubectl 创建秘密通用气流元数据库 - from-literal=connection=postgresql://yourusername: [email protected] :5432 -n 气流
和:
kubectl create secret generic airflow-metabase-backend — from-literal=connection=db+postgresql://yourusername: 你的密码@ 您的用户名: [email protected] :5432 -n 气流
配置值文件:
配置您的 Fernet 密钥:
使用 python3 生成一个:
从 cryptography.fernet 导入 Fernet
fernet_key = Fernet.generate_key()
print(fernet_key.decode()) # 你的 fernet_key
烧瓶网络服务器密钥:
使用 python 生成一个:
` 导入机密
secret_key = secrets.token_hex(16)
示例输出,secret_key = 000d88cd9d90036ebdd237eb6b0db000`
启用 Keda 进行自动缩放并配置图表:
(如果您的 eks 集群链接中没有安装 Keda):
helm repo 添加 kedacore https://kedacore.github.io/charts
掌舵回购更新
kubectl 创建命名空间 keda
helm install keda kedacore/keda \
— 命名空间 keda \
— 版本“v2.0.0”
persistence enabled needs to be set to false
日志记录(我为此使用了 s3 存储桶)
所以首先在您的帐户中创建一个存储桶。
-
- pod 启动后,您需要在气流中添加一个名为 aws_s3_conn 的连接(使用 IAM 角色时,无需添加凭证 - 如果您不使用 IAM 角色,则需要添加 aws 密钥 ID 和 Secret)
配置图表:
Git同步:
我使用了 ssh 密钥:
所以首先生成一个 ssh 密钥并将公钥添加为部署密钥(当您将其添加到 Github 或您使用的任何 git 服务器时,只需要读取访问权限)
ssh-keygen -t rsa -b 4096 -C “[email protected]”
现在将私钥转换为 base 64
base64
在 gitSshKey 之后创建一个包含基本 64 密钥的 yaml 文件:
api版本:v1
种类:秘密
元数据:
名称:airflow-ssh-secret
数据:
gitSshKey: xxxxxxxxxxxx
和:
kubectl apply -f yamlfile.yaml -n 气流
现在配置图表:
配置秘密和已知的主机文件:
ssh-keyscan -t rsa github.com — 获取 Github 的 knownHosts 值
安装图表:
首先添加回购
helm repo 添加 apache-airflow https://airflow.apache.org
现在安装它:
helm upgrade — 安装气流 apache-airflow/airflow -f values.yaml
我不是!
链接:
安装 eks 集群(如果您还没有):
https://eksctl.io/usage/creating-and-managing-clusters/
官方气流舵图:
[
气流 1.6.0 · apache-airflow/apache-airflow
用于部署 Apache Airflow 的官方 Helm 图表,这是一个以编程方式编写、调度和监控的平台……
artifacthub.io
](https://artifacthub.io/packages/helm/apache-airflow/airflow)
官方 aws alb 控制器安装指南:
[
安装 AWS 负载均衡器控制器插件
AWS 负载均衡器控制器管理 Kubernetes 集群的 AWS 弹性负载均衡器。控制器规定……
docs.aws.amazon.com
](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通