• Tekton — 通过tekton-operator部署tekton组件



    Tektoncd Operator 作为一个 Kubernetes 的扩展,可以方便快捷地在 Kubernetes 集群上安装、升级和管理 Tekton Pipelines、Dashboard、Triggers 等组件。

    那么本篇文章介绍在K8S集群中如何通过tekton-operator部署Tekton组件。

    版本信息

    K8S: v1.28.2
    tekton-operator: v0.68.1

    部署准备

    官方已提供部署文件链接,可自行查找所需版本下载 => https://github.com/tektoncd/operator/releases

    https://storage.googleapis.com/tekton-releases/operator/previous/v0.68.1/release.yaml
    
    • 1

    由于网络原因,我们是无法直接使用官方提供gcr.io镜像,因此需要提前准备好镜像并push到自己的私有仓库。

    并且我们还要替换掉release.yaml里所有的gcr.io的镜像:
    找到release.yaml里的tekton-operator-lifecycle容器,在环境变量里添加如下内容。
    环境变量名规范是:{前缀}_{容器名/参数名}

    			- name: IMAGE_PIPELINES_PROXY
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/operator/cmd/kubernetes/proxy-webhook:v0.68.1
                - name: IMAGE_PIPELINES_TEKTON_EVENTS_CONTROLLER
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/events:v0.50.3
                - name: IMAGE_PIPELINES_WEBHOOK
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/webhook:v0.50.3
                - name: IMAGE_PIPELINES_CONTROLLER
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/resolvers:v0.50.3
                - name: IMAGE_PIPELINES_TEKTON_PIPELINES_CONTROLLER
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/controller:v0.50.3
                - name: IMAGE_PIPELINES_ARGS__ENTRYPOINT_IMAGE
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/entrypoint:v0.50.3
                - name: IMAGE_PIPELINES_ARGS__NOP_IMAGE
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/nop:v0.50.3
                - name: IMAGE_PIPELINES_ARGS__SIDECARLOGRESULTS_IMAGE
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/sidecarlogresults:v0.50.3
                - name: IMAGE_PIPELINES_ARGS__WORKINGDIRINIT_IMAGE
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/pipeline/cmd/workingdirinit:v0.50.3
                - name: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CORE_INTERCEPTORS
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/triggers/cmd/interceptors:v0.25.2
                - name: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CONTROLLER
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/triggers/cmd/controller:v0.25.2
                - name: IMAGE_TRIGGERS_WEBHOOK
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/triggers/cmd/webhook:v0.25.2
                - name: IMAGE_TRIGGERS_ARG__EL_IMAGE
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/triggers/cmd/eventlistenersink:v0.25.2
                - name: IMAGE_CHAINS_TEKTON_CHAINS_CONTROLLER
                  value: registry.cloud-devops.com/tekton-releases/github.com/tektoncd/chains/cmd/controller:v0.17.1
                - name: IMAGE_JOB_PRUNER_TKN
                  value: registry.cloud-devops.com/tekton-releases/dogfooding/tkn
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在配置文件中,有如下配置。AUTOINSTALL_COMPONENTS控制tekton-operator在部署完成是否自动部署tekton组件。DEFAULT_TARGET_NAMESPACE指定组件所属命名空间。

    apiVersion: v1
    data:
      AUTOINSTALL_COMPONENTS: "true"
      DEFAULT_TARGET_NAMESPACE: tekton-pipelines
    kind: ConfigMap
    metadata:
      labels:
        operator.tekton.dev/release: devel
      name: tekton-config-defaults
      namespace: tekton-operator
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果AUTOINSTALL_COMPONENTSfalse,在operator部署成功后,需要我们手动触发tekton组件的部署。
    在tekton-operator中有个TektonConfig的自定义资源,创建其他组件的顶级 CRD。
    当我们创建自己所需的 TektonConfig 对象后,operator会根据配置中的profile字段帮助我们安装相应的其他组件。

    Tekton Operator 内置了 3 个 profile:lite、all、basic

    ProfileInstalled ComponentPlatform
    litePipelineKubernetes, Openshift
    basicPipeline, Trigger, ChainsKubernetes, Openshift
    allPipeline, Trigger, Dashboard, ChainsKubernetes
    Pipeline, Trigger, Addons, Pipelines as Code, ChainsOpenshift
    # To install pipelines, triggers, chains and dashboard (use profile 'all')
    $ kubectl apply -f https://raw.githubusercontent.com/tektoncd/operator/main/config/crs/kubernetes/config/all/operator_v1alpha1_config_cr.yaml
    
    
    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all     
      targetNamespace: tekton-pipelines   # 指定命名空间
      pruner:
        resources:  # 指定可以自动清理的资源
        - pipelinerun
        - taskrun
        keep: 100  # 清理时要保留的最大资源数
        schedule: "0 8 * * *"  # 清理资源的频率
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    安装

    1. 部署tekton-operator

       $ kubectl create -f release.yaml
      
      • 1

      查看部署结果:

      $ kubectl get pod -n tekton-operator
      
      • 1

      在这里插入图片描述

    2. 部署tekton组件
      如果AUTOINSTALL_COMPONENTSfalse执行这个命令。否则跳过,tekton会自动部署组件。

      $ kubectl create -f operator_v1alpha1_config_cr.yaml
      
      • 1

      查看结果

      $ kubectl get pod -n tekton-pipelines
      
      • 1

      在这里插入图片描述

    3. 替换dashboard镜像
      因为环境变量里还不支持dashboard的镜像替换,这里需要手动更改。

      $ kubectl get TektonInstallerSet
      
      • 1

      在这里插入图片描述
      编辑dashboard-main-deployment-xrlc2,替换镜像

      $ kubectl edit TektonInstallerSet dashboard-main-deployment-xrlc2
      
      • 1

      查看结果
      在这里插入图片描述

    4. 访问
      Dashboard 的服务默认通过 ClusterIP 方式进行暴露,我们可以创建一个 Ingress 对象或者修改 Service 为 NodePort 方式进行暴露。

      在这里插入图片描述

    卸载tekton组件

    卸载tekton其实也很简单,部署时我们知道operator会根据TektonConfig对象部署组件,那么卸载组件也只需要删除这个对象即可。

    # 查询对象
    $ kubectl get TektonConfig
    
    • 1
    • 2

    在这里插入图片描述
    删除TektonConfig对象

    $ kubectl delete TektonConfig config
    
    • 1

    查看结果,各个组件在逐步删除
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    USB转串口芯片GP232RL 完全兼容替代FT232RL SSOP28
    java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档
    数据库课后习题加真题
    浅聊 CPU
    文件上传漏洞(2), 文件上传实战绕过思路, 基础篇
    【Python】使用 Matplotlib 和 Numpy 的 知识绘制一个简单的 二次函数图像 || 同一坐标系下绘制多个函数图像
    写论文的步骤有没有?正确的顺序是什么?
    鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RichText)
    模拟实现二叉搜索树(非kv模式)(上)
    公网IP与私网IP的区别
  • 原文地址:https://blog.csdn.net/weixin_45804031/article/details/134512388