Tekton Demo
简要介绍 Tekton 的安装和使用
环境要求
-
Kubernetes: version > 1.18
-
Able to access tekton yaml
-
you need a VPN
背景知识
关于Tekton
Tekton 是一个强大、灵活的构建 CI/CD 流水线系统的开源框架,允许开发者构建、测试和发布应用。Tekton 是云原生的,通过定义 CRD ,让用户快速灵活定义流水线。
Tekton 好处
-
可定制的:Tekton实体是完全可定制的,从而具有高度的灵活性。平台工程师可以定义非常详细的构建基目录,以供开发人员在各种情况下使用
-
可重复使用的:Tekton实体是完全可移植的,因此一旦定义,组织内的任何人都可以使用给定的管道并重用其构造块。这使开发人员可以快速构建复杂的管道,而无需“重新发明轮子”。
-
可扩展的:Tekton Catalog是Tekton社区驱动的存储库。您可以使用Tekton目录中的预制组件快速创建新的并展开现有管道。
-
标准化:Tekton在您的Kubernetes集群上作为扩展安装并运行,并使用完善的Kubernetes资源模型。 Tekton工作负载在Kubernetes容器中执行。
-
缩放性:为了增加工作负载容量,您可以简单地将节点添加到群集。 Tekton与您的群集进行缩放,无需重新定义您的资源分配或对管道的任何其他修改
Tekton 中组件
-
Tekton 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组件的项目
Tekton基本概念
Tekton 最重要的五个概念:Task、TaskRun、Pipeline、PipelineRun、PipelineResources
- Task:Tekton中的最小单元,代表一个任务模板,包括多个步骤。每一个操作定义为Task中的一个step
- Pipeline:多个 Task 组成的有向无环图,定义了流水线的模板
- PipelineRun:Pipeline 真正执行时需要定义一个PipelineRun,作为流水线的实例,生成一条流水线记录
- TaskRun:Task 真正执行的实例,记录任务状态。一个TaskRun 会创建一个对应的 Pod,每个 step 对应 pod 中的一个 container
- PipelineResource:流水线执行过程中需要的资源信息
Q&A
-
task & taskrun
-
pipeline & pipelinerun
-
why not have taskResources
Tekton 工作原理
Tekton Pipelines提供了上面的CRD,其中部分CRD与k8s core中资源相对应
- Task => Pod
- Task.Step => Container
Tekton 安装
Must-have: Tekton piplines
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
Tekton CLI -- You need it for running tekton pipelines
choco install tektoncd-cli --confirm
Nice-to-have: Tekton dashboard & Tekton Triggers
kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml
kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml
检查 tekton相关的CRD(Custom resources definition)
kubectl get ns
kubectl api-resources | grep tekton
kubectl get pod -n tekton-pipelines
运行 Tekton helloworld
执行步骤一览
-
create task.yaml
apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: echo-hello-world spec: steps: - name: echo image: alpine command: - echo args: - "hello world"
-
create taskrun.yaml
apiVersion: tekton.dev/v1alpha1 kind: TaskRun metadata: name: echo-hello-world-task-run spec: taskRef: name: echo-hello-world
-
run kubectl --> run task in tekton
kubectl apply -f task.yaml
-
run tkn taskrun
tkn taskrun describe echo-hello-world-task-run
-
view log
tkn taskrun logs echo-hello-world-task-run
-
view in dashboard
Create tirgger with github repo
Q & A
-
Event & Tekton pipeline 怎么绑定的
-
Task 的实现, 有没有一定的规范或者文档。 task 如何描述