赞
踩
企业上云是比较热门的话题也是趋势,越来越多的企业放弃传统IDC,选择上云。因为把服务上云,一来可以降低企业技术开发成本,二来服务升级扩容灵活,减少运维成本。那么在容器集群的开发模式是怎样的呢?如何做到一键发布?我们来揭开它神秘的面纱。
接前文,我们演示过怎样把一个nginx服务部署到容器集群,然后了解CI/CD的前世今生,发现nginx部署流程还是挺繁琐的。那么有没有更加便捷的方式呢?答案是有的。本文通过部署一个SringBoot服务来体验便捷的交付模式。
系列文章完整目录
1、创建工程
使用早期文章的脚手架项目,在工蜂上创建一个SpringBoot book-service图书服务,模拟真实应用场景。
2、镜像文件
在项目代码根目录编写Dockerfile文件,用于流水线制作容器镜像(可以替换合适的基础镜像)。
FROM ccr.ccs.tencentyun.com/xxx/jdk8 MAINTAINER hanyi hanyi@qq.com WORKDIR /app COPY ./target/*.jar /app.jar ENV TZ='Asia/Shanghai' ENV JAVA_OPTS="-server -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:./gclogs -XX:+UseG1GC -Xms2048m -Xmx2048m " ENV SPRING_EXT=" -Dspring.profiles.active=test " ENV SERVER_PORT 8080 ENV LANG en_US.UTF-8 EXPOSE ${SERVER_PORT} ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom $SPRING_EXT -jar /app.jar " ]
1、创建镜像仓库
仓库参考《搭建大型分布式服务(二十五)如何将应用部署到TKE容器集群?》,新建一个个人TCR镜像仓库,用来存储book服务构建的镜像。(这里实际上也可以使用Coding自带的仓库,看个人使用习惯)
2、开通Coding
在刚才新建的仓库的【镜像构建】页,关联到Coding流水线。篇幅优先,省略开户和授权过程,有疑问的欢迎留意咨询。
3、容器集群授权
Coding关联到TKE容器集群,这步非常重要!设置后Coding才有权限去调度TKE容器集群。
为什么不使用TCR里的交付流水线呢?因为交付流水线仅支持的能力有限,例如我们SpringBoot服务需要jdk、maven等环境去编译代码,自带的交付流水线难实现。而Coding支持公用构建机和自建构建机,方便我们拉各种依赖和各种灵活配置调度流水线和流程插件。
1、新建Coding项目
跳转到Coding页面后,首先创建一个项目。Coding的管理一般是按项目划分的,在一个项目内可以管理各个服务的流水线和发布清单。例如这里创建一个天空一号DevOps项目。
2、关联代码
在代码仓库页关联我们之前创建book-service的代码仓库。Coding支持工蜂、gitlab、GitHub等仓库,按需选择,这里我使用的是腾讯云的工蜂。
3、构建计划
在持续集成页面,创建构建计划,目的是构建镜像并推送到镜像仓库(里面有比较多插件可以支持很丰富的功能)。里面的预置模板非常多,可以根据实际情况来选择。由于我们之前是使用腾讯云TCR个人版仓库,所以这里选择这个。
4、流水线配置 根据实际情况选择代码仓库、集群、工作负载和构建生成的镜像名称。可以看到,这里的底层是一个Jenkins配置文件。点击完成,就可以唤起容器镜像构建进程了。
注意,自定生成的流水线并没有设置构建命令,所以要稍微增加一个。我这里使用maven,所以流水线增加以下流程。mvn clean package -Dmaven.test.skip=true -X -e
假如这时候你还没在TKE容器集群创建工作负载,怎么办呢?一、可以参考前文部署nginx服务时手工创建工作负载,也可以通过Coding-持续部署页,快速生成工作负载。参考步骤⑤。
5、持续部署-新建工作负载
(1)假设您还没有在腾讯云TKE容器集群创建工作负载,可以通过Coding来创建。在部署控制台-应用,创建book-service应用。
(2)关联到上文创建的项目,天空一号。
(3)回到持续部署-Kubernetes 应用部署,点击快速发布。
设置工作负载的名称,点击确认即可。当然这种只适合快速验证的场景,复杂些的业务还需要去自定义部署流程,编写manifest。
稍等一会即可在容器集群看到book-service工作负载
6、持续部署-自动发布流程
当步骤4配置好构建计划和流水线后可以自动构建镜像,所以这里我们配置自动触发部署的流程,更新容器服务镜像版本。
(1)回到部署控制台,编辑部署流程。
(2)在基础配置里增加镜像触发器,根据镜像tag名称触发部署流程。
1、自动构建
代码提交后,自动触发持续集成中流水线镜像构建。
@RestController
public class IndexController {
@Value("${spring.wellcome.msg:TestPage}")
private String msg;
/**
* 测试页.
*/
@GetMapping({"", "/", "index.*"})
public String index() {
return "Hello " + msg;
}
}
2、自动部署
容器镜像构建完毕后,自动触发持续部署中预置的部署流程,更新容器工作负载的POD容器镜像版本,达到升级服务的目标。
3、验证一下。
至此,我们就成功使用Codeing流水线CI/CD来完成SpringBoot服务的升级啦,下一篇《搭建大型分布式服务(二十八)Serverless和服务编排》
加我加群一起交流学习!更多干货下载、项目源码和大厂内推等着你
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。