基于kubernetes平台微服务的部署

首先下载插件:

kubernetes Continuous Deploy

然后去找 .kube/ 里的config 复制里面的内容

去添加凭据:

然后就是脚本更新:

  1. def git_address = "http://20.0.0.20:82/root/tensquare_back.git"
  2. def git_auth = "904eff5d-41c8-44ad-ba24-7f539a0edb96"
  3. //构建版本的名称
  4. def tag = "latest"
  5. //Harbor私服地址
  6. def harbor_url = "20.0.0.50:85"
  7. //Harbor的项目名称
  8. def harbor_project_name = "tensquare"
  9. //Harbor的凭证
  10. def harbor_auth = "427399a8-db35-48e8-b5cf-a1ea63f10cc5"
  11. //k8s的凭证
  12. def k8s_auth="4f3c9e60-da07-49b3-89ae-d708516e8071"
  13. //定义k8s-barbor的凭证
  14. def secret_name="registry-auth-secret"
  15.  
  16. podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [
  17. containerTemplate(
  18. name: 'jnlp',
  19. image: "20.0.0.50:85/library/jenkins-slave-maven:latest"
  20. ),
  21. containerTemplate(
  22. name: 'docker',
  23. image: "docker:stable",
  24. ttyEnabled: true,
  25. command: 'cat'
  26. ),
  27. ],
  28. volumes: [
  29. hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
  30. nfsVolume(mountPath: '/usr/local/apache-maven/repo', serverAddress: '20.0.0.10' , serverPath: '/opt/nfs/maven'),
  31. ],
  32. )
  33. {
  34. node("jenkins-slave"){
  35. // 第一步
  36. stage('pull code'){
  37. checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
  38. }
  39. // 第二步
  40. stage('make public sub project'){
  41. //编译并安装公共工程
  42. sh "mvn -f tensquare_common clean install"
  43. }
  44. // 第三步
  45. stage('make image'){
  46. //把选择的项目信息转为数组
  47. def selectedProjects = "${project_name}".split(',')
  48.  
  49. for(int i=0;i<selectedProjects.size();i++){
  50. //取出每个项目的名称和端口
  51. def currentProject = selectedProjects[i];
  52. //项目名称
  53. def currentProjectName = currentProject.split('@')[0]
  54. //项目启动端口
  55. def currentProjectPort = currentProject.split('@')[1]
  56.  
  57. //定义镜像名称
  58. def imageName = "${currentProjectName}:${tag}"
  59.  
  60. //编译,构建本地镜像
  61. sh "mvn -f ${currentProjectName} clean package dockerfile:build"
  62. container('docker') {
  63.  
  64. //给镜像打标签
  65. sh "docker tag ${imageName} ${harbor_url}/${harbor_project_name}/${imageName}"
  66.  
  67. //登录Harbor,并上传镜像
  68. withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')])
  69. {
  70. //登录
  71. sh "docker login -u ${username} -p ${password} ${harbor_url}"
  72. //上传镜像
  73. sh "docker push ${harbor_url}/${harbor_project_name}/${imageName}"
  74. }
  75.  
  76. //删除本地镜像
  77. sh "docker rmi -f ${imageName}"
  78. sh "docker rmi -f ${harbor_url}/${harbor_project_name}/${imageName}"
  79. }
  80. def deploy_image_name = "${harbor_url}/${harbor_project_name}/${imageName}"
  81. //部署到K8S
  82. sh """
  83. sed -i 's#\$IMAGE_NAME#${deploy_image_name}#' ${currentProjectName}/deploy.yml
  84. sed -i 's#\$SECRET_NAME#${secret_name}#' ${currentProjectName}/deploy.yml
  85. """
  86. kubernetesDeploy configs: "${currentProjectName}/deploy.yml", kubeconfigId: "${k8s_auth}"
  87. }
  88. }
  89. }
  90. }

  

要更改的就是:

添加k8s的凭证:

然后在eureka 目录下创建deploy文件:

  1. metadata:
  2. name: eureka
  3. spec:
  4. serviceName: "eureka"
  5. replicas: 2
  6. selector:
  7. matchLabels:
  8. app: eureka
  9. template:
  10. metadata:
  11. labels:
  12. app: eureka
  13. spec:
  14. imagePullSecrets:
  15. - name: $SECRET_NAME
  16. containers:
  17. - name: eureka
  18. image: $IMAGE_NAME
  19. ports:
  20. - containerPort: 10086
  21. env:
  22. - name: MY_POD_NAME
  23. valueFrom:
  24. fieldRef:
  25. fieldPath: metadata.name
  26. - name: EUREKA_SERVER
  27. value: "http://eureka-0.eureka:10086/eureka/,http://eureka- 1.eureka:10086/eureka/"
  28. - name: EUREKA_INSTANCE_HOSTNAME
  29. value: ${MY_POD_NAME}.eureka
  30. podManagementPolicy: "Parallel"

  

里面的application.yml配置文件更改如下:

  1. server:
  2. port: ${PORT:10086}
  3. spring:
  4. application:
  5. name: eureka
  6.  
  7. eureka:
  8. server:
  9. # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
  10. eviction-interval-timer-in-ms: 5000
  11. enable-self-preservation: false
  12. use-read-only-response-cache: false
  13. client:
  14. # eureka client间隔多久去拉取服务注册信息 默认30s
  15. registry-fetch-interval-seconds: 5
  16. serviceUrl:
  17. defaultZone: ${EUREKA_SERVER:http://127.0.0.1:${server.port}/eureka/}
  18. instance:
  19. # 心跳间隔时间,即发送一次心跳之后,多久在发起下一次(缺省为30s)
  20. lease-renewal-interval-in-seconds: 5
  21. # 在收到一次心跳之后,等待下一次心跳的空档时间,大于心跳间隔即可,即服务续约到期时间(缺省为90s)
  22. lease-expiration-duration-in-seconds: 10
  23. instance-id: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}:${server.port}@${random.l ong(1000000,9999999)}
  24. hostname: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}

 

然后在提交前在k8s所有主机上操作

  1. docker login -u lvbu -p Lvbu1234 20.0.0.50:85
  1. kubectl create secret docker-registry registry-auth-secret --docker-server=20.0.0.50:85 --docker-username=lvbu --docker-password=Lvbu1234 -- docker-email=lbu@qq.com

  

然后去提交之前的修改的配置

提交完之后就可以构建了!

然后去查看:

  1. kubectl get secrets
  1. kubectl get pods
  1. kubectl get servicef 查看能看到端口 访问node节点的端口 就会发现注册中心有了 

然后部署服务网关:

同理更改配置文件中的eureka集群地址:

  1. http://eureka-0.eureka:10086/eureka/,http://eureka- 1.eureka:10086/eureka/ 

所有的都要更改!

然后一样的操作在网关低下创建deploy.yml文件:

内容如下:

  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: zuul
  6. labels:
  7. app: zuul
  8. spec:
  9. type: NodePort
  10. ports:
  11. - port: 10020
  12. name: zuul
  13. targetPort: 10020
  14. selector:
  15. app: zuul
  16. ---
  17. apiVersion: apps/v1
  18. kind: StatefulSet
  19. metadata:
  20. name: zuul
  21. spec:
  22. serviceName: "zuul"
  23. replicas: 2
  24. selector:
  25. matchLabels:
  26. app: zuul
  27. template:
  28. metadata:
  29. labels:
  30. app: zuul
  31. spec:
  32. imagePullSecrets:
  33. - name: $SECRET_NAME
  34. containers:
  35. - name: zuul
  36. image: $IMAGE_NAME
  37. ports:
  38. - containerPort: 10020
  39. podManagementPolicy: "Parallel"

  

在提交前先去手动上传父工程依赖到NFS的maven共享仓库目录中:

  

然后在构建!

然后就是部署admin_service:

也是创建deploy.yml:

  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: admin
  6. labels:
  7. app: admin
  8. spec:
  9. type: NodePort
  10. ports:
  11. - port: 9001
  12. name: admin
  13. targetPort: 9001
  14. selector:
  15. app: admin
  16. ---
  17. apiVersion: apps/v1
  18. kind: StatefulSet
  19. metadata:
  20. name: admin
  21. spec:
  22. serviceName: "admin"
  23. replicas: 2
  24. selector:
  25. matchLabels:
  26. app: admin
  27. template:
  28. metadata:
  29. labels:
  30. app: admin
  31. spec:
  32. imagePullSecrets:
  33. - name: $SECRET_NAME
  34. containers:
  35. - name: admin
  36. image: $IMAGE_NAME
  37. ports:
  38. - containerPort: 9001
  39. podManagementPolicy: "Parallel"

  

然后 集群地址也要更改!

接下来的部署gatjering  也是如此:

deploy.yml文件如下:

  1. ---
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: gathering
  6. labels:
  7. app: gathering
  8. spec:
  9. type: NodePort
  10. ports:
  11. - port: 9002
  12. name: gathering
  13. targetPort: 9002
  14. selector:
  15. app: gathering
  16. ---
  17. apiVersion: apps/v1
  18. kind: StatefulSet
  19. metadata:
  20. name: gathering
  21. spec:
  22. serviceName: "gathering"
  23. replicas: 2
  24. selector:
  25. matchLabels:
  26. app: gathering
  27. template:
  28. metadata:
  29. labels:
  30. app: gathering
  31. spec:
  32. imagePullSecrets:
  33. - name: $SECRET_NAME
  34. containers:
  35. - name: gathering
  36. image: $IMAGE_NAME
  37. ports:
  38. - containerPort: 9002
  39. podManagementPolicy: "Parallel"

  

也要修改集群地址eureka!

然后就可以一次性提交代码然后一次性构建!

结果如下:

基于kubernetes平台微服务的部署的更多相关文章

  1. 解读与部署(三):基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  2. iUAP云运维平台v3.0全面支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  3. QCon技术干货:个推基于Docker和Kubernetes的微服务实践

    2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(十三)——istio+dapr构建多运行时服务网格之生产环境部署

    之前所有的演示都是在docker for windows上进行部署的,没有真正模拟生产环境,今天我们模拟真实环境在公有云上用linux操作如何实现istio+dapr+电商demo的部署. 目录:一. ...

  5. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 文章目录

    系列文章: <基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想> [点击查看] <基于 abp vNext 微服务开发的敏捷应用构建平台 - 文章目录> [ ...

  6. 基于 Docker 的微服务架构实践

    本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...

  7. 用友iuap云运维平台支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr

    目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务电 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...

随机推荐

  1. 深入Windows APC

      本篇原文为 Depths of Windows APC ,如果有良好的英文基础,可以点击该链接进行阅读.本文为我个人:寂静的羽夏(wingsummer) 中文翻译,非机翻,著作权归原作者 Rbmm ...

  2. MyBatis加强(1)~myBatis对象关系映射(多对一关系、一对多关系)、延迟/懒加载

    一.myBatis对象关系映射(多对一关系.一对多关系) 1.多对一关系: ---例子:多个员工同属于一个部门. (1)myBatis发送 额外SQL: ■ 案例:员工表通过 dept_id 关联 部 ...

  3. js 每日一更(数组转换成前端更容易解析的树状结构)

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  4. Redis 常见面试题(2020最新版)

    阶段汇总集合:001期~180期汇总,方便阅读(增加设计模式) 概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可) ...

  5. 【转】MySql根据经纬度获取附近的商家

    创建geo表 create table geo( geo_id INT NOT NULL AUTO_INCREMENT, lng float NOT NULL, lat float NOT NULL, ...

  6. new JSONObject 无异常卡顿【Maven+Idea 导包不更新的小坑】

    问题描述 今天在使用JSONObject过程中出现了一个非常不可思议的现象,我Junit测试没有问题,但是就是打开服务器运行的时候,结果就是出不来,经过多次测试发现代码竟然卡在了new JSONObj ...

  7. Idea中新建package包,却变成了Directory

    问题描述 今天在IdeaJava工程src下新建了一个名字叫包implements的包,右键在里面新建类时,却发现根本就没有Class这个选项,然后发现implements这个包的图标也和其他包的图标 ...

  8. docker构建镜像 (3)

    使用Dockerfile构建镜像 Dockerfile使用DSL(Domain Specific Language)来构建一个Docker镜像,只要编辑好了Dockerfile文件,就可以使用dock ...

  9. Redis 在 vivo 推送平台的应用与优化实践

    一.推送平台特点 vivo推送平台是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定.可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,支持百亿级的通知/消息推送,秒 ...

  10. 使用污点分析检查log4j问题

    摘要:log4j问题的余波还在继续,为什么这个问题潜伏了这么长时间,大家一直没有发现?这里从静态分析的角度谈下log4j问题的发现. 本文分享自华为云社区<使用污点分析检查log4j问题> ...