1.3. OpenShift Pipeline 概念详情

本指南提供了对管道(Pipeline)概念的详细论述。

1.3.1. 任务(Task)

任务(Task) 是 Pipeline 的构建块,它由带有一定顺序的执行步骤组成。任务(Task)可以重复使用,并可用于多个 Pipelines。

步骤(Step)是一系列实现特定目标的命令,如构建镜像。每个任务都作为 pod 运行,每个步骤都在同一个 pod 内自己的容器中运行。由于步骤在同一个 pod 中运行,所以它们可以访问同一卷来缓存文件、ConfigMap 和 Secret。

以下示例显示了 apply-manifests 任务。

apiVersion: tekton.dev/v1beta1 1
kind: Task 2
metadata:
  name: apply-manifests 3
spec: 4
  params:
  - default: k8s
    description: The directory in source that contains yaml manifests
    name: manifest_dir
    type: string
  steps:
  - args:
    - |-
      echo Applying manifests in $(inputs.params.manifest_dir) directory
      oc apply -f $(inputs.params.manifest_dir)
      echo -----------------------------------
    command:
    - /bin/bash
    - -c
    image: quay.io/openshift/origin-cli:latest
    name: apply
    workingDir: /workspace/source
  workspaces:
  - name: source
1
任务 API 版本 v1beta1
2
指定 Kubernetes 对象的类型。在此例中,Task
3
此任务的唯一名称。
4
列出任务中的参数和步骤,以及任务使用的工作区(workspace)。

此任务启动 pod,并在这个 pod 中使用 maven:3.6.0-jdk-8-slim 镜像运行一个容器,来运行指定的命令。它接收了一个名为 workspace-git 的输入目录,其中包含应用程序的源代码。

该任务仅声明了 Git 存储库的占位符,并没有指定要使用哪个 Git 存储库。这将允许此任务被重复用于多个管道和目的。

警告

Red Hat OpenShift Pipelines 1.3 及更早版本的技术预览 (TP) 允许用户在验证安全上下文约束 (SCC) 的情况下创建任务。因此,任何经过身份验证的用户都可以使用通过特权 SCC 运行的容器来创建一个任务。

为了避免在生产环境中出现此类安全问题,请不要使用 TP 中的 Pipelines 版本。反之,请考虑将 Operator 升级到通用版本,如 Pipelines 1.4 或更高版本。