從頭改造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檔案中