当前位置: 首页 > news >正文

Tekton 构建容器镜像

Tekton 构建容器镜像

介绍如何使用 Tektonhub 官方 kaniko task 构建docker镜像,并推送到远程dockerhub镜像仓库。

在这里插入图片描述

kaniko task yaml文件下载地址:https://hub.tekton.dev/tekton/task/kaniko

查看kaniko task yaml内容:
在这里插入图片描述

点击Install,选择一种方式创建 task
在这里插入图片描述

这里使用kubectl命令创建官方kaniko task

kubectl apply -f \
https://raw.githubusercontent.com/tektoncd/catalog/main/task/kaniko/0.6/kaniko.yaml

在执行镜像构建前Dockerfile存放在git仓库中,需要将代码克隆到本地,因此也需要安装git-clone task,安装方式类似。

kubectl apply -f \
https://raw.githubusercontent.com/tektoncd/catalog/main/task/git-clone/0.9/git-clone.yaml

查看创建的task

$ kubectl get task
NAME             AGE
git-clone        25h
kaniko           13h

Task创建后,可以通过taskRunpipelineRun进行调用。

配置dockerhub认证

镜像构建完成后自动推送到dockerhub,需要为dockerhub配置认证信息。

安装jq工具

apt install -y jq

生成config.json,替换docker-usernamedocker-password为您的值。

kubectl create secret docker-registry dockerhub \
--docker-server=https://index.docker.io/v1/ \
--docker-username=<your-docker-username> \
--docker-password=<your-docker-password> \
--dry-run=client -o json | jq -r '.data.".dockerconfigjson"' | base64 -d > /tmp/config.json

基于config.json创建secret

kubectl create secret generic docker-config --from-file=/tmp/config.json

创建serviceaccount,绑定到secret

$ cat serviceaccount.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:name: build-bot
secrets:- name: docker-config

应用yaml文件

kubectl apply -f serviceaccount.yaml 

创建pipeline和pipelinerun

官方示例pipeline:https://github.com/tektoncd/catalog/blob/main/task/kaniko/0.6/tests/run.yaml

该pipeline 首先运行git clone task,从https://github.com/kelseyhightower/nocode.git 克隆代码,然后运行kaniko task 基于根目录的Dockerfile文件构建镜像,并推送到dockerhub。

$ cat kaniko-run.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:name: kaniko-test-pipeline
spec:workspaces:- name: shared-workspace- name: docker-configparams:- name: repo-urltype: stringdescription: The git repository URL to clone from.- name: branch-nametype: stringdescription: The git branch to clone.- name: gitInitImagetype: stringdescription: The gitInitImage params.- name: httpProxytype: stringdescription: The httpProxy params.- name: httpsProxytype: string- name: dockerfiletype: stringdescription: reference of the image to build- name: builder-imagetype: stringdescription: reference of the image to build- name: imagetype: stringdescription: reference of the image to buildtasks:- name: fetch-repositorytaskRef:name: git-cloneworkspaces:- name: outputworkspace: shared-workspaceparams:- name: urlvalue: $(params.repo-url)- name: revisionvalue: $(params.branch-name)- name: gitInitImagevalue: $(params.gitInitImage)- name: httpProxyvalue: $(params.httpProxy)- name: httpsProxyvalue: $(params.httpsProxy)- name: kanikotaskRef:name: kanikorunAfter:- fetch-repositoryworkspaces:- name: sourceworkspace: shared-workspace- name: dockerconfigworkspace: docker-configparams:- name: DOCKERFILEvalue: $(params.dockerfile)- name: IMAGEvalue: $(params.image)- name: BUILDER_IMAGEvalue: $(params.builder-image)- name: verify-digestrunAfter:- kanikoparams:- name: digestvalue: $(tasks.kaniko.results.IMAGE_DIGEST)taskSpec:params:- name: digeststeps:- name: bashimage: ubuntuscript: |echo $(params.digest)case .$(params.digest) in".sha"*) exit 0 ;;*)       echo "Digest value is not correct" && exit 1 ;;esac- name: verify-urlrunAfter:- kanikoparams:- name: urlvalue: $(tasks.kaniko.results.IMAGE_URL)taskSpec:params:- name: urlsteps:- name: bashimage: ubuntuscript: |echo $(params.url)case .$(params.url) in*"/kaniko-nocode") exit 0 ;;*)       echo "URL value is not correct" && exit 1 ;;esac
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:generateName: kaniko-test-pipeline-run-
spec:serviceAccountName: build-botpipelineRef:name: kaniko-test-pipelineparams:- name: repo-urlvalue: https://github.com/kelseyhightower/nocode.git- name: branch-namevalue: master- name: gitInitImage#value: gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:latestvalue: dyrnq/tektoncd-pipeline-cmd-git-init:latest- name: httpProxyvalue: http://192.168.72.1:7890/- name: httpsProxyvalue: http://192.168.72.1:7890/- name: dockerfilevalue: ./Dockerfile- name: imagevalue: docker.io/willdockerhub/kaniko-nocode- name: builder-image# value: gcr.io/kaniko-project/executor:v1.5.1@sha256:c6166717f7fe0b7da44908c986137ecfeab21f31ec3992f6e128fff8a94be8a5value: docker.io/bitnami/kaniko:latestworkspaces:- name: shared-workspacevolumeClaimTemplate:spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi- name: docker-configsecret:secretName: docker-config

参数说明:

  • gitInitImage:执行git clone任务的镜像,官方镜像无法访问,推荐在docekrhub中查找替代镜像
  • builder-image:执行kaniko 构建任务的镜像,官方镜像无法访问,推荐在docekrhub中查找替代镜像
  • serviceAccountName:指定serviceAccountName用于认证
  • shared-workspace:用于在不同任务之间共享数据,PipelineRun中定义了volumeClaimTemplate类型的workspaces,能够动态申请所需的持久卷,使用kubectl get storageclass命令,确认k8s集群有默认可用的storageclass资源可用,本示例输出为openebs-hostpath (default)
  • docker-config workspace:用于dockerhub认证的secret卷,将secret中的config.json挂载到/kaniko/.docker

应用yaml文件

kubectl create -f kaniko-run.yaml

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

查看镜像构建结果

在这里插入图片描述

相关文章:

Tekton 构建容器镜像

Tekton 构建容器镜像 介绍如何使用 Tektonhub 官方 kaniko task 构建docker镜像&#xff0c;并推送到远程dockerhub镜像仓库。 kaniko task yaml文件下载地址&#xff1a;https://hub.tekton.dev/tekton/task/kaniko 查看kaniko task yaml内容&#xff1a; 点击Install&…...

netty-daxin-4(httpwebsocket)

文章目录 学习链接http服务端NettyHttpServerHelloWorldServerHandler 客户端ApiPost websocket初步了解为什么需要 WebSocket简介 浏览器的WebSocket客户端客户端的简单示例客户端的 APIWebSocket 构造函数webSocket.readyStatewebSocket.onopenwebSocket.onclosewebSocket.ο…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《市场环境下考虑全周期经济效益的工业园区共享储能优化配置》

这个标题涉及到工业园区中共享储能系统的优化配置&#xff0c;考虑了市场环境和全周期经济效益。以下是对标题中各个要素的解读&#xff1a; 市场环境下&#xff1a; 指的是工业园区所处的商业和经济背景。这可能包括市场竞争状况、电力市场价格波动、政策法规等因素。在这一环…...

WPF——命令commond的实现方法

命令commond的实现方法 属性通知的方式 鼠标监听绑定事件 行为&#xff1a;可以传递界面控件的参数 第一种&#xff1a; 第二种&#xff1a; 附加属性 propa&#xff1a;附加属性快捷方式...

信息收集 - 域名

1、Whois查询: Whois 是一个用来查询域名是否已经被注册以及相关详细信息的数据库(如:域名所有人、域名注册商、域名注册日期和过期日期等)。通过访问 Whois 服务器,你可以查询域名的归属者联系方式和注册时间。 你可以在 域名Whois查询 - 站长之家 上进行在线查询。 2、…...

基于YOLOv8深度学习的路面标志线检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

leetCode算法—1.两数之和

难度&#xff1a;* 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你…...

oracle 设置访问白名单

有相关安全策略会要求部分 ip 禁止访问oracle数据库&#xff0c;那么如何实现对IP的白名单设置呢&#xff1f;又如何细分到对用户的限制访问呢&#xff1f;本文将介绍方法给大伙。 1、禁止IP访问数据库&#xff08;修改sqlnet.ora方式实现&#xff09; vi $ORACLE_HOME/network…...

Flink系列之:窗口关联

Flink系列之&#xff1a;窗口关联 一、窗口关联二、INNER/LEFT/RIGHT/FULL OUTER三、SEMI四、ANTI五、限制 一、窗口关联 适用于流、批窗口关联就是增加时间维度到关联条件中。在此过程中&#xff0c;窗口关联将两个流中在同一窗口且符合 join 条件的元素 join 起来。窗口关联…...

Eolink 两项产品入选 2023 年广东省名优高新技术产品名录!

近日&#xff0c;2023 年广东省名优高新技术产品正式名单已经发布&#xff0c;Eolink 旗下两项产品荣幸入选&#xff01; “广东省名优高新技术产品”是广东省对高新技术产品领域的升级和优化的重要措施。名优产品的评选不仅强调了技术的先进性&#xff0c;更对产品的质量、市…...

054:vue工具 --- BASE64加密解密互相转换

第054个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

自动驾驶学习笔记(二十)——Planning算法

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 参考线平滑 双层状态机 EM Planner …...

adb的使用

Adb windows 环境搭建 &#xff08;1&#xff09;将adb包安装或者解压到一个路径&#xff0c;并拿到adb.exe所在的路径值&#xff0c;例如,D:\Tools\adb &#xff08;2&#xff09;将路径值放进windows环境变量 我的电脑&#xff08;此电脑图标&#xff09;右键–》 选择“属…...

会旋转的树,你见过吗?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…...

Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能&#xff0c;涉及到配置模型权重以执行特定任务。这不仅是技术操作&#xff0c;更像是一种艺术&#xff0c;需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和…...

服务器的安全包括哪些方面?服务器安全该如何去加固处理?

服务器安全包括如下几个方面&#xff1a; 系统安全&#xff1a;包括操作系统的安全性、系统的漏洞和补丁管理、用户管理、文件权限和访问控制等。 网络安全&#xff1a;包括网络拓扑结构、网络设备的安全性、网络协议的安全性、防火墙和入侵检测等。 数据安全&#xff1a;包括数…...

为什么在Android中需要Context?

介绍 在Android开发中&#xff0c;Context是一个非常重要的概念&#xff0c;但是很多开发者可能并不清楚它的真正含义以及为什么需要使用它。本文将详细介绍Context的概念&#xff0c;并解释为什么在Android应用中需要使用它。 Context的来源 Context的概念来源于Android框架…...

AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)

AIGC实战——条件生成对抗网络 0. 前言1. CGAN架构2. 模型训练3. CGAN 分析小结系列链接 0. 前言 我们已经学习了如何构建生成对抗网络 (Generative Adversarial Net, GAN) 以从给定的训练集中生成逼真图像。但是&#xff0c;我们无法控制想要生成的图像类型&#xff0c;例如控…...

高性能计算HPC与统一存储

高性能计算&#xff08;HPC&#xff09;广泛应用于处理大量数据的复杂计算&#xff0c;提供更精确高效的计算结果&#xff0c;在石油勘探、基因分析、气象预测等领域&#xff0c;是企业科研机构进行研发的有效手段。为了分析复杂和大量的数据&#xff0c;存储方案需要响应更快&…...

秋招上岸记录咕咕咕了。

思考了一下&#xff0c;感觉并没有单独写这样一篇博客的必要。 能够写出来的&#xff0c;一些可能会对人有帮助的东西都做进了视频里面&#xff0c;未来会在blbl发布&#xff0c;目前剪辑正在施工中&#xff08;&#xff1f;&#xff09; 另外就是&#xff0c;那个视频里面使…...

vue模板语法

一、插值 1、文本 &#xff08;1&#xff09;v-text语法 缩写&#xff1a; {{…}}&#xff08;双大括号&#xff09;的文本插值 方法一&#xff1a; <template><h1> hello </h1><p v-text"data.name"></p><!-- v-text的简写--&…...

Pytorch神经网络的模型架构(nn.Module和nn.Sequential的用法)

一、层和块 在构造自定义块之前&#xff0c;我们先回顾一下多层感知机的代码。下面的代码生成一个网络&#xff0c;其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层&#xff0c;然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 import torch from torch im…...

JS数组之展开运算符

展开运算符是什么&#xff1f;有什么作用&#xff1f; 展开运算符可以将一个数组展开 const arr [1,2,3,4,5]// 我们使用...展开数组console.log(...arr) //1 2 3 4 5它不会修改原数组 典型运用场景&#xff1a;求数组最大值、最小值、合并数组等 会让我们代码更加简洁 最大值…...

读书笔记:《汽车构造与原理》

《透视汽车会跑的奥秘》《汽车为什么会跑&#xff1a;底盘图解》《汽车为什么会跑&#xff1a;图解汽车构造与原理》 一、心脏&#xff1a;发动机 活塞往复运动转化为曲轴的旋转运动 活塞&#xff1a;膝关节活塞连杆&#xff1a;小腿曲轴&#xff1a;自行车脚踏板 四冲程&…...

INS 量测更新

5 量测更新 5.1 GNSS位置及速度更新 r ^ G P S , i n r ^ I M U n D R − 1 C b n l b v ^ G P S , i n v ^ I M U n ω i n n C b n l b − C b n ω i b b l b \begin{aligned} \hat{r}_{GPS,i}^{n} & \hat{r}_{IMU}^{n} D_{R}^{-1}C_{b}^{n} l^b\\ \hat{v}_{GPS…...

【ssh基础知识】

ssh基础知识 常用命令登录流程配置文件ssh密钥登录生成密钥上传公钥关闭密码登录 ssh服务管理查看日志ssh端口转发 ssh&#xff08;ssh客户端&#xff09;是一个用于登录到远程机器并在远程机器上执行命令的程序。 它旨在提供安全的加密通信在不安全的网络上的两个不受信任的主…...

04 开发第一个组件

概述 在Vue3中&#xff0c;一个组件就是一个.vue文件。 在本小节中&#xff0c;我们来开发第一个Vue3组件。这个组件的功能非常的简单&#xff0c;只需要在浏览器上输出一个固定的字符串”欢迎跟着Python私教一起学Vue3“即可。 实现步骤 第一步&#xff1a;新增src/compon…...

【Unity】如何让Unity程序一打开就运行命令行命令

【背景】 Unity程序有时依赖于某些服务去实现一些功能,此时可能需要类似打开程序就自动运行Windows命令行命令的功能。 【方法】 using UnityEngine; using System.Diagnostics; using System.Threading.Tasks; using System.IO; using System.Text...

Web前端-HTML(表格与表单)

文章目录 1.表格与表单1.1 概述 2.表格 table2.1 表格概述2.2. 创建表格2.3 表格属性2.4. 表头单元格标签th2.5 表格标题caption&#xff08;了解&#xff09;2.6 合并单元格(难点)2.7 总结表格 3. 表单标签(重点)3.1 概述3.2 form表单3.3 input 控件(重点)type 属性value属性值…...

Android RecycleView实现平滑滚动置顶和调整滚动速度

目录 一、滑动到指定位置&#xff08;target position&#xff09;并且置顶 1. RecycleView默认的几个实现方法及缺陷 2. 优化源码实现置顶方案 二、调整平移滑动速率 三、其他方案&#xff1a;置顶、置顶加偏移、居中 1. 其他置顶方案 2. 置顶加偏移 3. 滚动居中 在实…...

网站怎么做营销/互联网推广是什么

申明&#xff1a;文章中部分内容有涉及官方帮助或者网上资源整合&#xff0c;如有违权&#xff0c;请速与作者联系&#xff0c;谢谢&#xff01;作者&#xff1a;316191099qq.com培训&#xff1a;Skype for Business Server 2015-项目实战-培训-QQ群:65235615。&#xff08;学员…...

最好看的免费网站源码/网站排名软件

2019独角兽企业重金招聘Python工程师标准>>> 本文前戏较多&#xff0c;务实的同学可以直接跳到文末的结论。 由「钢的琴」网友脑洞大开延伸出了吉的他二的胡琵的琶&#xff0c;以及后来许嵩的「苏格拉没有底」&#xff0c;是否可以再拓展一下&#xff0c;得到哥本不…...

介绍自己做衣服的网站/不用流量的地图导航软件

选自 &#xff1a;新华网新华网合肥12月28日电 (记者 代群) 30秒内为驾驶员提供实时路况和最优出行路线信息&#xff1b;8分钟完成单幅机载合成雷达数据成像&#xff0c;准实时精确提供灾情评估和经济损失分析信息。记者日前从中国科技大学获悉&#xff0c;国产KD-50-I-E增强型…...

东莞网站建设设计公司/十大品牌营销策划公司

2019独角兽企业重金招聘Python工程师标准>>> 其实想做聚焦时提示文字不消失,光标在提示语前面,就像正常的placeholder属性,但是setSelectionRance()方法不是很好用,后面学习之后再制作 <script type"text/javascript"> (function($,win,do…...

分析苏宁易购的网站建设/网站排名查询工具有哪些

&#xff5e;&#xff5e;&#xff5e;题面&#xff5e;&#xff5e;&#xff5e; 题解&#xff1a; 这是一道强题emmmm&#xff0c;做法非常巧妙&#xff0c;&#xff0c;&#xff0c;我也是看了好久大佬题解才看明白一点 首先考虑没有限制的情况&#xff0c;即n个老鼠可以在同…...

做网站的法律/手机网站建设

一&#xff0c;类继承 1.1&#xff0c;C函数库的缺点 除非厂商提供了库函数的源码&#xff0c;否则无法根据自己的需求对库函数进行修改。 1.2&#xff0c;使用类继承带来的优点 面向对象编程的主要目的之一是提供可重用的代码&#xff0c;类继承提供了比修改源码更好的方法&…...