Tekton 是一个功能强大且灵活的 Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统。通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建、测试和部署。
本文是基于阿里云Kubernetes服务部署Tekton Pipeline,并使用它完成源码拉取、应用打包、镜像推送和应用部署的实践过程。
Tekton Pipeline中有5类对象,核心理念是通过定义yaml定义构建过程.构建任务的状态存放在status字段中。
其中5类对象分别是:PipelineResouce、Task、TaskRun、Pipeline、PipelineRun。
Task是单个任务的构建过程,需要通过定义TaskRun任务去运行Task。
Pipeline包含多个Task,并在此基础上定义input和output,input和output以PipelineResource作为交付。
PipelineResource是可用于input和output的对象集合。
同样地,需要定义PipelineRun才会运行Pipeline。
1. 在阿里云Kubernetes集群中部署Tekton Pipeline
查看Tekton Pipelines组件是否运行正常:
2. 创建Git Resource, Registry Resource
编辑 git-pipeline-resource.yaml :
git repo的分支名称为 tekton 。
编辑 registry-pipeline-resource.yaml :
容器镜像仓库地址为 registry.cn-hangzhou.aliyuncs.com/haoshuwei/tekton-demo, 标签为 latest
创建pipeline resource:
查看已创建的pipeline resource资源:
3. 创建Git Repo/Docker Registry Authentication
拉取私有git源码项目需要配置使用Git Repo Authentication;拉取和推送docker镜像需要配置Docker Registry Authentication。在Tekton Pipeline中,Git Repo/Docker Registry Authentication会被定义成ServiceAccount来使用。
编辑 secret tekton-basic-user-pass-git.yaml :
编辑 secret tekton-basic-user-pass-registry.yaml :
编辑 serviceaccount tekton-git-and-registry.yaml :
创建serviceaccount:
查看secret以及sa:
4. 配置serviceaccount tekton-git-and-registry获取命名空间tekton-pipelines的管理权限用于部署应用
创建ClusterRoleBinding tekton-cluster-admin :
5. 创建一个Task
创建task build-app.yaml :
6. 创建TaskRun运行任务
创建taskrun build-app-task-run.yaml :
7. 查看构建状态以及日志
查看taskrun状态:
查看构建日志:
mvn build的日志:
docker build的日志:
app-deploy的日志:
taskrun的完成状态为True则构建部署过程完成:
8. 小结
Tekton Pipeline中任务模板可以拿来复用,而不需要重复定义,另外通过CRD重新定义CI/CD是一大亮点,初学者可能会觉得有些绕。
持续实验持续更新中。
本文作者:流生
本文为云栖社区原创内容,未经允许不得转载。