最近在做基于容器的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相关推荐

  1. 容器单机编排工具 Docker Compose,swap 限制,配置默认的CFS调度程序,Stress-ng 压力测试工具,docker官网镜像上传,及阿里云镜像上传,Docker 的资源限制

    目录 Docker Compose介绍   有版本问题 一键生成 docker-compose.yml docker官网镜像上传,及阿里云镜像上传 Docker 之分布式仓库 Harbor Docke ...

  2. dockerfile、docker compose、k8s区别

    1.各自功能 dockerfile: 构建单个服务镜像,以脚本形式 docker-compose:多镜像编排容器 k8s:跨服务编排 2. 详解 2.1 dockerfile 从无到有的构建镜像,包括 ...

  3. 使用代理下载国外源registry.k8s.io镜像,并传到docker hub私有镜像库

    日常的生产开发中,免不了从国外拉取镜像,但有个问题,我们可能访问不到那个镜像源,因此需要使用代理 https://labs.play-with-docker.com 具体步骤 使用docker hub ...

  4. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

  5. Docker篇之镜像打标签tag

    日常线上活动中,当我们对系统进行开发时,做容器化管理,因为每一个版本不同,可能随着业务量的产生,需求的迭代更新,不同版本所需要的环境不同. 因此,为了满足这样的问题,我们通常做的就是对每一个版本来打标 ...

  6. Docker 拉取镜像及标签 pull | tag

    Docker 拉取镜像及标签 pull | tag 重翻Fabric项目的源码,发现Docker部分内容,有很多不尽理解的地方,看着看着,就看到使用docker pull拉取Fabric镜像及使用do ...

  7. k8s mysql容器镜像_kubernetes(二)之Docker容器及镜像

    容器及镜像 容器 常见的容器状态 running stopped paused created deleted 注意: 查看docker状态使用的命令: docker ps: 查看running状态的 ...

  8. docker 批量删除无tag标签镜像

    docker images|grep none|awk '{print $3}'|xargs docker rmips: docker images :镜像列表 |grep none : 筛选含 no ...

  9. 什么,容器太多操作不过来?我选择Docker Compose梭哈

    接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ...

最新文章

  1. properties文件如何注解多行加#
  2. orcale存储过程学习之路--创建空存储过程(二)
  3. 通过javascript实现的轻量级模态框解决方案(支持Ajax)
  4. C语言结构体使用与指针的理解
  5. SecureCRT 免安装、绿色版、免费版本
  6. C++笔记-利用远程线程注入获取PC版微信个人昵称
  7. 信息学奥赛C++语言: 队伍调整
  8. python 批量网址 网页截图_python实现网页截图
  9. ICE专题:编译环境构建
  10. 分享一套帮助你优化开发web应用的jQuery插件集 - Vanity Toolset
  11. js 运行中断停止_如何终止JS继续运行??
  12. 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
  13. idm2021中文版序列号加速下载百度云网盘大文件教程
  14. IEEE COMMUNICATIONS LETTERS 写作Latex模板
  15. 不用USB连接线或没有ADB驱动如何调试安卓
  16. 斐波那契数列C语言设计步骤,斐波那契数列c语言函数
  17. Java随笔记 - Java代码实现一个死锁程序
  18. 比 rm -rf /* 还骚的 Linux 19 个装 B 的命令!
  19. ue4打包h5_ue4学习之嵌入H5网页(web Brower)
  20. Nginx 设置域名转发到指定端口

热门文章

  1. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0
  2. (一)使用appium之前为什么要安装nodejs???
  3. js实现排序去重计算字符次数
  4. # javascript 总结
  5. 二 ASP.NET AutoPostBack
  6. 如何在Raspberry Pi上设置两因素身份验证
  7. 汇新杯┃拼多多黄峥:普通的创业者,不普通的朋友圈_创成汇
  8. 16-djongo中间件学习
  9. PHP 7.2 新功能介绍
  10. CMD、AMD、commonJs 规范的写法