如何向K8s,Docker-Compose注入镜像Tag

最近在做基于容器的CI/CD, 一个朴素的自动部署的思路是:

  • 从Git Repo打出git tag,作为镜像Tag

  • ssh远程登录到部署机器

  • 向部署环境注入镜像Tag,拉取镜像,重新部署

下面分享我是如何在K8s、docker-compose中注入镜像Tag

k8s

熟悉k8s的同学知道, K8s有一个强大的原生配置管理工具:Kustomize

Kustomize 以一种无模板的方式来定制应用程序配置,从而简化了现有应用程序的使用。现在kustomize已经以apply -k的方式内置进kubectl。

这里利用Kustomize的edit命令修改定义在Kustomization.yaml中的镜像Tag:

下面是一个简单的Kustomization.yaml文件:

kind: Kustomization
namespace: wd
resources:
- ../base
images:
- name: hub.docker.com/eap/website  //原镜像名newName: hub.docker.com/eap/websitenewTag: v1.0.7-hotfix5     // 持续被修改的Tag

做自动部署时,一般由CI给部署脚本导入此次git tag(镜像Tag)。

#!/bin/sh
cd /home/wd-deploy/localdeploy/wd/overlays/  
kustomize edit set image  hub.docker.com/eap/website=hub.docker.com/eap/website:${TAG}
kustomize build . | kubectl apply -f -

以上部署脚本: 进入Kustomization.yaml目录,向Kustomization.yaml文件注入新的镜像Tag,构建并应用新的配置。

docker-compose

Docker平台就没有那么好的工具,明文让你修改镜像配置。

我们采用shell脚本来曲线修改镜像配置:

假如你有一个简单的docker-compose.yml文件:

version: '3'services:app:image: username/app:d7s8f12ports:- 80:80

通过shell脚本修改`app:` 字符串后面的镜像Tag,达到注入Tag的目的。

sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml'

同样,自动部署时由CI给部署脚本导入此次Git Tag (镜像Tag)。

#!/bin/shcd  /home/wd-deploy/app/
sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml'
docker-compose pull app  && docker-compose  up -d

以上部署脚本: 进入docker-compose.yml目录,向Compose文件注入新的镜像Tag,拉取镜像并应用新的配置。

结束语

本文分享了向K8s, Docker-Compose平台注入镜像Tag的姿势。

 为啥要专题讲这个呢?因为注入Tag是自动部署的必经过程。

本文只是一个粗浅的、朴素的注入思路(Devops生态有许多组件可以完成该项动作), 欢迎大家多多留言,带我上路。

更多干货及最佳实践分享
关注并星标我们~。。~

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

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

相关文章

东北大学计算机 大一物理考试题,东北大学大学物理期末考题及答案Word版

《东北大学大学物理期末考题及答案Word版》由会员分享,可在线阅读,更多相关《东北大学大学物理期末考题及答案Word版(5页珍藏版)》请在人人文库网上搜索。1、传播优秀Word版文档 ,希望对您有帮助,可双击去除!东北大学物…

showModalDialog()、showModelessDialog()方法使用详解

一、showModalDialog和showModelessDialog有什么不同?   showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。   showModelessDialog:被打开后,用户…

.NET 项目中的单元测试

.NET 项目中的单元测试Intro“不会写单元测试的程序员不是合格的程序员,不写单元测试的程序员不是优秀的工程师。”—— 一只想要成为一个优秀程序员的渣逼程序猿。那么问题来了,什么是单元测试,如何做单元测试。单元测试单元测试的定义按照维…

职称计算机还用考试,职称计算机考试注意事项

职称计算机考试注意事项一、注意事项首先,由于考试是模块化设计,所以在报考时要选择自己熟悉的科目。切忌好高骛远,选择那些自己日常使用机会不多、并无把握的科目。许多人在考试时选择了自己工作中最常用的Windows XP、Word 2003、PowerPoin…

休假2周

又一次辞职了 :(这次的原因是觉得之前的公司无论在数据量还是流量及其它方面都过于小了,而且所谓的‘股份’也是一种看不见的东西,公司也没有上市,分红也是老板说了算,我也决定不了什么;其他的原因就是在一些人际、行政…

python安装地是什么_如何安装python

展开全部 Python是跨平台的,可以运行在2113Windows、Mac和各种Linux/Unix系统上5261。在Windows上写Python程序,放到Linux上也是能够4102运行的。 要开始学习1653Python编程,首先就得把Python安装到电脑里。安装后,会得到Python解…

ABP vNext 实现租户Id自动赋值插入

背景在使用ABP vNext过程中,因为我们的用户体系庞大,所以一直与其他业务同时开发,在开发其他业务模块时,我们一直存在着误区:认为ABP vNext 自动处理了数据新增时的租户Id(TenantId)的自动赋值插…

solaris 命令

一.chmod 命令 chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 1. 文字设定法 命令中各选项的含义为: 在一个命令行中可给出多…

计算机组成与结构PLA,计算机组成与结构.doc

《》教学大纲安徽大学 计算机 学院二OO六年 4 月《计算机组成与结构》是计算机科学与技术、软件工程专业的一门主干课程,本课程以冯.诺依曼计算机模型作为教学起点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控…

深入研究.NET 5的开放式遥测

OpenTelemetry 介绍OpenTelemetry是一种开放的源代码规范,工具和SDK,用于检测,生成,收集和导出遥测数据(指标,日志和跟踪),开放遥测技术得到了Cloud Native Computing Foundation(CN…

python编写程序计算1+2+3+......+100和_Python3:计算两个列表总和为100的所有排列的最有效方法是什么?...

优化这种方法的方法不是找出更快的方式来生成排列,而是生成尽可能少的排列。 首先,如果您只想要按排序顺序的组合,您将如何做到这一点? 您不需要生成0到100的所有可能组合,然后对其进行过滤。第一个数字a可以是0到100之…

登陆xp系统,无法显示桌面

症状登录到 Windows xp 后,可能会看到空白桌面或看不到桌面。出现这种情况时,可以按下 CtrlAltDelete 键启动任务管理器,但正在运行的任务或进程列表中却没有列出 Explorer.exe。启动 Explorer.exe 的新实例也无法解决问题。 原因…

孕妇可以在计算机教室待吗,电脑对孕妇有辐射吗?孕妇使用电脑的注意事项

怀孕期间孕妇使用电脑有电磁辐射吗?孕妇当然可以使用电脑,经科学研究发现在电脑前工作对孕妇不会产生什么影响!孕妇既然是特别保护对象,那么怀孕妈妈在使用电脑时也会有一些注意事项。第一宝宝小编为准妈妈搜集了十二条注意事项。…

python类和函数_构建程序. Python中的类和函数

如果希望mainfunc的所有实例都使用相同的KeySeq对象,则可以使用默认参数值技巧: def mainfunc(ksKeySeq()): key ks.next() 只要您实际上没有传递ks值,对mainfunc的所有调用都将使用在定义函数时创建的KeySeq实例. 如果您不知道,这就是为什么:函数是一个…

CCDP-思科认证网络设计高级工程师

CCDP是Cisco售前设计支持工程师的最高级认证。获得CCDP认证证书应能够运用应具有的网络知识、对设备安装、配置和操作技巧对复杂的LAN、WAN和交换式局域网进行设计。 CCDP认证必备条件必须先获取CCNA和CCDA证书CCDP考试642-801 BSCI 642-811 BCMSN 642-871 ARCH CCDP 重新认证C…

.NET5实战千万并发,性能碾压各版本,云原生时代,.NET5为王!

在移动互联网时代掉队的.NET,当下正凭借着.NET5的开源跨平台以及容器友好,在云原生时代正在重铸辉煌。而作为.NET开发者,新年跳槽季的高并发问题会更多了,因为高并发能牵扯出太多问题,接口响应超时、CPU负载升高、GC频…

html点击按钮计算两个输入框的和_小程序计算报价功能介绍

一、使用场景用户可在管理后台设置计算值和运算公式,访客输入对应计算值,即可实现自动计算出结果,并提供相关的咨询入口,适用于装修、建材、房贷、车险等行业的报价行为。二、功能版本限制小程序至尊版可开启和使用计算报价功能。…

中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理程序及图像...

数字图像处理实验课 matlab实验程序 以及图像结果 附带有命名图仅供参考 定有错误 木有绝对正确实验11—1close all;clear;fzeros(40,40);%f(10:30,10:30)1;subplot(1,3,1);%imshow(f);%Ffft2(f)subplot(1,3,2);%imshow(F);%Dlog(1abs(F));%subplot(1,3,3);imshow(D);1——2clc…

用python画树_Python+Turtle动态绘制一棵树实例分享

本文实例主要是对turtle的使用,实现Pythonturtle动态绘制一棵树的实例,具体代码: # drawtree.py from turtle import Turtle, mainloop def tree(plist, l, a, f): """ plist is list of pens l is length of branch a is hal…

[ASP.NET2.0] asp.net在ie7中使用FileUpload上传前预览图片 [ZT]

asp.net在ie7中使用FileUpload上传前预览图片 因为安全性问题&#xff0c;IE7禁用了image控件引用本地图片&#xff0c;为了这个问题郁闷了好几天&#xff0c;终于找到了解决方案&#xff0c;好东西要与大家分享&#xff0c;代码如下&#xff1a;此段代码放于<head> ....…