前言
简介
1
2Tekton是一个强大、灵活的构建CI/CD流水线系统的开源框架,允许开发者构建、测试和发布应用。
Tekton是云原生的,通过CRD让用户快速灵活定义流水线。使用tekton的好处
1
2
3
4
5可定制:tekton实体是完全可定制的,从而具有高度的灵活性。
可重复使用:tekton实体完全可移植,因此一旦定义组织内任何人都可以使用给定的管道并重用其构造块。快速构建复杂的管道而无需重新造轮子。
可扩展:可使用tekton目录中的预制组件快色创建新的并展开现有管道。
标准化:tekton在k8s集群中作为扩展安装并运行。
缩放性:与集群进行缩放,无需重新定义资源分配或对管道的任何其他修改。组件
1
2
3
4
5
6
7tekton pipelines: tekton的基础,定义了一组CRD用于定义pipeline
tekton triggers: 允许基于event实例化pipeline,如git的PR请求
tekton cli: 提供命令行工具和tekton交互
tekton dashboard: 图形化界面展示pipeline信息
tekton catalog: 高质量,社区贡献的pipeline仓库
tekton hub: 图形化界面访问tekton catalog
tekton operator: 在k8s上安装、移除、更新tekton组件基本概念
1 | Tekton最重要的五个概念:Task、TaskRun、Pipeline、PipelineRun、PipelineResource |
安装
1 | # 官方文档 |
安装Dashboard
- yaml安装
1 | kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/release.yaml |
- ingress暴露服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tekon-dashboard
namespace: tekton-pipelines
spec:
ingressClassName: liykingress
rules:
- host: tekton.key1024.cn
http:
paths:
- backend:
service:
name: tekton-dashboard
port:
number: 9097
path: /
pathType: Prefix
创建任务
- 创建简单task
1 | # 创建个最简单task,使用alpine的镜像启动一个容器执行指定脚步 |
1 | # 创建taskrun来执行hello这个task |
1 | # 查看任务 |
- 创建pipeline调用task
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 创建名称goodbye的task
# goodbye-world.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: goodbye
spec:
steps:
- name: goodbye
image: ubuntu
script: |
#!/bin/sh
echo "Goodbye World!"
# 部署:kubectl apply -f goodbye-world.yaml
1 | # 创建并运行1个包含上述2个task的pipeline |
1 | # 创建pipelineRun对象来实例化一个pipeline,即运行这个pipeline |
1 | # 上述文件合并一起 |
- 简化task任务的pipeline
1 | # 上面定义的task比较累赘,可以在pipeline中内嵌定义task |
1 | #simple-multi-task-pipeline-run.yaml |