注:

为 Apache Airflow 创建 OCI DevOps 管道并使用 Helm 部署它

简介

这是六个部分教程系列的部分,其中展示了如何使用 Golang 微服务在 OKE 集群上部署一组临时资源,这些服务表示 OCI SDK、OCI-CLI、资源管理器、OCI DevOps 和 Helm 部署和销毁 Apache Airflow 的用法。

目标

在本教程中,您将了解如何为 Apache Airflow 创建 OCI DevOps 管道并使用 Helm 部署它。

先决条件

任务 1:为 Apache Airflow 创建 DevOps Artifact

在创建 DevOps 构建管道之前,需要创建将与构建结果(Helm 程序包和容器映像)连接的构件。

  1. 转到您为此教程创建的 OCI 注册表。

    T1_1

  2. 转到 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
      
      
  3. 重复步骤 2,并按如下方式填写流程信息。

    • 上下文:这是实施气流入站的 Kubernetes 清单。

    • 名称: airflow-namespace

    • 键入:Kubernetes 清单

    • Artifact 源:内嵌

    • 将以下内容粘贴到字段中:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: airflow
      
      
  4. 重复步骤 2,并按如下方式填写流程信息。

    • 上下文:这是 Helm 图表注册表位置。
    • 名称: helm-airflow
    • 类型:Helm 图表
    • Helm 图表 URL:oci://gru.ocir.io/yournamespace/airflow-helm/airflow
    • 版本: 8.6.1

    :记住要替换 OCI 注册表中的 yournamespace 。此注册表是在本教程的早期阶段创建的。

  5. 重复步骤 2,并按如下方式填写流程信息。

    • 上下文:这是气流部署的 Helm 值。

    • 名称: values-airflow-helm

    • 类型:一般对象

    • Artifact 源:内嵌

    • 将以下内容粘贴到字段中。这将强制部署到新的节点池。

      nodeSelector:
      name: extra_workload
      

此时,应具有以下构件。

T1_1

任务 2:为气流创建 DevOps 构建管道

系统信息库中没有任何代码,仅包含 build_spec.yaml 文件。这是因为我们将对 Apache Airflow 使用官方 Helm 图表。

  1. 转到 OCI DevOps 项目,单击代码资料档案库,然后创建一个名为 airflow-helm 的资料档案库。

    T2_1

  2. 单击克隆,然后记下您的存储库 ssh url

    T2_1

  3. 转到堡垒主机 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
    

    T2_3

    T2_3

    T2_3

任务 3:创建气流 - 机架的构建管道

  1. 转到 DevOps 项目,单击构建管道,然后单击创建构建管道

    T3_1

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

    T3_2

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

    T3_3

  4. 收集此气流饼图所需的保管库密钥。

    1. 在 Oracle 云控制台上,单击身份和安全性,单击 Vault ,然后选择您的 Vault。

    2. 获取在此教程的早期步骤中创建的 OCIRUserOCIRToken 密钥的 OCID。

      T3_4

  5. 转到 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”

    T3_5

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

    T3_6 T3_6

任务 4:创建气流 -helm 的部署管道

  1. 转到 DevOps 项目,单击部署管道,然后创建一个名为 airflow-helm-deploy 的新管道。

    T4_1

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

    T4_2

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

    T4_3

    T4_3

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

    T4_4

    T4_4

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

    T4_5

    T4_5

    T4_5

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

T4_5

任务 5:配置 go-microservice 参数

现在,我们需要将 go-microservice 配置为能够触发最近为 Airflow 创建的构建管道。

  1. 转到 DevOps 项目,单击构建管道并记下 airflow-helm 构建管道的 OCID。

    T5_1

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

    T5_2

    T5_2

  3. go-microservice 代码内设置变量。

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

    • 获取 OCI 代码资料档案库的 go-microservice ssh url。

      T5_3_1

    • 打开堡垒 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   
      

      T5_3_1

    • 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
      

      T5_3_1

    • 现在,我们需要将更改推送到代码资料档案库:

       git add .
       git commit -m "added new variables"
       git push
      
      

      T5_3_1

  4. 转到 DevOps 项目,选择构建管道,然后单击 go-microservice-pipeline

    1. 单击开始手动运行,以便为 go-microservice 重新执行构建管道,并确保配置图上的更改生效并注入正在运行的容器内。

      T5_3_1

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

      T5_3_1

您的微服务现已准备就绪!

后续步骤

要继续执行此学习路径中的下一个教程,请单击此处

确认

更多学习资源

探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心