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

2024-09-04 22:44

本文主要是介绍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。请查看并使用。

这篇关于Tekton简介,安装和构建最简单ci/cd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137242

相关文章

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队