暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes遇见Wercker -中

1421

Kubernetes是谷歌贡献的容器编排与管理自动化的开源平台,经过近两年的发展,已经成为容器编排领域的事实标准。我们如何在本地快速部署Kubernetes集群?如何在上面开发和部署应用?应该遵循怎样的流程?本系列文章将通过一个完整的流程,展示如何在本地快速构建单机版Kubernetes集群,如何通过容器化的CI/CD平台Wercker将Spring Boot应用打包成Docker 镜像发布到Docker Hub镜像仓库,以及如何将镜像运行在Kubernetes集群中。

本文将展示如开发Spring Boot应用并使用Wercker构建自动化的CI/CD流程。

所有相关代码托管在:https://github.com/georgexiang/wercker-springboot.git.


             

用Wercker构建自动化的Spring Boot应用

Wercker介绍

Wercker是基于Docker的CI/CD自动化平台,开发者通过利用Wercker提供的平台和工具,自动生成应用并部署到各种云平台,其支持的平台包括GCE、AWS、Azure、甲骨文公有云或者Kubernetes 集群等环境。Wercker通过将发布流水线和目标云供应商解耦开,来流水线化部署流程,这样可以降低从一个平台迁移到另一个平台或者在多云上部署相同应用程序的复杂程度,无论你是想要发布到多云上或者想要避免供应商锁定,Wercker都能帮助你部署应用程序,达到CI/CD自动化程度的最优化。

构建Spring Boot应用

本地开发环境介绍:

开发工具:NetBeans

GitHub 账号:

需要自己申请开通,https://github.com/

Wercker账号:

需要自己申请开通,http://www.wercker.com/,开通Wercker账号时,可以将GitHub账号与Wercker账号连通,或者使用GitHub账号直接登录Wercker。

使用NetBeans构建本地wercker-springboot应用

将wercker-springboot 工程clone到本地环境中:

wercker-springboot程序源码:

程序分为后端和前端,后端为使用springboot 类库编写的web 应用,响应”/”和”/env”的访问请求,将请求指向welcome.jsp 和environment.jsp资源

前端jsp比较简单,welcome.jsp显示一段描述文字和一张图片。

Maven pom文件

Maven使用maven-assembly pluginwercker-springboot应用进行构建,生成的war包文件发布在本地的target目录下。

编译构建本地应用过程:

运行 mvn install ,本地应用构建成功。

启动本地wercker-springboot 应用

cmd进入应用的target目录,cmd 中运行,启动应用。

java -jarspringbootdemo-0.0.1.war

通过浏览器,访问本地应用成功。

构建Wercker 应用:

Wercker是一个容器化的CI/CD平台,Wercker可以通过webhook监听GitHub上的代码提交的事件,从而触发Wercker本身的流程,Wercker将从GitHub上获取托管的工程源代码,执行一系列的操作,生成容器的镜像,然后将镜像存储到指定的容器镜像仓库。

wercker文件分析:

wercker-springboot工程中,查wercker.yml文件。

wercker.yml文件中,定义了box-指定使用的基础镜像,build和push两个pipeline。build pipeline包含一个step-script,运行mvn install的脚本。push pipeline里包含一个step-internal/docker-push,将镜像推到docker hub 镜像仓库里存储起来,inertnal-docker-push需要镜像仓库的登录信息,从系统变量里获取。wercker.yml不能直接在本地运行,需要在wercker.com平台上运行。

使用Wercker配置自动化的CI/CD流程

使用GitHub账号,登录wercker.com。

选择“Add Application”

选择wercker-springboot ,选择下一步直至构建Wercker Application 完成。

由于 wrecker-springboot已有定义完成的wercker.yaml文件,选择“trigger a build now”

Wercker会自动完成应用的build pipeline。

选择workflows ,增加新的pipeline。

在pipeline编辑过程中,分别填入name、YML pipeline name、hook type,hook type 选择“default”

在pipeline里分别增加四个环境变量:

  • DOCKER_USERNAME-docker用户名

  • DOCKER_PASSWORD-docker 密码

  • DOCKER_REPOSITORY-docker hub repository的名称

  • DCCKER_REGISTRY-docker hub api 名称

编辑workflow,在build pipeline 之后加入docker push pipeline ,形成一个完整的workflow,Wercker Application构建完成。Wercker Application 将build完成的wercker-springboot web 应用,打包成docker image,然后push到docker hub上,这个过程自动完成。

NetBeans提交修改,触发Wercker云端操作

修改welcome.jsp,提交代码修改到GitHub

GitHub上查看代码提交成功。

Wercker 上查看wercker application workflow执行成功

Docker Hub上查看新构建完成的镜像存储成功。

至此,本地开发Spring Boot应用并使用Wercker构建自动化的CI/CD流程完成。下一篇文章中,将展示如何在Kubernetes cluster中使用Wercker构建的Spring Boot镜像提供服务。

作者简介

向志华,Oracle云平台高级售前顾问,专注 Application Development PaaS 产品及服务,同时关注Docker容器产品及Kubernetes容器调度产品方向。13年IT行业从业经验,擅长J2EE产品架构及开发。加入Oracle之前,供职于IBM,参与过OpenStack相关产品研发工作。您可以通过george.xiang@oracle.com,与他联系。

了解更多,敬请关注甲骨文开发者社区......

文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论