在 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 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/27100/48331108

posted @   哈哈哈来了啊啊啊  阅读(216)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示