• SpringBoot项目容器化并部署到kubernetes

    背景:

    通常基于java的项目一般使用tomcat等容器进行部署,而Springboot项目也是基于内置的一些容器来运行,如果要将SpringBoot项目运行于Docker或者kubernetes中,就不能仅仅打成war来进行部署,需要进一步将项目实现容器化,之后在运行在这些容器中。

    运行环境:

    操作系统:ubuntu18.04LTS

    软件安装:jdk8+,nodejs,dockerversion18.09.0,docker-composeversion1.23.2

    gradle4.10.2, idea

    1.后端项目Docker化

    本项目在IDEA环境中进行操作,采用gradle来管理项目依赖,首先添加docker插件:build.gradle->buildscript->dependencies添加gradle-docker插件:

    classpath”se.transmode.gradle:gradle-docker:1.2″

    应用插件:

    applyplugin:’application’

    applyplugin:’docker’

    经过上面的配置之后可在 gradle -> [project] -> Tasks-> docker中看到默认的插件distDocker.

    关于此插件的更多使用信息参考:https://github.com/Transmode/gradle-docker

    构建自己的task脚本:

    SpringBoot项目容器化并部署到kubernetes

    以上脚本经过gradle刷新之后需会在tasks里面生成名为buildDockerfile的插件,双击运行次插件可在build/docker/目录下生成dockerfile, 项目的war包,在项目文件下运行 build_image.sh 可以生成docker image, 并且会运行项目

    build_image.sh脚本内容:

    SpringBoot项目容器化并部署到kubernetes

    2.使用docker-compose 运行项目

    docker-compose可以简单的编排docker镜像服务,在本项目中我们使用docker-compose创建容器,运行容器。

    3. 使用kubernetes 来部署项目

    项目的运行都是基于pod来实现,但是pod运行出现一些错误,或者挂掉,不会自动重启服务,所以来办都是用deployment来做,下面编写一个deployment的yml文件来使项目在kubernetes中跑起来。

    前置条件:

    1)项目容器化

    2)镜像已经push到中央仓库

    3)已经搭建好kubernetes集群

    注意:在kubernetes集群每个node节点,master节点配置私服访问,因为不知道pod会具体存在于哪个节点上面,如果不做此配置,会出现镜像拉取错误。

    deployments.yml:

    SpringBoot项目容器化并部署到kubernetes

    创建deployment:

    kubectl create -f <path_to_ samply-app-deployments.yaml>

    查看创建pods和deployment:

    kubectl get po # 查看pod

    kubectl get deploy # 查看deployment

    创建一个LoadBalancer类型的service,方便我们从kubernetes外部来访问服务:

    services.yml:

    SpringBoot项目容器化并部署到kubernetes

    创建服务:

    kubectl create -f <path_to_ samply-app-services.yaml>

    查看服务:

    kubectl get svc #查看服务

    通过loadBalancer的ip地址和端口号,就可以访问我们部署的服务了。

    «
    »
以专业成就每一位客户,让企业IT只为效果和安全买单

以专业成就每一位客户,让企业IT只为效果和安全买单