如何向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生态有许多组件可以完成该项动作), 欢迎大家多多留言,带我上路。
更多干货及最佳实践分享
关注并星标我们~。。~
如何向K8s,Docker-Compose注入镜像Tag相关推荐
- 容器单机编排工具 Docker Compose,swap 限制,配置默认的CFS调度程序,Stress-ng 压力测试工具,docker官网镜像上传,及阿里云镜像上传,Docker 的资源限制
目录 Docker Compose介绍 有版本问题 一键生成 docker-compose.yml docker官网镜像上传,及阿里云镜像上传 Docker 之分布式仓库 Harbor Docke ...
- dockerfile、docker compose、k8s区别
1.各自功能 dockerfile: 构建单个服务镜像,以脚本形式 docker-compose:多镜像编排容器 k8s:跨服务编排 2. 详解 2.1 dockerfile 从无到有的构建镜像,包括 ...
- 使用代理下载国外源registry.k8s.io镜像,并传到docker hub私有镜像库
日常的生产开发中,免不了从国外拉取镜像,但有个问题,我们可能访问不到那个镜像源,因此需要使用代理 https://labs.play-with-docker.com 具体步骤 使用docker hub ...
- 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务
场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...
- Docker篇之镜像打标签tag
日常线上活动中,当我们对系统进行开发时,做容器化管理,因为每一个版本不同,可能随着业务量的产生,需求的迭代更新,不同版本所需要的环境不同. 因此,为了满足这样的问题,我们通常做的就是对每一个版本来打标 ...
- Docker 拉取镜像及标签 pull | tag
Docker 拉取镜像及标签 pull | tag 重翻Fabric项目的源码,发现Docker部分内容,有很多不尽理解的地方,看着看着,就看到使用docker pull拉取Fabric镜像及使用do ...
- k8s mysql容器镜像_kubernetes(二)之Docker容器及镜像
容器及镜像 容器 常见的容器状态 running stopped paused created deleted 注意: 查看docker状态使用的命令: docker ps: 查看running状态的 ...
- docker 批量删除无tag标签镜像
docker images|grep none|awk '{print $3}'|xargs docker rmips: docker images :镜像列表 |grep none : 筛选含 no ...
- 什么,容器太多操作不过来?我选择Docker Compose梭哈
接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ...
最新文章
- properties文件如何注解多行加#
- orcale存储过程学习之路--创建空存储过程(二)
- 通过javascript实现的轻量级模态框解决方案(支持Ajax)
- C语言结构体使用与指针的理解
- SecureCRT 免安装、绿色版、免费版本
- C++笔记-利用远程线程注入获取PC版微信个人昵称
- 信息学奥赛C++语言: 队伍调整
- python 批量网址 网页截图_python实现网页截图
- ICE专题:编译环境构建
- 分享一套帮助你优化开发web应用的jQuery插件集 - Vanity Toolset
- js 运行中断停止_如何终止JS继续运行??
- 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
- idm2021中文版序列号加速下载百度云网盘大文件教程
- IEEE COMMUNICATIONS LETTERS 写作Latex模板
- 不用USB连接线或没有ADB驱动如何调试安卓
- 斐波那契数列C语言设计步骤,斐波那契数列c语言函数
- Java随笔记 - Java代码实现一个死锁程序
- 比 rm -rf /* 还骚的 Linux 19 个装 B 的命令!
- ue4打包h5_ue4学习之嵌入H5网页(web Brower)
- Nginx 设置域名转发到指定端口
热门文章
- Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0
- (一)使用appium之前为什么要安装nodejs???
- js实现排序去重计算字符次数
- # javascript 总结
- 二 ASP.NET AutoPostBack
- 如何在Raspberry Pi上设置两因素身份验证
- 汇新杯┃拼多多黄峥:普通的创业者,不普通的朋友圈_创成汇
- 16-djongo中间件学习
- PHP 7.2 新功能介绍
- CMD、AMD、commonJs 规范的写法