Loading

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 工作原理

Tekton workflow

Tekton Resources

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 get ns

kubectl api-resources | grep tekton

kubectl api-resources

kubectl get pod -n tekton-pipelines

kubectl get pod

运行 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 如何描述

参考网站

posted @ 2021-06-04 14:11  Sirius-Wang  阅读(176)  评论(0编辑  收藏  举报