【业务功能128】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-08部署微服务

微服务到底该怎么样部署呢? 对于快速发展的小公司来说,无服务器是一个很好的选择,只要他们能够忍受它的缺点和限制。只要您保持简单,使用或多或少统一的服务(相同的语言,类似的框架),您就可以了。除了容器管理之外,Orchestrator 还提供广泛的网络功能,例如路由、安全性、负载平衡和集中式日志——运行微服务应用程序可能需要的一切。如果应用程序成熟并且跨越许多服务,您将需要更健壮的东西,例如托管容器或无服务器,并且随着应用程序的增长,可能还会需要 Kubernetes。相反,我们使用清单来编码所需的状态,并让集群负责其余的工作。 阅读详情

一、流水线部署微服务部署流程在这里插入图片描述

二、微服务发布流程

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

要注意jenkinsfile大小写,与代码仓库中的jenkinsfile文件名命名一致即可,这里我们放在项目最外层,就可以直接写文件名称
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • jenkinsfile文件内容 该内容就是前面通过图形化部署流水线所导出的文件
pipeline {
  agent {
    node {
      label 'maven'
    }

  }
   parameters {
    string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
    string(name: 'PROJECT_NAME', defaultValue: '', description: '')
  }

   environment {
    DOCKER_CREDENTIAL_ID = 'dockerhub-id'
    GITEE_CREDENTIAL_ID = 'gitee-id'
    KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
    REGISTRY = 'docker.io'
    DOCKERHUB_NAMESPACE = 'nextgomsb'
    GITEE_ACCOUNT = 'nextgomsb'
    SONAR_CREDENTIAL_ID = 'sonar-qube'
  }


  stages {
    stage('拉取项目代码') {
      agent none
      steps {
        git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', changelog: true, poll: false)
      }
    }

    stage('代码质量检查及分析') {
      agent none
      steps {
        container('maven') {
          withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
            withSonarQubeEnv('sonar') {
              sh 'echo 当前目录 `pwd`'
              sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
              sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
            }

          }

          timeout(unit: 'HOURS', activity: true, time: 1) {
            waitForQualityGate 'true'
          }

        }

      }
    }

    stage('单元测试') {
      agent none
      steps {
        container('maven') {
          sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
        }

      }
    }

    stage('构建项目容器镜像及推送') {
      agent none
      steps {
        container('maven') {
          sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
          sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
          withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
            sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
            sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
            sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
            sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
          }

        }

      }
    }

    stage('创建项目代码及容器镜像的发布版') {
      agent none
      when {
        expression {
          return params.PROJECT_VERSION =~ /v.*/
        }

      }
      steps {
        container('maven') {
          input(message: '''@project-admin
是否允许推送本次项目代码及容器镜像的发布版?''', submitter: 'project-admin')
          withCredentials([usernamePassword(credentialsId : 'gitee-id' ,passwordVariable : 'GITEE_PASSWORD' ,usernameVariable : 'GITEE_USERNAME' ,)]) {
            sh 'git config --global user.email "nextgo@126.com" '
            sh 'git config --global user.name "nextgo" '
            sh 'git tag -a $PROJECT_VERSION -m "$PROJECT_VERSION" '
            sh 'git push http://$GITEE_USERNAME:$GITEE_PASSWORD@gitee.com/$GITEE_ACCOUNT/sangomall.git --tags --ipv4'
          }

          sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION '
          sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION'
        }

      }
    }

    stage('部署微服务项目到K8S集群') {
      agent none
      steps {
        input(message: '''@project-admin
是否允许发布微服务项目到K8S集群?''', submitter: 'project-admin')
        container('maven') {
          withCredentials([kubeconfigContent(credentialsId : 'sangomall-kubeconfig' ,variable : 'KUBECONFIG_CONTENT' ,)]) {
            sh '''mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < $PROJECT_NAME/deploy/deploy.yaml | kubectl apply -f -'''
          }

        }

      }
    }

  }

}

在这里插入图片描述

  • PROJECT_NAME ;PROJECT_VERSION
  • 运行后,显示设置参数,这是前面我们流水线所配置的环境变量参数,主要是用来进行版本标识,以及对具体哪个微服务部署到k8s集群以及镜像的发布,因为我们项目存在多个微服务,所以如此设计,每次运行需要部署哪个服务,那么就把微服务的module名称写入,流水线中会通过该变量找到对应项目微服务路径包,进而做部署k8s服务和发布容器镜像仓库

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述- 该阶段设置了需要审批,切换admin用户进行通过即可

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、微服务部署验证

部署完成之后,在Nacos注册中心可以看到相关微服务
在这里插入图片描述

四、mall-gateway服务暴露


  • 得到外部ip后,也可以设置域名解析映射,在DNS服务节点进行解析
    在这里插入图片描述
[root@dnsserver ~]# cat /var/named/msb.com.zone
$TTL 1D
@       IN SOA  msb.com admin.msb.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      ns.msb.com.
ns      A       192.168.10.145
harbor  A       192.168.10.146
reg-test        A       192.168.10.70
kibana          A       192.168.10.70
rabbitmq        A       192.168.10.70
nacos-server    A       192.168.10.70
zipkin-server   A       192.168.10.70
sentinel-server A       192.168.10.70
skywalking-ui   A       192.168.10.70
rocketmq-dashboard      A       192.168.10.70
mall-gateway    A       192.168.10.73
[root@dnsserver ~]# systemctl restart named

在这里插入图片描述

微服务部署(教程) SpringBoot开发的微服务项目,特点是快速构建web服务,但是我们需要在项目开发完之后可以立即快速构建统一的运行环境,并且还可以快速的部署项目上线。所以Docker在设计起初就希望开发者将微服务项目部署至容器中运行。 阅读详情

相关推荐

k8s-Kubernetes--services(微服务)、ingress-nginx、canary

服务(Service) 将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。 使用 Kubernetes,你无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为 Pod 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。

Gong_yz的博客 2465

K8s部署微服务(springboot+vue)

本文主要记录K8s部署微服务项目(springboot后台+vue前端,动态部署自定义项目),也包括对网关、鉴权、用户等基础模块的部署。k8s部署项目,即创建相应的资源有命令行创建和yaml文件创建两种方式,由于命令行创建配置麻烦,且不具备复用性,因此本文均采用yaml文件创建资源的方式。

qq_43403676的博客 1万+

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

十三,部署微服务到K8S

上一篇文章我们构建了微服务的 Docker 镜像,接下来我们将镜像部署到K8S中。 完整代码: https://github.com/Justin02180218/micro-kit 部署架构 每个微服务启动2个 pod 注册到 consul 上,网关也启动2个 pod 从 consul 上获取微服务的一个 pod 实例来访问接口。 在 ingress 上配置了4个域名转发: api.library.com: 访问 api 网关 consul.library.com

Coding到灯火阑珊的专栏 2518

【AI智能体】Coze 搭建个人旅游规划助手实战详解

本文将详细介绍如何使用Coze平台搭建个人旅游规划助手。首先概述了AI智能体如何简化传统复杂任务的开发流程,然后重点介绍了Coze工作流的作用和核心节点类型(包括大模型、插件、知识库等)。通过实际操作演示,从创建智能体到配置多级工作流,逐步实现旅游规划功能:解析用户输入时间地点、查询必玩景点、获取景点详细信息等。该教程展示了如何利用Coze的可视化编排能力,即使非技术人员也能快速构建专业级AI应用。最终呈现的旅游助手可提供天气查询、行程建议等一站式服务。

Hello, New World! 2114

手把手教你用U盘制作Win11启动盘:从PE工具到系统安装全流程

本文提供了一份详尽的Windows 11启动盘制作与系统安装全流程指南。从选择合适的U盘和PE工具开始,重点讲解了如何正确制作包含EFI引导分区的启动盘,并详细演示了在PE环境下进行GPT分区、使用CGI工具安装系统镜像,以及首次启动后的关键设置步骤,帮助用户轻松完成从零到一的系统安装。

weixin_28475533的博客 1291

微服务部署

微服务应用开发完毕后,接下来要做的就是将已开发好的微服务应用部署到环境中。部署包含两个相互关联的概念:流程和架构。部署流程包括一些由开发人员和运维人员执行的步骤,以便将软件投入到生产环境(商用环境,任何修改都会影响到用户)。部署架构则定义了该软件运行的环境结构。随着自动化、虚拟化技术的发展和完善,早先将代码构建产物手动部署生产环境的历史,已经逐渐被基于流水线自动化部署替代,之前由物理机组成的生产环境,也已逐渐被轻量级、短生命周期的计算基础设施取代。 ...

云原生Java Web领域技术博客 6489

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 455

SpringCloud(5)— 微服务部署(Docker)

镜像是将应用程序及其需要的系统函数库,环境,配置,依赖等统一打包。镜像是一个分层结构,每一层称之为一个LayerBaseImage:基础镜像层,包含基本的系统函数库,环境变量,文件系统等。Entrypoint: 入口,是镜像中启动应用的命令其他:在BaseImage的基础上添加依赖,安装程序,完成整个应用的安装和配置。

shaopengjie的博客 5919

基于深度学习YOLOv5的草莓成熟度检测系统详解(深度学习模型+UI界面+Python代码+训练数据集)

数据采集与预处理模块:负责收集草莓图像,并进行数据增强和标注。深度学习模型训练模块:使用YOLOv5模型进行草莓成熟度检测模型的训练。模型推理模块:加载训练好的模型,对输入图像或视频进行草莓成熟度检测。UI界面模块:提供用户交互界面,方便用户上传图像或视频进行成熟度检测。本文详细介绍了基于YOLOv5的草莓成熟度检测系统的构建过程,包括数据集的构建、模型的训练与推理、以及UI界面的设计。通过本文的指导,读者可以快速搭建一个高效的草莓成熟度检测系统,并应用于实际场景中。

斌擎科技 525

代码复现5——VLMaps

报错“AttributeError: module 'clip' has no attribute 'load'”,运行下述命令解决。运行后接着报错:“ModuleNotFoundError: No module named 'pytorch_lightning'”运行后命令后会弹出一个RGB窗口,可以用键盘上的“W”“A”“D”键控制移动视角的变化,“空格”键开始记录,“q”键停止。并更改相关代码文件,vlmaps/vlmaps/lseg/modules/models/lseg_vit.py。

qq_44100524的博客 603

在KubeSphere中部署微服务(阡陌)+ DevOps

在KubeSphere中部署微服务(阡陌)+ DevOps,主要给自己看,写的优点粗糙,见谅~

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈ 6072

Allegro格式PCB转换成Pads操作指导

变量:AEX_BIN_ROOT 值:D: MentorGraphics>PADSVX1.2>SDD_HOME>translators>win32bin (值:软件按装的位置,可以是9.5版本,也可以是VX1.0等不同的版本)。变量:HOME 值:C:Users>win7>AppData>Roaming>SPB_Data (这个值是allegro快捷键存放位置器,也可以随意放置在那个盘,我们可以采用默认的路径)。第4步:打开 PADSLayout软件,然后选择导入文件,选择刚刚处理的 allegro文件。

weixin_54787054的博客 3717

微服务的部署

一. Docker Compose 编排工具 (一). Docker Compose 介绍        使用微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例。如果每个微服务都要手动启停...

a10703060237的博客 4441

IgH EtherCAT 从入门到精通:第 19 章 主站状态机(FSM)深度解析

文章摘要:IgH EtherCAT主站采用多层次有限状态机(FSM)架构实现总线管理。核心是Master FSM,负责总线扫描、从站配置和邮箱通信,通过函数指针状态机模式实现异步非阻塞操作。系统包含多个嵌套FSM:Slave FSM管理单个从站请求,Slave Scan FSM处理拓扑变化扫描,Slave Config FSM配置从站状态转换,Change FSM执行AL状态切换。这种设计通过状态函数指针转换实现复杂协议交互,各FSM协同工作完成EtherCAT网络的初始化、配置和实时通信,支持热插拔和错误

从事嵌入式linux android驱动开发,拥有全栈能力 146

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

k8s部署微服务

一、安装nfs服务 由于资源有限,以master节点所在虚拟机作为nfs服务器 1、确认是否安装nfs rpm -qa nfs-utils rpcbind 如果未安装,则安装 nfs服务器上安装2个模块:yum install -y nfs-utils rpcbind nfs客户端机器(这里是所有node节点)安装yum install -y nfs-utils 2、nfs服务器创建共享文件夹/data/nfs和mysql各数据库文件的挂载目录,当然你可以自己选择位置 nfs:为nfs共享文

a595077052的专栏 5447

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

k8s部署微服务项目

k8s部署springcloud alibaba微服务项目

Erica_java的博客 6670

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深入微服务架构 | 微服务与k8s架构解读

Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Kubernetes优势:容器编排轻量级开源弹性伸缩负载均衡。

qq_73332379的博客 1481

KubeSphere 部署微服务项目

KubeSphere 部署微服务项目

秋叶清风的博客 1798

k8s简介

K8s简介、架构、优点

m0_46075977的博客 1738

在Kubernetes(k8s)上部署整个SpringCloud微服务应用

Kubernetes上部署整个SpringCloud微服务应用,并使用ingress暴露应用。部署包括nacos、redis、mysql等组件。同时还部署monitor监控模块。

XiaoHH的博客 1万+

【kubernetes】使用KubeSphere devops部署我的微服务系统

kubesphere devops部署微服务

开发学习工作日志 1606

DockerCompose - 微服务项目部署全过程(最佳实践)

a)技术选型:SpringCloud 2021.0.1 、SpringCloud Alibaba 2021.0.1.0、SpringBoot 2.6.3、Docker & DockerCompose、JDK 17.b)软件环境:MySQL、Nacos.c)服务拆分:blog、user、gateway.d)其他模块:common(公共模块)、OpenFeign.Ps:麻雀虽小,五脏俱全~ 如果还有其他中间件(RabbitMQ、ES......)需要部署,如果人不是小傻瓜,都能配出来~

CYK_byte的博客 5642

k8s平台微服务部署

涉及的微服务 涉及三个微服务的demo: 服务注册与发现:eureka-server 管理服务:admin-service 用户服务:user-service 管理服务和用户服务会注册到eureka上,当访问 Admin 服务的 add user api,Admin 服务会调用 User 服务的 add user api,写入到 mysql数据库上。 生成docker镜像 通过dockerfile构建maven项目。在Docker 17.05多阶段构建推出之后,我们只需要维护一个Dockerfile文件

mxb1234567的博客 6468
上一篇: 【业务功能127】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-07数据库服务集群外连接-openelb
下一篇: 【业务功能129】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-k8s集群-09微服务前端代理服务 Nginx部署
studyday1
博客等级 码龄9年 6454粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值