注:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的那些值。
为 Apache Airflow 创建 OCI DevOps 管道并使用 Helm 部署它
简介
这是六个部分教程系列的五部分,其中展示了如何使用 Golang 微服务在 OKE 集群上部署一组临时资源,这些服务表示 OCI SDK、OCI-CLI、资源管理器、OCI DevOps 和 Helm 部署和销毁 Apache Airflow 的用法。
目标
在本教程中,您将了解如何为 Apache Airflow 创建 OCI DevOps 管道并使用 Helm 部署它。
先决条件
- 完成此学习路径中的上一教程第 4/6 部分 - 创建 OCI DevOps 管道以构建和部署 Golang 微服务
任务 1:为 Apache Airflow 创建 DevOps Artifact
在创建 DevOps 构建管道之前,需要创建将与构建结果(Helm 程序包和容器映像)连接的构件。
-
转到您为此教程创建的 OCI 注册表。

-
转到 DevOps 项目页,单击对象,然后单击添加构件。如下所述填写信息。
-
上下文:这是实施气流入站的 Kubernetes 清单。
-
名称: airflow-ingress
-
键入:Kubernetes 清单
-
Artifact 源:内嵌
-
将以下内容粘贴到值字段中。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: generation: 1 name: airflow-ingress namespace: airflow spec: ingressClassName: nginx rules: - host: ${APP_HOST} http: paths: - backend: service: name: airflow-web port: number: 8080 path: / pathType: ImplementationSpecific
-
-
重复步骤 2,并按如下方式填写流程信息。
-
上下文:这是实施气流入站的 Kubernetes 清单。
-
名称: airflow-namespace
-
键入:Kubernetes 清单
-
Artifact 源:内嵌
-
将以下内容粘贴到值字段中:
apiVersion: v1 kind: Namespace metadata: name: airflow
-
-
重复步骤 2,并按如下方式填写流程信息。
- 上下文:这是 Helm 图表注册表位置。
- 名称: helm-airflow
- 类型:Helm 图表
- Helm 图表 URL:oci://gru.ocir.io/yournamespace/airflow-helm/airflow
- 版本: 8.6.1
注:记住要替换 OCI 注册表中的 yournamespace 。此注册表是在本教程的早期阶段创建的。
-
重复步骤 2,并按如下方式填写流程信息。
-
上下文:这是气流部署的 Helm 值。
-
名称: values-airflow-helm
-
类型:一般对象
-
Artifact 源:内嵌
-
将以下内容粘贴到值字段中。这将强制部署到新的节点池。
nodeSelector: name: extra_workload
-
此时,应具有以下构件。

任务 2:为气流创建 DevOps 构建管道
系统信息库中没有任何代码,仅包含 build_spec.yaml 文件。这是因为我们将对 Apache Airflow 使用官方 Helm 图表。
-
转到 OCI DevOps 项目,单击代码资料档案库,然后创建一个名为 airflow-helm 的资料档案库。

-
单击克隆,然后记下您的存储库
ssh url。
-
转到堡垒主机 shell 终端,下载文件 build_spec.yaml 并将其推送到您自己的 OCI 代码资料档案库。
cd $HOME git clone <your ssh code repository> wget https://docs.us.oracle.com/en/learn/resource-manager-airflow-oke-part5/files/build_spec.yaml git add . git commit -m "new build spec added" git push


任务 3:创建气流 - 机架的构建管道
-
转到 DevOps 项目,单击构建管道,然后单击创建构建管道。

-
单击添加新阶段,然后选择托管构建类型。

-
选择 "Primary Code"(主要代码)系统信息库,然后选择 airflow-helm 。

-
收集此气流饼图所需的保管库密钥。
-
在 Oracle 云控制台上,单击身份和安全性,单击 Vault ,然后选择您的 Vault。
-
获取在此教程的早期步骤中创建的 OCIRUser 和 OCIRToken 密钥的 OCID。

-
-
转到 DevOps 项目,单击构建管道,为 airflow-helm 选择您的构建管道,然后单击参数选项卡并添加以下参数:
参数名称 值 VAULT_HELM_REPO_USER 获取注册表用户的 Vault 密钥 OCID OCIRUser VAULT_USER_AUTH_TOKEN 获取注册表令牌 OCIRToken 的 Vault 密钥 OCID COMPARTMENT_ID 获取区间 OCID HELM_REPO gru.ocir.io HELM_REPO_URL oci://gru.ocir.io/your_namespace/airflow-helm APP_HOST airflow.superocilab.com 注:请确保在 REPO URL 上正确设置了您的区域。在本教程中,它是 “gru.ocir.io”。

-
单击构建管道选项卡,然后单击启动手动运行以手动执行构建管道。

任务 4:创建气流 -helm 的部署管道
-
转到 DevOps 项目,单击部署管道,然后创建一个名为 airflow-helm-deploy 的新管道。

-
创建新阶段以在 OKE 中创建新名称空间,选择将清单应用于您的 Kubernetes 集群。

-
创建新阶段以在 OKE 中安装气流,选择将清单应用于您的 Kubernetes 集群。


-
创建新阶段以在 OKE 中为气流创建入站,选择将清单应用于您的 Kubernetes 集群。由于我们设置了压力控制器从 OKE 外部访问微服务,因此还需要设置气流。


-
更新气流构建管道并将触发器添加到部署。要在构建管道完成后自动启动部署,需要在 airflow-helm 构建管道上添加触发器。



您的构建管道现在应该如下所示。

任务 5:配置 go-microservice 参数
现在,我们需要将 go-microservice 配置为能够触发最近为 Airflow 创建的构建管道。
-
转到 DevOps 项目,单击构建管道并记下 airflow-helm 构建管道的 OCID。

-
在 Oracle 云控制台上,单击资源管理器下的开发人员服务,单击堆栈,选择 CLI 附加节点堆栈并记下 OCID 。


-
在 go-microservice 代码内设置变量。
注:go-microservices 是将与 OCI 资源交互的一段代码。由于我们刚刚为气流创建了构建管道,因此我们需要让微服务知道它需要调用的构建管道。为此,我们将对将在 OKE 的容器内注入的配置映射值进行一些更改。
-
获取 OCI 代码资料档案库的 go-microservice ssh url。

-
打开堡垒 jump-box shell 控制台,然后从 go-microservice 代码系统信息库编辑
configmap/values.yaml文件。cd $HOME rm -rf go-microservice git clone your_repo_ssh_url cd go-microservice vi chart-go-microservice/configmap/values.yaml
-
在
configmap/values.yaml文件末尾添加以下新变量。ENV_RM_STACK_ID: "<paste your stack ocid>" ENV_DEVOPS_BUILD_ID: "<paste your build pipeline ocid" -
检查文件的最后 3 行,并确保添加了最后两个变量。
tail -3 chart-go-microservice/configmap/values.yaml
-
现在,我们需要将更改推送到代码资料档案库:
git add . git commit -m "added new variables" git push
-
-
转到 DevOps 项目,选择构建管道,然后单击 go-microservice-pipeline 。
-
单击开始手动运行,以便为 go-microservice 重新执行构建管道,并确保配置图上的更改生效并注入正在运行的容器内。

-
然后检查由此构建管道触发的部署管道。

-
您的微服务现已准备就绪!
后续步骤
要继续执行此学习路径中的下一个教程,请单击此处。
相关链接
确认
- 作者 - Joao Tarla(Oracle LAD A-Team 解决方案工程师)
更多学习资源
探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Create OCI DevOps pipelines for Apache Airflow and deploy it using Helm
F79811-01
April 2023
Copyright © 2023, Oracle and/or its affiliates.