如何向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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

用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> ....…

360浏览器5兼容模式吗_个独模式真能将企业总体税负降低至5%吗,为何大家都热衷核定征收...

个独模式真的能将企业总体税负降低至5%吗&#xff0c;为何大家都热衷选择申请核定征收企业性质不同&#xff0c;结构不同&#xff0c;体量不同&#xff0c;业务模式不同&#xff0c;自然纳税方式和税负也有差别。不同的纳税对象应该采取不同的节税方式&#xff0c;用合理合法的…

python3 for循环_从零开始学习PYTHON3讲义(六)for循环跟斐波那契数列

《从零开始PYTHON3》第六讲 几乎但凡接触过一点编程的人都知道for循环&#xff0c;在大多数语言的学习中&#xff0c;这也是第一个要学习的循环模式。 但是在Python中&#xff0c;我们把for循环放到了while循环的后面。原因是&#xff0c;Python中的for循环已经完全不是你知道的…

Yahoo Mail,慢功出细活〔转载〕

Yahoo Mail&#xff0c;慢功出细活2007年08月31日13:59 原文链接&#xff1a;http://chinese.wsj.com/gb/20070831/ptk141709.asp?sourcechannel用两年时间测试一款软件可真算费功夫&#xff0c;但雅虎公司(Yahoo! Inc.)开发完成新版本的电子邮箱软件Yahoo Mail就花了这么长…

浅谈如何理解领域驱动设计

本文作者为长沙.NET社区开发者微笑刺客&#xff0c;转载已获得作者授权。前言什么是领域&#xff0c;我习惯描述的是制药领域、环境领域、建筑领域、金融领域等&#xff0c;而在领域内&#xff0c;各种业务规则、业务知识盛行&#xff0c;如何有效的把控规则的变化&#xff0c;…

lol战绩查询接口_LOL:莫名其妙被封号?3把躺赢局被说是代打

Hello&#xff0c;大家好&#xff0c;这里是小皮说电竞&#xff0c;每天都会为大家带来LOL有趣的资讯&#xff0c;喜欢的话记得点个关注哦~英雄联盟已经发展至S10了&#xff0c;这么久以来&#xff0c;许多小伙伴都碰到过一个问题&#xff0c;那就是封号。封号的原因有很多&…

apk源码查看工具_如何查看Linux命令工具的源码?

点击上方「嵌入式大杂烩」&#xff0c;「星标公众号」第一时间查看精彩文章&#xff01;上一篇分享了两个使用的小工具&#xff1a;《如何同时输出调试信息到终端及文件&#xff1f;》。有位小伙伴留言问道tee工具的代码在哪&#xff1a;这篇文章我们就来简单分享一下。首先&am…

final类是否可以被代理_浅谈Java【代理设计模式】——看这篇文章就懂了

什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。为什么使用代理模式中介隔离&#xff1a;在某些情况下&#xff0c;一个客户类不想或者不能直接引用一个委托对象&#xff0c;而代理类对象可以在客户类和委托对象之间起到中介的作用&#xff0c;其特征是代理类和…

《The C++ Standard Library》第50页 关于传递auto_ptr的问题

第50页最后一段话: 我怎么没记得在第43页里说不能传递auto_ptr. 可是我在第43页没有找到”不要用任何方式来传递auto_ptr”类似的语句啊。 而且里面讲的是source和sink,说的就是该如何传递auto_ptr和转移auto_ptr的ownership啊。 倒是在第44页中找到了这样的话&#xff1a; 第4…

在.NET Core 中使用Quartz.NET

Quartz.NET是功能齐全的开源作业调度系统&#xff0c;可用于最小的应用程序到大型企业系统。Quartz.NET具有三个主要概念&#xff1a;•job&#xff1a;运行的后台任务•trigger&#xff1a;控制后台任务运行的触发器。•scheduler&#xff1a;协调job和triggerASP.NET Core通过…

EntityFramework Core如何映射动态模型?

【导读】本文我们来探讨下映射动态模型的几种方式&#xff0c;相信一部分童鞋项目有这样的需求&#xff0c;比如每天/每小时等生成一张表&#xff0c;此种动态模型映射非常常见&#xff0c;经我摸索&#xff0c;这里给出每一步详细思路&#xff0c;希望能帮助到没有任何头绪的童…

构建深度学习模型:原理与实践

构建深度学习模型&#xff1a;原理与实践 引言 随着人工智能技术的飞速发展&#xff0c;深度学习已经成为当今最为炙手可热的研究领域之一。深度学习通过模拟人脑神经网络的工作原理&#xff0c;使得计算机能够具备更强大的学习和识别能力。本文将深入探讨深度学习的基本原理…

petshop4.0 详解之五(PetShop之业务逻辑层设计)[转]

业务逻辑层&#xff08;Business Logic Layer&#xff09;无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计&#xff0c;也即是说它是与系统所应对的领域&#xff08;Domain&#xff09;逻辑有关&#xff0…