从头改造springcloud框架项目部署到k8s上最佳实践操作

时间:2021-06-30 17:39:23   收藏:0   阅读:0

springcloud框架项目目录结构

技术图片

项目使用的其他软件说明

项目使用的其他软件,比如redis,nacos,mysql,rabbitmt,emqx,nexus等都是外置的,不部署到k8s中

流程示意图

技术图片

编写Dockerfile文件

需要在项目每个模块的根目录下编写Dockerfile文件
Dockerfile文件参考这篇文章:https://www.cnblogs.com/sanduzxcvbnm/p/14950753.html

FROM jdd.io/jre:1.8.0_275
MAINTAINER 1103324414@qq.com
EXPOSE 8080
ADD target/gateway-1.0.0.jar gateway.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "gateway.jar"]
CMD ["--spring.profiles.active=test"]

说明:
1.jdd.io/jre:1.8.0_275镜像为自己自定义的镜像,具体制作办法参考网址:https://www.cnblogs.com/sanduzxcvbnm/p/13220054.html

在项目根目录下编写.gitlab-ci.yml文件

项目代码是在gitlab上,使用gitlab-runner来作为CI/CD工具,不使用jenkins.
gitlab-runner的安装,跟gitlab上的项目进行构造关联,参考文章网址:https://www.cnblogs.com/sanduzxcvbnm/p/13815594.html

variables:
  DOCKER_DRIVER: overlay2
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
#  CURRENT_PROJECT: jdd-parking-cloud-admin # 单个项目使用,放弃这个变量,使用全局变量:$CI_PROJECT_NAME


cache:
  paths:
    - .m2/repository/

stages:
  - package
  - build

maven_step:
  tags:
    - maven
  stage: package
  script:
    - mvn clean package -Dmaven.test.skip=true # 编译整个项目
  artifacts:
    paths:
      - target/*.jar # 注意这行,供下面的docker使用
  only:
    - prod

develop_docker_step:
  tags:
    - docker
  stage: build
  script:
    - export TAG=`date "+%Y%m%d%H%M%S"`
    # 推送到nexus仓库
    - docker build -t registry.kubeoperator.io:8083/jdd-k8s/$CI_PROJECT_NAME:$TAG .
    - docker login -u admin -p 7b98a6ed9mxjXa594f6 registry.kubeoperator.io:8083
    - docker push registry.kubeoperator.io:8083/jdd-k8s/$CI_PROJECT_NAME:$TAG
    - docker rmi registry.kubeoperator.io:8083/jdd-k8s/$CI_PROJECT_NAME:$TAG
    # 推送到阿里云镜像仓库,事先在gitlab上配置好仓库环境变量
#    - docker build -t "${CI_REGISTRY}"/jdd-resp/$CI_PROJECT_NAME:$TAG .
#    - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
#    - docker push "${CI_REGISTRY}"/jdd-resp/$CI_PROJECT_NAME:$TAG
#    - docker rmi "${CI_REGISTRY}"/jdd-resp/$CI_PROJECT_NAME:$TAG
  only:
    - prod

nexus仓库

参考文章:https://www.cnblogs.com/sanduzxcvbnm/p/13098712.html
https://www.cnblogs.com/sanduzxcvbnm/p/13099635.html

使用kubeoperator安装k8s

参考网址:https://kubeoperator.io/docs/index.html

使用kuboard作为k8s集群的管理web界面

参考网址:https://kuboard.cn/install/v3/install.html

k8s集群上部署项目

注意nacos注册/配置中心,容器ConfigMap和参数设置
参考网址:https://kuboard.cn/learning/k8s-practice/spring-blade/deploy/blade-admin.html#创建-deployment
https://www.cnblogs.com/sanduzxcvbnm/p/13207317.html
https://www.cnblogs.com/sanduzxcvbnm/p/14932097.html

提交代码后自动更新k8s中pod使用的镜像标签

需要添加到.gitlab-ci.yml文件中
技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!