Rancher+k8s+Jenkines流水线+SpringCloud 微服务部署实践

Rancher+k8s+Jenkines流水线+SpringCloud 微服务部署实践

容器虚机规划

k8s 用来管理docker容器,runcher用来管理k8s, Jenkins负责流水线发布,预计一个master,三个节点

服务器环境容器规划

docker pull mysql:5.7
docker pull redis:5
docker pull nginx:1.10
docker pull rabbitmq:3.7.15-management
docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
docker pull logstash:7.6.2
docker pull mongo:4.2.5

应用容器规划

mall-monitor 监控中心
mall-gateway 微服务网关
mall-auth 认证中心
mall-admin 商城后台服务
mall-portal 商城前台服务
mall-search 商城搜索服务

虚拟机环境容器规划

节点名称 安装软件 ip 内存/cpu 硬盘 备注
k8s-mall-master rabbitmq/elasticsearch/kibana/logstash/kebute/kebuteadm 192.168.0.221 4G/4c 50G
k8s-mall-node1 nginx/mysql/redis/kebute 192.168.0.212 4G/4c 50G
k8s-mall-node2 rancher/mongo/kebute 192.168.0.213 4G/4c 50G
k8s-mall-node3 harbor/jenkins/kebute 192.168.0.214 8G/4c 50G

K8s环境搭建

参考 https://blog.csdn.net/qq_34168515/article/details/105330287 链接

该链接很完善,按照此步骤就可以搭建成功,按图索骥即可

ps:Flannel 插件下载不了可以参考这个:https://www.jianshu.com/p/5b41e6654332

Harbor环境搭建

https://blog.csdn.net/qq_39314099/article/details/105710428

push 镜像需要注意镜像tag的格式 要是 ”harbor域名+项目“否则会导致无权限push。

Rancher搭建

执行下述命令开启Rancher

rancher环境搭建

docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.4.8 --server https://192.168.0.213 --token mgzdkzkw9zsknlnm2529hrjglnnctdj5j6zt55sf6w9wxt7xgzww7v --ca-checksum 6144544391ec6c467327b166d8d19cd46e76bdfc95e421245affaff518ba3dbc --worker

Rancher配置,集群添加参考一下链接

https://blog.csdn.net/wyl9527/article/details/113600869

Jenkins环境搭建

安装参考一下链接,很简单几乎没啥坑,完全可以傻瓜安装。

https://www.jianshu.com/p/368685768680

SpringCloud应用流水线发布

主要应用部署可以参考这个链接 https://www.jianshu.com/p/2d89fd1b4403

ps:

  1. /.kube/config 可以把对应的配置拷贝到Jenkins用户目录下,

  2. 如果push镜像没权限记得创建harbor的密钥,参考一下链接:https://blog.csdn.net/xukangkang1hao/article/details/80839834

  3. 可使用pipeline脚本如下:记得先添加HARBOR_CREDS 证书。

pipeline {
 agent any
 // 环境变量
 environment {
 HARBOR_CREDS = credentials('jenkins-harbor-creds')
 }
 // 入参定义
 parameters {
 string(name: 'model_name', defaultValue: 'mall-admin', description: '部署模块名称')
 string(name: 'registry_ns', defaultValue: '192.168.0.214/mall', description: '镜像命名空间')
 string(name: 'tagsNmae', defaultValue: '1.0-SNAPSHOT', description: 'tag名称')
 }
 stages{
 stage('1.检出代码') {
 steps{
 sh 'rm -rf /home/jenkins_home/workspace/mall-swarm/*'
 // 检出代码
 checkout([$class: 'GitSCM', branches: [[name: "*/master"]], 
 doGenerateSubmoduleConfigurations: false, 
 extensions: [], 
 submoduleCfg: [], 
 userRemoteConfigs: [[
 url: "https://gitee.com/heapstone_admin/mall-swarm.git"]]])
 }
 }
 stage("2.编译打包"){
 steps{
 // 编译打包
 sh "mvn clean install -pl mall-common,mall-mbg -am"
 sh "cd mall-admin"
 sh "mvn clean package -pl ${params.model_name}"
 }
 }
 stage('3.构建镜像及推送到docker仓库') {
 steps {
 echo "build images " 
 sh "docker --version"
 sh "docker build -t ${params.registry_ns}/${params.model_name}:${params.tagsNmae} . -f ${params.model_name}/src/main/dockerfile/Dockerfile"
 echo "push images " 
 sh "docker login -u ${HARBOR_CREDS_USR} -p ${HARBOR_CREDS_PSW} 192.168.0.214"
 sh "docker push ${params.registry_ns}/${params.model_name}:${params.tagsNmae}" 
 sh "docker image rm -f ${params.registry_ns}/${params.model_name}:${params.tagsNmae}"
 echo "push success! " 
 }
 }

 stage("4.kubectl apply") {
 steps {
 sh "kubectl apply -f  document/k8s/${params.model_name}-deployment.yaml --namespace=mall-env"
 sh "kubectl apply -f  document/k8s/${params.model_name}-service.yaml --namespace=mall-env"
 echo "项目部署成功"
 }
 }
 }
}

至此,微服务部署实践完成,至于其他的不敢保证的坑,踩到再说哈

你可能感兴趣的:(Rancher+k8s+Jenkines流水线+SpringCloud 微服务部署实践)