Kubernetes Tips系列 - 合理设计你的镜像名称及tag
前言
容器化给我们带来很多好处,比如镜像交付的不可变性,交付物的标准化,使得CICD的能力能够进一步提升。合理的设计好镜像名称更加能够在管理镜像及出问题的时候事半功倍。
一个栗子
我们使用阿里云的容器镜像服务托管镜像,镜像的名字是这样的格式:registry.cn-qingdao.aliyuncs.com/[namespace]/[imageName]:[buildNumber]-[gitCommitHash]
registry.cn-qingdao.aliyuncs.com
这部分是描述镜像仓库,没什么可说的
imageName
镜像的名字,以我们的经验是{appName}-{category}-{env},appName跟category还好理解,一个是应用名字,一个是分类,例如是frontend的http服务还是backend的rpc服务,见名知意,那这个env是什么呢?说好的镜像不可变呢,为啥又跟环境扯上了关系。
这个就要说下我们的开发流程了,按照标准最简单的CICD流程
所有的开发人员从master分支checkout独立的featureBranch,在各自的featureBranch上进行开发,
开完毕后merge到master分支进行构建镜像测试,然后预发,然后发布到线上
但是现实总是残酷的,我们作为一个创业公司,不可避免的要提高开发效率,多个版本并行,跨迭代测试,功能先测后上是常有的事,那么这个如何解决呢?
经过我们的讨论,我们这样设计的,开发人员在各自的featureBranch上进行开发,开发完毕在DEV环境自测,测试完毕后merge到Test分支,测试环境用Test分支进行测试。
但是发布的时候就有所不同,发布的话是用master分支进行发布需要上线的功能merge到master分支进行发布,所以测试同学测试的分支未必是发布的分支,这样是否会有问题?其实是有问题的,但是在效率面前,我们承担了风险,为了使风险最低,镜像不会直接上线,而是走预发流程在staging进行基本的验证,重要服务可能还会导入小量的流量验证,真正上线的时候,还有金丝雀发布来进一步保证。我们用master构建出的镜像为了与测试分支区分,就标注了prod字样,意思是线上镜像。这样就解释了为什么镜像名字当中含有环境的信息。
buildNumber
这个是我们jenkins系统这次构建的构建号,通过构建号能够找到构建日志信息
gitCommitHash
这个是git的短hash,在git当中可以通过这个hash值找到提交点的各种详细信息,甚至提交点被合并到了哪些分支等等的信息,我们可以通过提交点来回退版本,更精准。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云ECS如何创建自定义镜像?
在标准的系统镜像不能满足要求(比如在创建实例时候需要有一些特定的应用或者配置,或者在标准镜像中没有包含所需的操作系统)或者是需要进行整个服务级别的共享、迁移时就需要用到自定义镜像。 下面我们来看看如何创建自定义镜像,主要有以下三种途径: 第一、根据实例创建。 在ECS管理控制台找到一个实例点击更多->磁盘和镜像->创建自定义镜像 在这里设置自定义镜像名称之后点创建,自定义镜像就开始创建了。我们可以在镜像中查看自定义镜像的创建进度。 第二、根据快照创建自定义镜像 这种方法创建自定义镜像比较快,因为这个快照已经存在。 第三、线下导入自定义快照。 接下来,我们看看自定义镜像的一些常用操作。 1、通过自定义镜像创建实例 创建实例的页面里就可以直接选择自定义镜像。 2.通过自定义镜像来进行跨region的环境复制 我们这里将自定义镜像复制到华北一,然后就可以直接在华北一中找到我们刚才复制过来的自定义镜像。 3、共享自定义镜像 共享自定义镜像需要输入对方的ID,然后点共享就行了。 以上就是阿里云镜像创建的全部内容,有什么疑问可以留言告诉我。阿里云ECS服务器更多信息:https://w...
- 下一篇
阿里云ECS服务器Ubuntu配置MySQL远程访问
root账户登录服务器Ubuntu16.04 apt-get update apt-get install mysql-server mysql-client; 安装时会让你设置root密码,输入2次。 本地连接mysql测试: mysql -uroot -p(是安装时你设置的root密码) 远程连接: mysql默认是只允许本地主机访问127.0.0.1,并关闭了远程连接,所以安装之后打开远程连接,并修改配置允许其他ip访问。 第一步: vim /etc/mysql/mysql.conf.d/mysqld.cnf。发现bind-address = 127.0.0.1。把它注释掉这里我们注释掉这一行,然后按esc :wq保存退出(vim基本命令)然后重启mysql就好了 /etc/init.d/mysql restart 或者 service mysql restart 第二步: mysql -uroot -p; show databases; use mysql; update user set host='%' where user='root' and host='localho...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装