前提
对于Tekton Pipelines v0.11.0或更高版本,Kubernetes集群的版本为1.15或更高,或者对于Tekton v0.11.0之前的版本,Kubernetes集群的版本为1.11或更高。
在集群中启用基于角色的访问控制 (RBAC)。
授予当前用户
cluster-admin
角色。
安装(Installation)
要安装Tekton的核心组件Tekton Pipelines,请运行以下命令。
# 官方:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
# 国内:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/Tekton/v0.31.0/release.yaml
如果你的容器运行时不支持image-reference:tag@digest
(例如,像OpenShift 4.x中使用的cri-o),则使用release.notags.yaml
代替。
# 官方:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.notags.yaml
# 国内:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/Tekton/v0.31.0/release.notags.yaml
注意
此命令会自动安装Tekton核心组件Tekton Pipelines的最新官方版本。如果您想安装以前的版本,请使用
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/YOUR-VERSION/release.yaml
用你喜欢的版本替换YOUR-VERSION。你可以在GitHub上找到Tekton官方版本的完整列表。
安装完成可能需要一些时间,可以使用以下命令检查进度:
kubectl get pods --namespace tekton-pipelines
确认列出的每个组件都是Running
状态。
持久卷(Persistent volumes)
要运行CI/CD工作流,你需要为Tekton提供一个用于存储的持久卷。Tekton 默认会请求一个具有默认存储类别的 5Gi 卷。您可能需要手动创建。请注意,Tekton的性能可能因您选择的存储选项而有所不同。
注意
你可以用下面的命令检查可用的持久性卷和存储类别。
kubectl get pv kubectl get storageclasses
如果您想配置持久化卷Tekton请求的大小和存储类别,可以通过更新默认的config-artifact-pvc
configMap。此 configMap 包括两个属性。
size
: 卷的大小storageClassName
: 卷的存储类别的名称
下面的例子要求Tekton在运行工作流时,手动存储类请求一个10Gi的持久卷。
kubectl create configmap config-artifact-pvc \
--from-literal=size=10Gi \
--from-literal=storageClassName=manual \
-o yaml -n tekton-pipelines \
--dry-run=client | kubectl replace -f -
另外,除非另有配置,否则Tekton会使用Kubernetes集群中的默认服务账户;如果您想覆盖,请更新ConfigMap config-defaults
的default-service-account
属性。
kubectl create configmap config-defaults \
--from-literal=default-service-account=YOUR-SERVICE-ACCOUNT \
-o yaml -n tekton-pipelines \
--dry-run=client | kubectl replace -f -
设置CLI
为方便起见,建议将 Tekton CLI tkn
与 Tekton 的核心组件 Tekton Pipelines 一起安装。
Linux
Fedora, CentOS 和 其他基于rpm
的安装方式:
先到Tekton释放下载对应的包。
然后安装
rpm -Uvh tektoncd-cli-0.21.0_Linux-64bit.rpm
更多安装方式:https://tekton.dev/docs/getting-started/#set-up-the-cli
使用Tekton的第一个CI/CD工作流程
使用Tekton,CI/CD工作流程中的每个操作都成为一个步骤(Step)
,用你指定的容器镜像执行。然后将步骤组织到任务中,在集群中作为Kubernetes pod运行。你可以进一步将任务组织到管道(Pipelines)
中,管道可以控制几个任务
的执行顺序。
要创建一个任务
,使用Tekton API创建一个Kubernetes对象,其类型为任务(Task)
。下面的YAML文件指定了一个具有简单步骤的任务,该任务使用Ubuntu官方镜像来打印一句Hello World!
。
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello
spec:
steps:
- name: hello
image: ubuntu
command:
- echo
args:
- "Hello World!"
将上述YAML写入一个名为task-hello.yaml
的文件,并将其应用于你的Kubernetes集群。
kubectl apply -f task-hello.yaml
要用Tekton运行这个任务,你需要创建一个TaskRun
,这是另一个Kubernetes对象,用于指定任务的运行时间信息。
要查看此 TaskRun
对象,可运行以下 Tekton CLI (tkn
) 命令。
tkn task start hello --dry-run
运行上述命令后,应显示以下TaskRun
定义:
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: hello-run-
spec:
taskRef:
name: hello
要使用上面的TaskRun
来启动 "echo任务",你可以使用tkn
或kubectl
。
用tkn
开始:
tkn task start hello
用kubectl
开始:
# 使用 tkn 的 --dry-run 选项,将 TaskRun 保存到一个文件中
tkn task start hello --dry-run > taskRun-hello.yaml
# 创建TaskRun
kubectl create -f taskRun-hello.yaml
Tekton 现在将开始运行您的任务
。要查看最后一次TaskRun
的日志,请运行以下 tkn
命令:
tkn taskrun logs --last -f
任务
可能需要一些时间才能完成。 当它执行时,它应该显示以下输出:
[hello] Hello World!