熟悉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月涨价将是大概率事件