繁体   English   中英

如何为 Apache Beam/Dataflow 经典模板(Python)和数据管道实现 CI/CD 管道

[英]How to implement a CI/CD pipeline for Apache Beam/Dataflow classic templates (Python) & data pipelines

在 Python 中为 Apache Beam/Dataflow 经典模板和管道实施 CI/CD 构建过程的最佳方法是什么? 我只找到了 Java 的教程,其中包括工件注册表 + Cloud Build,但很少有任何针对 Python 的深入教程。我想了解在 Github 回购中开发管道的“最佳实践”方法,然后一个 CI/CD 管道,可以自动执行暂存模板和启动工作。

这篇 Medium 帖子是更有帮助的高级演练之一,但没有深入探讨让所有工具协同工作: https://medium.com/posh-engineering/how-to-deploy-your- apache-beam-pipeline-in-google-cloud-dataflow-3b9fe431c7bb

我在 GitLab 中使用带有 CI/CD 管道的光束/数据流管道。 这些是我的 CI/CD 管道所遵循的步骤:

在我的.gitlab-ci.yml文件中,我提取了一个google/cloud-sdk Docker 图像,它使用 python3.8 和 gcloud 工具的基本要素创建了一个环境。

之后,我运行管道的单元测试和集成测试。 成功后,我尝试使用gcloud builds submit命令构建一个 flex 模板(在您的情况下,您想构建一个经典模板)。

此外,如果您想在所有这些之后自动加快工作,您有两个选择:

  • 从 CI 管道的 Docker 容器中使用命令行运行管道
  • 或者,由于您已经为管道创建了模板,您可以使用 HTTP 请求来触发它

是的,对我来说,Medium 帖子实际上涵盖了大部分内容,并帮助我构建了我的 CI 管道。

这些是我的阶段:

  • Infra - Terraform 用于先决条件 GCP infra
  • 构建 - pip -r requirements.txt 和其他任何东西。
  • 测试 - 单元、集成、端到端。 稍后我将使用产品数据样本实施性能测试。
  • 安全检查 - 秘密扫描,SAST
  • SonarQube 用于 SCA
  • 将模板和元数据(均为手动)部署到 PoC、其他环境和 Prod。 我使用标准模板。
  • 运行作业(手动)- 使用 DirectRunner 运行作业以进行快速测试的操作,以及使用gcloud dataflow jobs run ${JOB_NAME}...的数据流运行器的另一个作业。

对于大多数步骤,我使用 python:3.10 图像作为默认图像(我在使用 Python 3.11 安装 apache-beam 依赖项时遇到了问题),并使用 google/cloud-sdk alpine 作为 gcloud 步骤。

我们还需要考虑其他事项,例如停止数据流作业和回滚到以前工作的数据流模板的操作(需要将多个模板上传到 GCS)。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM