Tekton 是水线一个用于创建持续集成和持续交付(CI/CD)系统的 Kubernetes 原生开源框架。通过对底层实施细节的编写抽象,它还可以帮助你在多个云供应商或企业内部系统中进行端到端(构建、水线测试、编写部署)应用开发。水线
Tekton 最初被称为 Knative Build,编写后来被重组为独立的水线开源项目,有自己的编写 治理组织,现在是水线属于 Linux 基金会 的项目。Tekton 提供了一个集群内的编写容器镜像构建和部署工作流程,换句话说,水线它是编写一个 持续集成continuous integration(CI)和 持续交付continuous delivery(CD)服务。它由 Tekton 流水线和几个支持组件如 Tekton CLI、水线Triggers 和 Catalog 等组成。编写
Tekton 是一个 Kubernetes 原生应用。它在 Kubernetes 集群中作为扩展被安装和运行,由一套Kubernetes 定制化资源组成,定义了你为流水线创建和复用的构建块。由于 Tekton 是一种 Kubernetes 原生技术,所以它非常容易扩展。当你需要增加你的工作负载时,你只需向你的集群添加节点就可以了。由于其可扩展的设计和社区贡献的组件库,它也很容易定制。
对于需要 CI/CD 系统来开展工作的开发人员,和为其组织内的开发人员建立 CI/CD 系统的平台工程师,Tekton 是理想选择。
构建 CI/CD 流水线的过程非常复杂,因此 Tekton 为每一步都提供工具。以下是 Tekton 提供的主要组件:
tkn
的命令行界面,你可以使用它从终端与 Tekton 进行交互。Tekton terminology
Tekton pipelines
开始使用 Tekton 的最简单方法是自己编写一个简单的流水线。如果你每天都在使用 Kubernetes,那你可能对 YAML 很熟悉,这正是 Tekton 流水线的定义方式。下面是一个克隆代码库的简单流水线的例子。
首先,创建一个 task.yaml
文件,用你喜欢的文本编辑器打开它。这个文件定义了你要执行的 步骤Step。在这个例子中,就是克隆一个仓库,所以我把这个步骤命名为 “clone”。该文件设置了一些环境变量,然后使用一个简单的 shell 脚本来执行克隆。
接下来是 任务Task。你可以把步骤看作是一个被任务调用的函数,而任务则设置步骤所需的参数和工作空间。
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: git-clone
spec:
workspaces:
- name: output
description: The git repo will be cloned onto the volume backing this Workspace.
params:
- name: url
description: Repository URL to clone from.
type: string
- name: revision
description: Revision to checkout. (branch, tag, sha, ref, etc...)
type: string
default: ""
steps:
- name: clone
image: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.21.0"
env:
- name: PARAM_URL
value: $(params.url)
- name: PARAM_REVISION
value: $(params.revision)
- name: WORKSPACE_OUTPUT_PATH
value: $(workspaces.output.path)
script: |
#!/usr/bin/env sh
set -eu
CHECKOUT_DIR="${ WORKSPACE_OUTPUT_PATH}"
/ko-app/git-init \
-url="${ PARAM_URL}" \
-revision="${ PARAM_REVISION}" \
-path="${ CHECKOUT_DIR}"
cd "${ CHECKOUT_DIR}"
EXIT_CODE="$?"
if [ "${ EXIT_CODE}" != 0 ] ; then
exit "${ EXIT_CODE}"
fi
# Verify clone is success by reading readme file.
cat ${ CHECKOUT_DIR}/README.md
创建第二个文件 pipeline.yaml
,并用你喜欢的文本编辑器打开它。这个文件通过设置诸如可以运行和处理任务的工作区等重要参数来定义流水线。
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: cat-branch-readme
spec:
params:
- name: repo-url
type: string
description: The git repository URL to clone from.
- name: branch-name
type: string
description: The git branch to clone.
workspaces:
- name: shared-data
description: |
This workspace will receive the cloned git repo and be passed
to the next Task for the repo's README.md file to be read.
tasks:
- name: fetch-repo
taskRef:
name: git-clone
workspaces:
- name: output
workspace: shared-data
params:
- name: url
value: $(params.repo-url)
- name: revision
value: $(params.branch-name)
最后,创建一个 pipelinerun.yaml
文件,用喜欢的文本编辑器打开它。这个文件真正的运行流水线。它调用流水线中定义的参数(继而调用任务文件中定义的任务)。
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: git-clone-checking-out-a-branch
spec:
pipelineRef:
name: cat-branch-readme
workspaces:
- name: shared-data
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
params:
- name: repo-url
value: <https://github.com/tektoncd/pipeline.git>
- name: branch-name
value: release-v0.12.x
把不同工作分在不同的文件中的好处是,git-clone
任务可以在多条流水线中复用。
例如,假设你想为一个流水线项目做端到端的测试。你可以使用 git-clone
任务 来让每一次测试都基于最新的代码。
只要你熟悉 Kubernetes,那 Tekton 对你来说就像其他 Kubernetes 原生应用一样简单。它有很多工具可以帮助你创建流水线并与之交互。如果你喜欢自动化,不妨试试 Tekton!
责任编辑:庞桂玉 来源: Linux中国 开源Tekton(责任编辑:探索)
宝威控股(00024.HK)年度扭亏为盈至540.6万港元 每股基本及摊薄盈利0.11港仙
恒瑞医药与美国Elevar Therapeutics公司就注射用卡瑞利珠单抗签署授权许可协议
恒信东方(300081.SZ)公布消息:向85名激励对象授予1188万股第二类限制性股票