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
此任务启动 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 或更高版本。