從頭改造springcloud框架項目部署到k8s上最佳實踐操作


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文件中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM