SpringCloud微服务迁移到Kubernetes容器化完整流程

熟悉spring cloud微服务项目
源代码编译构建 构建项目镜像并推送到镜像仓库 制作镜像 将镜像推送到harbor仓库 k8s服务编排 部署基础环境 部署微服务程序 部署微服务前端 微服务对外发布 noreport方式暴露 ingress方式暴露 k8s容器部署流程
具体步骤:
第一步:熟悉spring cloud微服务项目 第二步:源代码编译构建 第三步:构建项目镜像并推送到镜像仓库 第四步:k8s服务编排 第五步:部署服务所需的基础环境 第六步:部署微服务程序 第七步:部署微服务前端 第八步:微服务对外发布 熟悉spring cloud微服务项目 微服务架构图
基于 spring boot + mybatis plus + vue & element 实现的后台管理系统 + 用户小程序,支持 rbac 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/yunaiv/ruoyi-vue-pro 视频教程:https://doc.iocoder.cn/video/ 源代码编译构建 拉取仓库代码
git clone http://192.168.0.126/saas-wms/linkinsense-wms-public.git   编译代码
mvn clean package -dmaven.test.skip=true -pdev   这儿构建时间久是因为第一次构建,需要下载maven依赖,之后构建就会很快了。
基于 spring cloud alibaba + gateway + nacos + rocketmq + vue & element 实现的后台管理系统 + 用户小程序,支持 rbac 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/yunaiv/yudao-cloud 视频教程:https://doc.iocoder.cn/video/ 构建项目镜像并推送到镜像仓库 基础镜像:centos,ubuntu 中间件镜像:jdk,nginx 项目镜像:基础镜像+中间件镜像+项目代码 制作镜像 https://blog.csdn.net/qq_40722827/article/details/126337904
编写gateway服务的dockerfile,制作镜像
vi dockerfile  from openjdk:8-jre    run ln -sf /usr/share/zoneinfo/asia/shanghai /etc/localtime  run echo 'asia/shanghai' > /etc/timezone    workdir /wms-center/wms-gateway    add ./target/wms-gateway-1.0.0.jar ./    expose 8901    cmd java -jar wms-gateway-1.0.0.jar   编写完成的dockerfile放置的文件位置
通过dockerfile构建镜像
docker build -t wms-gateway:v1 -f wms-gateway/dockerfile ./wms-gateway/   查看构建好的镜像
docker images   将镜像推送到harbor仓库 之前本地部署的镜像仓库harbor: http://192.168.0.127:8084/,如果没有可拿docker-hub注册一个账号。
登录仓库
docker login 192.168.0.127:8084   推送镜像到镜像仓库需要满足镜像仓库的镜像名称,因此需要给构建好的镜像打个tag。
给构建的镜像打tag
docker tag wms-gateway:v1  192.168.0.127:8084/onlee/gateway:v1   推送镜像仓库
docker push 192.168.0.127:8084/onlee/gateway:v1   其他模块构建和推送参考gateway模块
k8s服务编排 制作gateway的k8s yaml文件(gateway.yaml)
---  apiversion: apps/v1  kind: deployment   metadata:    name: gateway    namespace: wms-dev  spec:    replicas: 1    selector:      matchlabels:        project: wms-dev        app: gateway    template:      metadata:        labels:          project: wms-dev          app: gateway      spec:        imagepullsecrets:        - name: registry-harbor        containers:        - name: gateway          image: 192.168.0.127:8084/onlee/gateway:v1          imagepullpolicy: always          ports:            - protocol: tcp              containerport: 8901          env:            - name: java_opts              value: -xmx1g          resources:            requests:              cpu: 0.5              memory: 256mi            limits:              cpu: 1              memory: 1gi          readinessprobe:            tcpsocket:              port: 8901            initialdelayseconds: 60            periodseconds: 10          livenessprobe:            tcpsocket:              port: 8901            initialdelayseconds: 60            periodseconds: 10   其他模块编写k8s yaml文件参考gateway模块
部署基础环境 这一步暂时省略,后续补充…
在k8s中部署nacos集群(注册和配置中心) 在k8s中部署seata分布式事务 在linux部署mysql,redis,rabbitmq,minio,xxl-job 部署微服务程序 准备namespace
kubectl create namespace wms-dev   部署服务
kubectl apply -f gateway.yaml   其他模块部署服务参考gateway模块
部署微服务前端 编写dockerfile文件
from nginx    copy dist /usr/share/nginx/html/    expose 80   构建镜像
docker build -t wms-web:v1 -f  dockerfile .   镜像打tag
docker tag  wms-web:v1 192.168.0.127:8084/onlee/wms-web:v1   推送到镜像仓库
docker push  192.168.0.127:8084/onlee/wms-web:v1    服务编排(web.yaml)
apiversion: apps/v1  kind: deployment  metadata:    labels:      app: wms-web    name: wms-web    namespace: wms-dev  spec:    progressdeadlineseconds: 600    replicas: 1    selector:      matchlabels:        app: wms-web    strategy:      rollingupdate:        maxsurge: 50%        maxunavailable: 50%      type: rollingupdate    template:      metadata:        labels:          app: wms-web      spec:        imagepullsecrets:          - name: registry-harbor        containers:          - image: 192.168.0.127:8084/onlee/wms-web:v1            imagepullpolicy: always            name: app            ports:              - containerport: 80                protocol: tcp            resources:              limits:                cpu: 300m                memory: 600mi            terminationmessagepath: /dev/termination-log            terminationmessagepolicy: file        dnspolicy: clusterfirst        restartpolicy: always        terminationgraceperiodseconds: 30   部署服务
kubectl apply -f web.yaml   微服务对外发布 通过整个微服务架构可知,只有gateway和前端需要暴露服务。
noreport方式暴露 gateway对外暴露
gateway-nortport.yaml
---  apiversion: v1  kind: service  metadata:    name: gateway    namespace: wms-dev  spec:    ports:    - port: 8901      name: gateway      protocol: tcp      targetport: 8901      nodeport: 32074    selector:      project: wms      app: gateway    type: nodeport   前端对外暴露
web-noreport.yaml
---  apiversion: v1  kind: service  metadata:    labels:      app: wms-web    name: wms-web    namespace: wms-dev  spec:    ports:      - name: http        port: 80        protocol: tcp        targetport: 80        nodeport: 32248    selector:      app: wms-web    sessionaffinity: none    type: nodeport   ingress方式暴露 https://blog.csdn.net/qq_40722827/article/details/127929141
gateway对外暴露
---  apiversion: networking.k8s.io/v1  kind: ingress  metadata:    name: gateway     namespace: wms-dev    annotations:      kubernetes.io/ingress.class: nginx      nginx.ingress.kubernetes.io/backend-protocol: http  spec:    rules:      - host: gateway.wms.com         http:          paths:          - path: /            pathtype: prefix            backend:              service:                 name: gateway                port:                   number: 8901  ---  apiversion: v1  kind: service  metadata:    name: gateway    namespace: wms-dev  spec:    ports:    - port: 8901       name: gateway    selector:      project: wms-dev      app: gateway   前端对外暴露
---  apiversion: networking.k8s.io/v1  kind: ingress  metadata:    name: wms-web    namespace: wms-dev    annotations:      kubernetes.io/ingress.class: nginx      nginx.ingress.kubernetes.io/backend-protocol: http  spec:    rules:      - host: dev.wms.com         http:          paths:          - path: /            pathtype: prefix            backend:              service:                 name: wms-web                port:                   number: 80  ---  apiversion: v1  kind: service  metadata:    labels:      app: wms-web    name: wms-web    namespace: wms-dev  spec:    ports:      - name: http        protocol: tcp        port: 80        targetport: 80    type: clusterip    selector:      app: wms-web    sessionaffinity: none   至此,所有微服务已经迁移到kubernetes容器上了。
把我们上面手动做的这些,通过jenkins等组件搭建成一个自动化部署的过程,就涉及到devops相关的知识了。接下来就会编写这一块的内容。

计算机编程语言发展的三个重要阶段你都知道吗?
分享一个60瓦功率放大器的电路
iPad威力撼动中韩PC产业
用于少数镜头命名实体识别的分解元学习
光纤连续激光焊接机:焊接新时代的科技之光
SpringCloud微服务迁移到Kubernetes容器化完整流程
全球第一个支持所有比特币分叉币的交易所OurDax介绍
人工智能上存在什么分歧
鸿蒙os基于什么开发 鸿蒙os属于什么系统
MAX4995A, MAX4995, MAX4995AL,
利润优先!iPhone 7选三家代工厂代工
诺基亚9最新消息:诺基亚9真机曝光或用屏幕指纹技术,骁龙835+IP68级别的防尘防水!
一个简单的失真增强器电路图
智能镜面显示器的特殊之处是什么
采访联想王忠、周宝,畅谈ThinkBook的产品理念、定位与发展
德国公司推出效率为12%的有机薄膜太阳能电池
布鲁尔科技增强自身能力然后大力支持中国半导体市场
新品、实测、终端……MWC2023上海展,移远通信又为物联行业带来了哪些惊喜?
先进封装技术将成为突破半导体产业的关键
2019年DRAM芯片报价一路走低 1月涨价将是大概率事件