wydevops——微服务打包发布如此简单!

       本文使用Java微服务项目为例作为wydevops打包发布微服务的首秀,充分展示了它的敏捷、高效和易扩展性。它必定会为微服务开发人员和团队带来的生产力的显著提升。让我们走进wydevops的世界...

     wydevops有两种工作方式:本地工作方式和Jenkins工作方式。本文主要介绍本地工作方式,Jenkins工作方式另外行文介绍。

1.  准备阶段     

     在本地工作方式下,wydevops可以工作在两种配置环境下,第一种是无仓库环境(没有配置有docker仓库和chart仓库的工作环境),第二种是有仓库环境(配置有docker仓库和chart仓库的工作环境)。为了后续的演示你需要做好如下准备:

  • 有一台安装了Windows系统的计算机。
  • 已安装好了Docker Desktop最新版本,并使能自带的k8s。
  • 已安装有IntelliJ idea 开发工具。
  • 确保能通过网络访问dockerHub网站。
  • 安装有git工具(确保gitbash能正常工作)。
  • 安装有maven工具(3.8.3+)。
  • 安装好wsl2 + ubuntu on windows(ubuntu中要打开SSH服务:sudo service ssh start, 没有ssh可执行命令sudo apt install openssh-server进行安装),或者另外一台安装有docker(最好是一台K8SApiServer节点)的并可以免密SSH连接的计算机。在ubuntu中运行ip addr show命令从中找到ubuntu系统的IP地址,如下图:

ubuntu系统的IP地址为172.28.8.151。后面会使用到整个地址。

  • 最后在ubuntu中运行:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.1/deploy/static/provider/cloud/deploy.yaml 在K8S中安装好ingress-nginx网关

完成上述准备工作后,我们就有了一个部署微服务的docker 和 k8s 环境。

2. 克隆wydevops源码

https://gitee.com/tmt_china/wydevops源码工程到本地d/wsdevops目录中icon-default.png?t=N7T8https://gitee.com/tmt_china/wydevops

        如果是团队使用wydevops,则需要在某台服务器上下载好源码,公司统一维护这份源码和其中的配置,例如开发集群的节点信息、K8S集群的apiServer信息,使用的网关信息、域名信息等。团队中的成员使用远程挂载的方式把该源码目录挂载到本地,例如windows下可以使用winfsp + sshfs-win方案。这样就可以在团队中共享同一份wydevops源码和配置,也避免了各成员独立下载源码导致的配置不同步的问题。

        如果是个人使用,则直接下载源码到本地即可。           

3. 配置目标部署环境

       打开下载的源码目录,打开script/templates/config/java/_ci-cd-template.yaml配置文件。       

      我们先介绍无仓库环境这种最简单的情况下wydevops的使用。在无仓库环境下,wydevops仅支持微服务的docker部署方式,因此此处需要将配置文件中deployType参数设置为docker。

      devApiServer参数是采用K8S部署方式时你希望微服务部署的目标K8S集群的apiserver节点信息。支持部署到多个集群,采用英文逗号隔开。这里可以先配置好,以便后续演示K8S部署方式。修改devApiServer参数修改为上述执行ip addr show命令得到的IP地址,以及SSH端口、登录账号和密码(注意要能免密SSH连接该服务器),格式如下图(使用竖杠作为分隔符):

 继续将该文件下拉到最后面,修改nodeIPs参数,如下图:

       nodeIPs参数是个列表,可列举你想使用docker部署方式部署的所有目标节点。wydevoops会自动检测目标节点的架构信息,并自动部署架构匹配的服务镜像。这里仅配置了一个节点的信息(注意要能免密SSH连接该服务器)。

4. 创建Java例子项目(源码仓库的sample/java目录下有这个例子)

     使用IntelliJ idea,创建一个如下图所示目录结构和文件的Java maven项目。

           图中展示了application.yml文件的内容,展示出来的这些参数都是wydevops会自动读取(通过源码中script/templates/config/java/param-mapping目录下的配置文件指定的,,也可在项目级定义这类配置文件。如下图,可先看看后续会详细介绍)和处理的参数。                 

       部署时wydevops会将spring.profiles.active自动设置为prod,并将application.yml和application-prod.yml自动添加到ConfigMap配置文件中(K8S部署方式)或者自动挂载到微服务docker容器中(docker部署方式)

       wydevops会将url-prefix参数的值视为K8S部署方式的网关路径设置,自动完成Ingress-nginx类型的路由配置(默认使用Ingress-nginx网关)或者Apisix网关类型的路由配置。

       wydevops会自动判断management.endpoints.web.exposure.include的值是否为”*“,如果是且management.endpoints.enabled-by-default=true则在K8S部署模式下将自动配置和开启服务探活和就绪探针。

        另外wydevop会读取application-prod.yml文件中配置server.port参数值,将根据这个值:

  • 在构建docker镜像时声明需要开放的端口
  • 在构建chart镜像时生成匹配的ClusterIP类型或NodePort类型的Service配置,并且服务探活和就绪探针使用的端口也是server.port指定的值

       上述这些参数不特定必须放在某个文件中,wydevops会依次扫描application-prod.yaml和application.yaml文件中的参数(扫描文件列表也是在script/templates/config/java/param-mapping目录下的配置文件指定的,也可在项目级定义这类配置文件),读取第一个遇到的参数值。

       图中wydevops-run.sh文件是复制的wydevops源码中script目录下的wydevops-run.sh.tmpl文件,删除.tmpl后缀后得到的。其内容如下:

        这个文件是wydevops的本地启动文件,各标志或参数的释义可直接运行 wydevops.sh -h参看,如下:

重点说明:

-A linux/amd64 #指定构建的架构
-O linux/amd64 #指定生成的离线安装包的架构(即安装包中携带的docker镜像的架构)
-B single      #指定构建类型为单镜像模式,也即不进行分层打包,只生成一个docker镜像
-I /d/cachedImage #指定外网拉取的第三方镜像的本地缓存目录,会优先在这个目录中查找目标镜像
-L java #指定项目的语言类型
-S build,docker,chart,package,deploy #指定项目需要构建的过程,这里5个构建过程全部都要执行
-M local #指定wydevops工作模式为本地模式
-T true  #是否强制使用内置模板,这个参数已废弃
-W "${_SCRIPT_ROOT_DIR}" #指定wydevops源码中script目录的路径
-P "${_PROJECT_MAIN_MODULE_DIR}" #指定需要构建的项目源码中主模块的路径。
#-C "harbor,chartmuseum,192.168.1.214:80,admin,Harbor12345,80" #Chart镜像仓库的信息,这里注释掉了
#-D "harbor,registry.docker.home,192.168.1.214:80,admin,Harbor12345,80" #docker镜像仓库的信息,这里注释掉了
#-N "http://192.168.100.236:8000/atom/v1/deployPlatform/api/update" #外部通知接口URL地址,这里注释掉了

至此,例子项目的wydevops配置已经完成了(好像啥也没干呀)。

5. 执行本地构建

在上述wydevops-run.sh文件所在的目录中打开git bash窗口,

执行命令:bash  wydevops-run.sh,则会显示如下输出:

经过几分钟到十几分钟的运行(视你的计算机配置而定),如果成功则会显示如下信息:

即表示java-sample服务已成功采用docker方式运行起来了。

6. 结果验证

如上图,可以看到java-sample容器已经正常运行了。接着打开浏览器,输入http://localhost:8052/wydevops/v1/sample/hello, 成功返回正确结果,如下图所示。

至此,无仓库环境下的微服务docker部署方式已介绍完毕。主要工作集中在环境搭建部分。下一篇文章,将在这个例子的基础上介绍K8S部署方式,主要内容就是配置nexus和harbor环境。如果你已经安装有这两者之一,则仅需要:

  • 将前述deployType参数设置为:k8s
  • 将devApiServer参数按格式设置正确(IP地址|SSH端口|SSH账号|SSH密码)
  • 将wydevops-run.sh文件中的-C 和 -D两行去掉注释,并按wydevops.sh -h 命令中的说明配置好这两个参数。特别注意,集群内部使用的docker仓库应与项目中此处"-D"参数是同一个仓库,否则服务部署后无法拉取到docker镜像。
  • 执行命令:bash  wydevops-run.sh,成功执行后目标K8S集群中就能查询到java-sample相关信息。

    这篇文章就写道这里!感谢您的关注。

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值