Tekton简介,安装和构建最简单ci/cd

简介

Tekton是一种基于k8的支持CI/CD的operator。

说到持续集成,我们比较熟悉的有jenkins,gitlab ci等,但只有Tekton是云原生的。

既然Tekton是一种operator,那就必须了解它的CRD,然后我们定义CR,让Tekton在k8上进行调谐。

Tekton CRD

Task: 一个构建任务,含多步骤:编译代码,构建对象,发布的repo等

Pipeline: n Tasks + PipelineResources + variables

TaskRun: 一个Task实例

PipelineRun:一个Pipeline实例

PipelineResource: Pipeline input(如github repo), Pipeline output(如docker hub repo)

安装

安装前请确保您有k8 cluster,我已经安装了minikube和启动了minikube,所以我这里使用以下命令进行安装:

mkdir tekton_learning
cd tekton_learning
curl -k https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml -o release.yaml
kubectl apply -f release.yaml

执行我们可以看到,一堆的rbac, crd, confgimap, deployment, service已经created到tekton-pipelines namespace下。

如果您的minikube没启动,您会遇到connection refuse的error。

定义最简单的task和taskrun

fack-ci-cd.yaml

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:name: fake-ci-cd
spec:steps:- name: echoimage: alpinescript: |#!/bin/shecho "fack ci/cd jobs"   

fake-ci-cd-run.yaml

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:name: fake-ci-cd-run
spec:taskRef:name: fake-ci-cd

安装到k8

kubectl apply -f fake-ci-cd.yaml
kubectl apply -f fake-ci-cd-run.yaml

查看输出

我们可以看到我们的cr顺利创建,task pod也顺利创建并执行任务了。

carawang@tekton_learning %kubectl get task
NAME         AGE
fake-ci-cd   10m
carawang@tekton_learning %kubectl get taskrun
NAME             SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
fake-ci-cd-run   True        Succeeded   18m         17m
carawang@tekton_learning %kubectl get events 
LAST SEEN   TYPE      REASON                    OBJECT                   MESSAGE
18m         Normal    Scheduled                 pod/fake-ci-cd-run-pod   Successfully assigned default/fake-ci-cd-run-pod to minikube
18m         Normal    Pulling                   pod/fake-ci-cd-run-pod   Pulling image "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/entrypoint:v0.63.0@sha256:d83f21f007858846568cb9eaef6c6db89822561bb94545c2f34f3e3f
...
17m         Normal    Started                   pod/fake-ci-cd-run-pod   Started container prepare
container place-scripts
17m         Normal    Started                   pod/fake-ci-cd-run-pod   Started container place-scripts
17m         Normal    Pulling                   pod/fake-ci-cd-run-pod   Pulling image "alpine"
17m         Normal    Pulled                    pod/fake-ci-cd-run-pod   Successfully pulled image "alpine" in 7.003s (7.003s including waiting). Image size: 7797760 bytes.
17m         Normal    Created                   pod/fake-ci-cd-run-pod   Created container step-echo
17m         Normal    Started                   pod/fake-ci-cd-run-pod   Started container step-echo
18m         Normal    Started                   taskrun/fake-ci-cd-run   
18m         Normal    Pending                   taskrun/fake-ci-cd-run   Pending
18m         Normal    Pending                   taskrun/fake-ci-cd-run   pod status "PodReadyToStartContainers":"False"; message: ""
17m         Normal    Pending                   taskrun/fake-ci-cd-run   pod status "Initialized":"False"; message: "containers with incomplete status: [place-scripts]"
17m         Normal    Pending                   taskrun/fake-ci-cd-run   pod status "Ready":"False"; message: "containers with unready status: [step-echo]"
17m         Normal    Running                   taskrun/fake-ci-cd-run   Not all Steps in the Task have finished executing
17m         Normal    Succeeded                 taskrun/fake-ci-cd-run   All Steps have completed executing
...

定义最简单的pipeline和pipeline

我们在pipeline里引用我们的刚定义的task

project-ci-cd-pipeline.yaml

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:name: project-ci-cd-pipeline
spec:tasks:- name: fake-ci-cdtaskRef:name: fake-ci-cd

project-ci-cd-pipeline-run.yaml

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:name: project-ci-cd-pipeline-run
spec:pipelineRef:name: project-ci-cd-pipeline

 安装到k8

kubctl apply -f project-ci-cd-pipeline.yaml
kubctl apply -f project-ci-cd-pipeline-run.yaml

查看输出

carawang@tekton_learning %kubectl get pods
NAME                                        READY   STATUS      RESTARTS   AGE
project-ci-cd-pipeline-run-fake-ci-cd-pod   0/1     Completed   0          95s
carawang@tekton_learning %kubectl get pipelinerun
NAME                         SUCCEEDED   REASON      STARTTIME   COMPLETIONTIME
project-ci-cd-pipeline-run   True        Succeeded   2m6s        57s

安装Tekton CLI tkn

我的环境是macos,所以我使用brew进行安装。

brew install tektoncd-cli
brew cleanup tektoncd-cli

使用tkn查看taskrun和pipelinerun的logs

carawang@tekton_learning %tkn pipelinerun logs
[fake-ci-cd : echo] fack ci/cd jobscarawang@tekton_learning %tkn taskrun logs    
? Select taskrun: project-ci-cd-pipeline-run-fake-ci-cd started 10 minutes ago
[echo] fack ci/cd jobs

可以看到更具体的我们的task和pipeline的输出。

tkn help提供了全部的管理tekton pipeline的cmds。请查看并使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Jmeter关联influxDB?

一、添加"添加后端监听器" 二、后端监听器实现选择,"org. apache. jmeter. visualizers. backend. influxdb.InfluxdbBackendlistenerClient" 三、修改"influxdbUrl:自己的主机、application:取一个项目名" 四、influxDB&…

AGV/AMR移动机器人产业链全景图(二),应用场景及嵌入式控制器主板案例分析

AGV/AMR移动机器人的下游应用场景 物流行业:物流行业是AGV应用最为广泛的领域之一。随着电子商务的兴起和物流业的快速发展,仓库管理、货物分拣和配送等环节的自动化需求日益增长。AGV通过自主导航和智能调度,实现了货物的快速、准确搬运&am…

数据分析-11-时间序列分析的概念任务和主要方法

1 时间序列 1.1 时间序列的定义 时间序列,通俗的字面含义为一系列历史时间的序列集合。比如2013年到2022年我国全国总人口数依次记录下来,就构成了一个序列长度为10的时间序列。 结合上图理解随机变量和观测值的关系。 我们认为每个时间点发生的数据都来自于一个分布的,…

2024国赛数学建模备赛|30种常用的算法模型之最优算法-非线性规划

1.1 非线性规划的实例与定义 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有 单纯形法这一通用方法,非线性规划目前还没…

并发工具类(一):CountDownLatch

1、CountDownLatch介绍 CountDownLatch 又称为“倒计数门阀”,但大多数称之为“计数器”,是juc包下的一个工具类; CountDownLatch 核心功能是:用于一个活多个线程等待其他线程执行完成的一组操作。 CountDownLatch 中有个全局的计…

【Blender】快捷键_ 学习日志_01

【Blender】快捷键_ 学习日志_01 学习了blender的快捷键的使用。 2024年8月30日 视角操控 围绕中心旋转:按住鼠标中建 平移视角:Shift鼠标中键 视角前进后退:滚动滚轮 视图切换 0 切换到摄像机视图 1 切换正试图 2,4&…

产值8111亿!从《中国地理信息产业发展报告2024》看产业链上的就业蓝海

中国地理信息产业协会28日发布《中国地理信息产业发展报告2024》,报告显示2023年我国地理信息产业总产值达到8111亿元,同比增长4.2%,初步形成了完整的地理信息产业链。 《中国地理信息产业发展报告2024》显示,2023年以来&#xf…

倍福EL6751快速配置CANopen伺服

EL6751快速配置CANopen伺服 使用倍福EL6751快速配置方法,不要求提供从站的eds文件,但是需要提供从站的使用手册和通讯手册,用来查阅从站的PDO配置信息,这些配置参数会使用如下方法通过EL6751写入到从站中。 建立通用CANopen节点…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型,返回预测结果 …

使用seamless-scroll-v3 实现无缝滚动,自动轮播平滑的滚动效果

安装&#xff1a;npm地址&#xff1a;https://www.npmjs.com/package/seamless-scroll-v3 yarn add seamless-scroll-v3# 或者使用 npm npm install seamless-scroll-v3# 或者使用 pnpm pnpm add seamless-scroll-v3 实现效果&#xff1a; template中的代码&#xff1a; <…

陷抄袭风波 《黑神话:悟空》该如何应对

都说人红是非多&#xff0c;国产首部3A游戏《黑神话&#xff1a;悟空》在爆火的同时&#xff0c;一些问题也随之出现。一方面《黑神话&#xff1a;悟空》陷入抄袭风波&#xff1f;另一方面该游戏也被很多黑灰产盯上了。 8月23日&#xff0c;“塞上李云中”发布微博&#xff0c;…

做为一名研发人员,你是如何看待项目管理软件这种产品的?

我认为项目管理软件是现代软件开发和项目管理中不可或缺的工具。它能够提高项目管理的效率和准确性&#xff0c;降低项目失败的风险&#xff0c;并为团队带来显著的价值。然而&#xff0c;在选择和使用项目管理软件时&#xff0c;团队需要综合考虑多个因素&#xff0c;以确保选…

hiprint打印/jsPDF使用/html2canvas

最初我知道hiprint.print是可以打印双模板的&#xff0c;于是查看hiprint.print的源码发现底层实现是this.getHtml(t).hiwprint,于是断点查看getHtm的实现&#xff0c;得知它是遍历我们对print传参的list&#xff0c;利用list中模板对象的getHtml()方法得到模板的dom对象&#…

如何使用电商API接口?(淘宝|京东商品详情数据接口)

一、了解电商API接口&#xff1a; 如今&#xff0c;在电商市场中&#xff0c;电商API接口的广泛应用极大地提高了电商行业的工作效率&#xff0c;使得商家能够灵活集成多种服务&#xff0c;高效优化业务流程。 当前&#xff0c;电商平台中的多种业务都可以通过使用API接口来做…

OpenGL/GLUT实践:水面模拟——从单振源到 Gerstner Wave(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub&#xff1a;A-UESTCer-s-Code 文章目录 1 实现效果1 简单水面模拟——单振源1.1 水面高度函数1.2 水面建模1.3 openGL 渲染(1) renderSense(2) 其他 1.4 实现效果 2 添加鼠标控制3 添加纹理4 多个振源组合5 Gerstner Wave 模型5.1 原理5.2 具体实现5.2.1 全局变量…

光伏气象分析包含哪些数据?

1.海拔 海拔是影响太阳辐射强度和气温的重要因素之一。高海拔地区通常大气稀薄&#xff0c;太阳辐射衰减较少&#xff0c;因此太阳辐射强度相对较高。同时&#xff0c;随着海拔的升高&#xff0c;气温和气压也会发生变化&#xff0c;这些变化对光伏组件的性能和发电效率有直接…

深度学习5从0到1理解RNN(包括LTSM,GRU等):内容丰富(下)

续 5.4.4 LSTM 举例 网络里面只有一个 LSTM 的单元&#xff0c;输入都是三维的向量&#xff0c;输出都是一维的输出。这三维的向量跟输出还有记忆元的关系是这样的。假设 x2 的值是 1 时&#xff0c; x1 的值就会被写到记忆元里&#xff1b;假设 x2 的值是-1 时&#xff0c;就…

计算机,数学,AI在社会模拟中的应用

这些模型通常属于社会模拟的范畴&#xff0c;利用计算机技术和复杂系统理论来模拟和预测社会动态。以下是几种常见的社会模拟模型&#xff1a; 1. 系统动力学模型 系统动力学模型通过建立数学方程来描述社会系统中的各种变量及其相互关系。这种模型适用于宏观层面的社会变化分…

uniapp 封装uni.login 实现全局调用

封装utils app.vue中 使用globalData 注册 utils 页面中使用方法 定义app 调用方法

ICM20948 DMP代码详解(1)

序言 接触Invensense的芯片这已经是第三次了。2015年在第二空间的时候第一次接触它的芯片&#xff0c;那时候是MPU9250&#xff1b;2021年的时候在智橙动力再一次接触到了MPU6050&#xff0c;那个时候用到了其中的DMP&#xff1b;这次接触的是ICM20948&#xff0c;按目前笔者理…