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

