1. 程式人生 > 其它 >從頭改造springcloud框架專案部署到k8s上最佳實踐操作

從頭改造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 [email protected]
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檔案中