Tekton
Tekton 是一个功能非常强大而灵活的 CI/CD 开源的云原生框架。
Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pipeline 的功能,但是随着不同的功能加入到 Knative build 模块中,build 模块越来越变得像一个通用的 CI/CD 系统,于是,build-pipeline 被剥离除了 Knative,成了现在的 Tekton,而 Tekton 也从此成为了功能全面、标准化的云原生 CI/CD 解决方案。
Tekton 的特点:
-
可定制:Tekton 是完全可定制的,具有高度的灵活性,用户可以定义非常详细的构建块目录,在各种场景中使用。
-
可重复使用:Tekton 是完全可移植的,用户都可以使用给定的流水线并重用其构建块,可以使得开发人员无需"造轮子"就可以快速构建复杂的流水线。
-
可扩展:Tekton Catalog 是社区驱动的 Tekton 构建块存储库,用户可以使用 Tekton Catalog 中定义的组件快速创建新的流水线并扩展现有管道。
-
标准化:Tekton 在 Kubernetes 集群上作为扩展安装和运行,并使用完善的 Kubernetes 资源模型,Tekton 工作负载在 Kubernetes Pod 内执行。
-
伸缩性:要增加工作负载容量,只需添加新的节点到集群即可,Tekton 可随集群扩展,无需重新定义资源分配或对管道进行任何其他修改。
前提条件
已部署 Tekton Operator,具体请参考 安装 Operator 。
注意:如果希望在指定节点上部署 Tekton Operator,需先给节点添加可代表相关含义的键值对
标签
,待 Operator 部署成功后再
编辑订阅(Subscription)
以增加 nodeSelector 配置。例如以下 YAML 示例可用于表示只在 amd64 架构的节点上部署 Operator。
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: tekton-operator
spec:
config:
nodeSelector:
beta.kubernetes.io/arch: amd64 #节点标签注意事项
TektonPipeline 仅支持创建一个实例,且名称固定为 pipeline。
部署实例
-
在左侧导航栏中,单击 应用商店管理 > Operators。
-
在 已部署 Operators 页签中,单击 tekton-operator。
-
单击 TektonPipeline 实例卡片中的 创建实例。
-
配置 名称 、标签 等基本信息。
注意:创建 Tekton 实例时,实例名称必须为 pipeline,否则不能使用基于 Tekton 的构建功能。
-
可选:您可切换至 YAML 视图,通过修改 YAML 配置以下信息。
-
为 Deployment 增加 nodeSelector 配置:如果已经将 Tekton Operator 部署到了指定的节点上,请为 Deployment 增加 nodeSelector 配置。
-
配置高可用(highAvailability):避免因单个节点故障而影响实例及构建、流水线等相关功能使用异常。
-
配置资源配额(resource):通过增加
resources配置,为 Tekton 配置资源配额,避免因资源配额不足导致 Tekton 发生 OOM(Out of Memory)事件。
YAML 示例及说明如下:
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonPipeline metadata: annotations: cpaas.io/display-name: "" katanomi.dev/enable-api-fields-migrate: "true" labels: operator.tekton.dev/release-version: v0.62.0 name: pipeline spec: config: availability: deployments: - name: tekton-pipelines-remote-resolvers # Deployment 的名称 replicas: 2 # 指定 replicas 数,值大于 1 时,可实现实例高可用。优先级高于 high-availability.replicas containers: - name: controller # 容器名称 resource: limits: # 指定容器的 limits 详见: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ cpu: "1" memory: 250M requests: # 指定容器的 requests 详见: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ cpu: 300m memory: 100M env: # 指定容器中的环境变量,如果存在相同名称的环境变量则作替换,如果不存在,则 append 到已经存在的 env 中 - name: CONFIG_ARTIFACT_BUCKET_NAME value: config-artifact-bucket - name: KUBERNETES_MIN_VERSION value: 1.21.3 args: # 指定容器中 args,该参数会被 append 到容器中的 args 中 - -kubeconfig-writer-image - build-harbor.alauda.cn/devops/tektoncd/pipeline/cmd/kubeconfigwriter:v0.41.0-81c11835 highAvailability: replicas: 3 # 配置高可用,指定高可用副本数,值大于 1 时,可实现实例高可用。优先级低于 availability.deployments.replicas nodeSelector: # 为 deployment 增加 nodeSelector 配置 kubernetes.io/os: linux tolerations: # 为 deployment 配置容忍度 - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Exists - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists -
-
单击 创建。
-
在 资源实例 列表点击 pipeline 名称,进入详情页,切换到 YAML 视图,查看
status.version配置获取当前部署的 Tekton Pipelines 版本。 Tekton 相关能力介绍可参考 Tekton 官方文档 ,点击右上角 > Latest Versions > Other Versions > Pipelines,查看具体版本的组件能力内容。