如何在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/website
newTag: 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:d7s8f12
ports:
- 80:80
通过shell脚本修改字符串app:后面的镜像Tag,达到注入Tag的目的
sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml'
同样,在做自动部署时,由CI给以上脚本导入此次Git Tag,作为镜像Tag。
#!/bin/sh
cd /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和docker compose常用操作命令
首先区分一下docker中几个概念 Image:镜像,相当于一个root文件系统,不包含任何动态数据 Container:容器,镜像运行时的实体,实质是进程,容器进程运行于属于自己的独立的命名空间 d ...
- 如何在K8S中优雅的使用私有镜像库 (Docker版)
前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...
- 转 docker创建私有仓库和k8s中使用私有镜像
docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5 ...
- docker安装指定版本TAG的镜像
在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...
- 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务
场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序 ...
- 使用docker compose 构建多个镜像
定义docker compose version: ' services: composedb: image: mysql/mysql-server container_name: composedb ...
- Rancher + k8s + docker 部署资料
一.k8s 文档: https://jimmysong.io/kubernetes-handbook/concepts/deployment.html 命令行大全 https://kubernetes ...
- docker从零开始(三)服务初体验docker compose
决条件 安装Docker 1.13或更高版本. 获取Docker Compose.在适用于Mac的Docker和适用于Windows的Docker上,它已预先安装,因此您可以随意使用.在Linux系统 ...
- k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)
k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...
随机推荐
- 多任务-python实现-迭代器相关(2.1.12)
@ 目录 1.需求 2.斐波那契数列演示 3.并不是只有for循环能接收可迭代数据类型,list,tuple也可以 1.需求 类比 早上起来吃包子 1.买1年的包子,放在冰箱,每天拿一个 2.每天下楼 ...
- 技术基础 | 改进版的Apache Cassandra客户端请求路由
最近我们在客户端的驱动程序中引入了一些变更,这些变更会影响传入的请求在Apache Cassandra集群内的分发方式. 新的默认负载均衡算法即将随驱动程序推出,这些算法将有助于缩短长尾延迟,并提 ...
- 图解 IP 基础知识!
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer IP 协议 路由器对分组进行转发后,就会把数据包传到 ...
- NET 5使用HangFire定时任务
注意:1. 当Hangfire服务由Web程序来启用时,默认情况下,web应用程序中的Hangfire服务器实例在第一个用户访问您的站点之前不会启动.甚至,有一些事件会在一段时间后导致web应用程序关 ...
- Excel 单元格快速填充技巧
1.普通的复制填充空白单元格 直接左键选中单元格右下边框向下拉,选择填充格式(复制填充) 2.普通的顺序填充空白单元格 直接左键选中单元格右下边框向下拉,选择填充格式(序列填充) 3.其他方式填充空白 ...
- Pygame的简单总结
Pygame learn from mooc 私货:在调用函数时,可以 1.import tkinter (不过在使用时还要加前缀如tkinter.Tk()) 2.import tkinter as ...
- Angular实战之使用NG-ZORRO创建一个企业级中后台框架(进阶篇)
前言: 上一篇文章我们讲了如何在创建的Angular项目中快速引入ng-zorro-antd企业中台组件库,并且快速构建后台管理页面框架模板.这一章主要介绍的是如何在创建好的后台管理页面框架的快速生成 ...
- java如何实现入职时间到现在 java如何计算知道入职时间, 求工作时长格式为年--月--日。
Date ruZhi = new Date("入职年月bai"); Date now = new Date(); //算出du来时间夸格zhi多长 long shiChang = ...
- CentOS8 下Nginx使用教程
1.nginx安装 dnf install nginx -y 2.nginx常用目录 nginx.conf目录:/etc/nginx.nginx.conf nginx启动目录:/usr/sbin/ng ...
- JavaDailyReports10_09
***************************** 1.2.2 布局管理器 BorderLayout 把容器的布局分为东西南北中五个部位,默认是中间,平铺占满! 1 package awt; ...