首页 / 平台管理 / 应用商店管理 / Operators / 使用 Operator / Tekton

Tekton

Tekton 是一个功能非常强大而灵活的 CI/CD 开源的云原生框架。

Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pipeline 的功能,但是随着不同的功能加入到 Knative build 模块中,build 模块越来越变得像一个通用的 CI/CD 系统,于是,build-pipeline 被剥离除了 Knative,成了现在的 Tekton,而 Tekton 也从此成为了功能全面、标准化的云原生 CI/CD 解决方案。

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。

部署实例

  1. 在左侧导航栏中,单击 应用商店管理 > Operators

  2. 已部署 Operators 页签中,单击 tekton-operator

  3. 单击 TektonPipeline 实例卡片中的 创建实例

  4. 配置 名称标签 等基本信息。

    注意:创建 Tekton 实例时,实例名称必须为 pipeline,否则不能使用基于 Tekton 的构建功能。

  5. 可选:您可切换至 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
  6. 单击 创建

  7. 资源实例 列表点击 pipeline 名称,进入详情页,切换到 YAML 视图,查看 status.version 配置获取当前部署的 Tekton Pipelines 版本。 Tekton 相关能力介绍可参考 Tekton 官方文档 ,点击右上角 > Latest Versions > Other Versions > Pipelines,查看具体版本的组件能力内容。