开源技术 * IBM 微讲堂:Kubeflow 系列(观看回放 | 下载讲义) 了解详情

IBM Developer 博客

通过 IBM Developer 关注最新动态并获取信息

探索 Red Hat OpenShift Pipelines 的主要功能并了解如何执行流水线。


在本博客文章中,我将介绍 OpenShift Pipelines,这是 Red Hat OpenShift 4 中新增的一个有趣功能。我首先会回顾 DevOps,然后直接开始介绍 OpenShift Pipelines(解释它是什么以及如何实现它)。

DevOps 回顾

顾名思义,DevOps 是一种促进开发者 (dev) 团队与运维 (ops) 团队之间合作的方法。通过 DevOps 方法,您可以更轻松地处理项目,因为它可以促进业务线之间的敏捷和精益软件交付。

CI/CD 流水线是 DevOps 流程的主干,这是一个迭代过程,包括以下内容:

  • 持续集成 (CI):持续集成侧重于编码、构建、集成和测试。
  • 持续部署或持续交付 (CD):持续部署侧重于尽快安全地自动执行发布(如修复错误和添加新功能),而持续交付可以包括 CI,但主要侧重于产品发布。

在 CI/CD 流水线过程中,首先是进行更改并将更改推送到存储库,然后是构建和测试代码,最后是复审、部署和交付给用户。这是一个迭代过程,每次进行更改和更新时都会执行此过程。

经证明,DevOps 方法是成功的,因为它改善了团队之间的协作,加快了执行更改和修复错误的速度,让您能够在几分钟时间内部署应用程序。通过使用 DevOps 方法,团队可以自动完成任务并确保自动执行相同的步骤,因此能够自信地完成部署。最后,团队可以自动测试代码,然后再将代码部署到特定的环境中。

云原生 DevOps

当您听到云原生 DevOps 一词时,您可能首先会认为它是基于云的;但它实际上是指使用了由容器和 Kubernetes 提供的自动化和可扩展性。

云原生 DevOps 涉及持续改进、自动化、跨功能团队合作,以及在考虑客户期望的情况下更好地满足业务需求。

尽管被称为“云原生”,但是项目不一定要部署在云上,它们也可以部署在本地或虚拟服务器上。它主要关注的是原则和过程,而不是项目的部署位置。云原生 DevOps 的特征包括:

  • 流水线中的每个任务都有自己的生命周期(换句话说,在执行时,它是在自己的容器中运行)
  • 专为容器应用程序而构建,且在 Kubernetes 上运行
  • 设计时考虑了微服务和分布式团队

Tekton 是构建云原生流水线的公认工具之一。Tekton 是一种 Kubernetes 开源框架,旨在快速构建云原生 CI/CD 流水线。借助 Tekton,您可以轻松地跨多个云提供商或混合环境部署项目。

OpenShift Pipelines

OpenShift Pipelines 是一种基于 Tekton 的操作程序,可用于构建 Kubernetes 样式的 CI/CD。借助 OpenShift Pipelines,可以在各自的容器中运行 CI/CD 流水线的每一个步骤。您还可以根据流水线需求来单独缩放流水线的每一个步骤。OpenShift Pipelines 建立在 Tekton 构建块的基础上,通过与 OpenShift 和 Red Hat 开发者工具进行紧密集成来提供 CI/CD 体验。

OpenShift Pipelines 提供了多种功能,例如:

  • Kubernetes 样式的流水线:使用可在 Kubernetes 分发版之间进行移植的标准 Kubernetes 自定义资源定义 (CRD) 来创建流水线。
  • 无服务器运行:可以在不需要使用 CI/CD 服务器进行管理或维护的情况下创建和运行流水线。
  • 可部署到多个平台:虽然流水线是在 Kubernetes 上运行,但是可以从流水线部署到多个 Kubernetes、虚拟机和无服务器平台。
  • 使用 Kubernetes 工具构建镜像:您可以使用 Source-to-Image (S2I)、Buildah 和 Dockerfiles、Jib、Kaniko 等工具来构建镜像。
  • 开发者工具:您可以使用 CLI 工具与流水线进行交互,并与 OpenShift 开发者控制台和 IDE 插件进行集成。

下图显示了 Tekton 流水线的组件,这些组件与 OpenShift 流水线中的组件相同。如图所示,流水线由一个或多个要执行的任务组成。任务包含多个要执行的步骤,例如,构建容器镜像或将更改推送到项目,并且任务可以重用。PipelineResource 是流水线或任务的输入和输出。执行流水线实例时,您将获得 PipelineRun,而 PipelineRun 由多个 TaskRun 组成。

CI/CD 流水线过程

要创建流水线,您需要执行以下步骤:

  • 创建或安装任务。
  • 创建流水线和 PipelineResource 以定义应用程序的交付流水线。
  • 创建 PipelineRun 以实例化并调用流水线。
  • Tekton 交付流水线是在 YAML 文件中创建的,这些文件将流水线定义为一组 Kubernetes 资源。您可以编辑这些 YAML 文件来更改流水线的行为。下面是简单流水线的 YAML 文件的代码段。
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: mypipeline

  tasks:
  -name: task1
    taskRef:
      name: task1
    workspaces:
    - name: source
      workspace: shared-workspace
  -name: task2
    taskRef:
      name: task2
    workspaces:
    - name: source
      workspace: shared-workspace
    params:
    - name: deployment
      value: $(params.deployment-name)
    - name: IMAGE
      value: $(params.IMAGE)
    runAfter:
    - task1

上面的代码段举例说明了 CI/CD 流水线的外观。在流水线中,您使用 taskRef 来引用已安装在名称空间中的任务,并提供诸如名称、参数和资源(每个任务的输入和输出)之类的信息。runAfter 是指应在当前任务之前运行的任务。

您可以编写自己的 YAML 文件,也可以在创建应用程序来构建自己的流水线时生成该文件。构建流水线时,流水线概览如下所示:

CI/CD 流水线过程

创建流水线后,您可以触发它以执行流水线中指定的任务。 如果您想尝试使用 OpenShift Pipelines,我强烈建议您阅读 Openshift 对应的构建用于部署 Node.js 应用程序的 CI/CD Tekton 流水线教程。

结束语

在本博客文章中,您了解了 DevOps、云原生 DevOps 以及 OpenShift Pipelines 的功能(包括其组件以及如何执行流水线)。

这标志着本系列博客文章的结束,也标志着 OpenShift 开发之旅的开始。在本系列博客文章中,您学习了 OpenShift 4 中关于架构、操作程序、Web 控制台和流水线的基本概念。当然,OpenShift 还有许多其他功能,我希望本系列博客文章能够为您打开通往 OpenShift 云原生世界的大门。可以从此处查看 IBM Cloud 上的 Red Hat OpenShift 以获取更多帮助资源。

本文翻译自:OpenShift 101: OpenShift Pipelines(2020-10-14)