首页 > 其他分享 >【云原生实战】DevOps基础与实战项目

【云原生实战】DevOps基础与实战项目

时间:2023-03-22 14:15:02浏览次数:48  
标签:实战 原生 his service DevOps cart 165.238 139.198 yygh

【云原生实战】DevOps基础与实战项目

DevOps简介

DevOps 是一系列做法和工具,可以使 IT 和软件开发团队之间的流程实现自动化。其中,随着敏

捷软件开发日趋流行,持续集成 (CI) 持续交付 (CD) 已经成为该领域一个理想的解决方案。在

CI/CD 工作流中,每次集成都通过自动化构建来验证,包括编码、发布和测试,从而帮助开发者提

前发现集成错误,团队也可以快速、安全、可靠地将内部软件交付到生产环境

 

DevOps落地

概述

1、内置的Agent

选择 Jenkins Agent

项目架构

 

  1.   yygh-parent
  2.   |---common //通用模块
  3.   |---hospital-manage //医院后台 [9999]
  4.   |---model //数据模型
  5.   |---server-gateway //网关 [80]
  6.   |---service //微服务层
  7.   |-------service-cmn //公共服务 [8202]
  8.   |-------service-hosp //医院数据服务 [8201]
  9.   |-------service-order //预约下单服务 [8206]
  10.   |-------service-oss //对象存储服务 [8205]
  11.   |-------service-sms //短信服务 [8204]
  12.   |-------service-statistics //统计服务 [8208]
  13.   |-------service-task //定时服务 [8207]
  14.   |-------service-user //会员服务 [8203]
  15.    
  16.    
  17.   ====================================================================
  18.    
  19.   yygh-admin //医院管理后台 [9528]
  20.   yygh-site //挂号平台 [3000]

中间件

中间件

集群内地址

外部访问地址

Nacos

his-nacos.his:8848

http://139.198.165.238:30349/nacos

MySQL

his-mysql.his:3306

139.198.165.238:31840

Redis

his-redis.his:6379

139.198.165.238:31968

Sentinel

his-sentinel.his:8080

http://139.198.165.238:31523/

MongoDB

mongodb.his:27017

139.198.165.238:32693

RabbitMQ

rabbitm-yp1tx4-rabbitmq.his:5672

139.198.165.238:30375

ElasticSearch

his-es.his:9200

139.198.165.238:31300

devops实战

1、项目地址

https://gitee.com/leifengyang/yygh-parent

https://gitee.com/leifengyang/yygh-admin

https://gitee.com/leifengyang/yygh-site

 

2、项目默认规则

  • 每个微服务项目,在生产环境时,会自动获取 微服务名-prod.yml 作为自己的核心配置文件
  • 每个微服务项目,在生产环境时,默认都是使用 8080 端口

3、生产与开发配置隔离

 

4、deploy.yaml

  1.   apiVersion: apps/v1
  2.   kind: Deployment
  3.   metadata:
  4.   labels:
  5.   app: service-cart
  6.   name: service-cart
  7.   namespace: his #一定要写名称空间
  8.   spec:
  9.   progressDeadlineSeconds: 600
  10.   replicas: 1
  11.   selector:
  12.   matchLabels:
  13.   app: service-cart
  14.   strategy:
  15.   rollingUpdate:
  16.   maxSurge: 50%
  17.   maxUnavailable: 50%
  18.   type: RollingUpdate
  19.   template:
  20.   metadata:
  21.   labels:
  22.   app: service-cart
  23.   spec:
  24.   imagePullSecrets:
  25.   - name: aliyun-docker-hub #提前在项目下配置访问阿里云的账号密码
  26.   containers:
  27.   - image: $REGISTRY/$ALIYUNHUB_NAMESPACE/service-cart
  28.   readinessProbe:
  29.   httpGet:
  30.   path: /actuator/health
  31.   port: 8080
  32.   timeoutSeconds: 10
  33.   failureThreshold: 30
  34.   periodSeconds: 5
  35.   imagePullPolicy: Always
  36.   name: app
  37.   ports:
  38.   - containerPort: 8080
  39.   protocol: TCP
  40.   resources:
  41.   limits:
  42.   cpu: 300m
  43.   memory: 600Mi
  44.   terminationMessagePath: /dev/termination-log
  45.   terminationMessagePolicy: File
  46.   dnsPolicy: ClusterFirst
  47.   restartPolicy: Always
  48.   terminationGracePeriodSeconds: 30
  49.   ---
  50.   apiVersion: v1
  51.   kind: Service
  52.   metadata:
  53.   labels:
  54.   app: service-cart
  55.   name: service-cart
  56.   namespace: his
  57.   spec:
  58.   ports:
  59.   - name: http
  60.   port: 8080
  61.   protocol: TCP
  62.   targetPort: 8080
  63.   selector:
  64.   app: service-cart
  65.   sessionAffinity: None
  66.   type: ClusterIP

4、devops实战

1、修改maven让他从阿里云下载镜像

  • 使用admin登陆ks
  • 进入集群管理
  • 进入配置中心
  • 找到配置
    • ks-devops-agent
    • 修改这个配置。加入maven阿里云镜像加速地址

2、缓存机制

已经下载过的jar包,下一次流水线的启动,不会重复下载

3、部署到k8s集群

  • 给每一个微服务准备一个 deploy.yaml(k8s的部署配置文件)
  • 执行以下步骤

传入 deploy.yaml 的位置就能部署

kubectl apply -f xxxx

一定在项目里面(his,不是流水线项目),找到配置--密钥,配置一个阿里云的访问账号密码

 

 

4、前端项目

1、yygh-admin

  • npm run build 会生成dist目录,放到nginx的html下,即可运行

2、yygh-site

  • npm install --registry=https://registry.npm.taobao.org 安装项目依赖
  • npm run build 对项目打包,
  • 打包完成后把 .nuxt ,static, nuxt.config.js, package.json 这四个关键文件复制到 node 环境。先npm install再使用npm run start 即可运行

3、思考

  • admin的镜像和site的镜像大小为何差距那么大?
    • 如何对镜像进行瘦身?

5、webhook

  • 1、每个项目,都有流水线文件
  • 2、每次修改完项目,手动点击运行
  • 3、希望,每次修改完项目,代码推送,流水线能自动运行

写代码并提交------> gitee ---------> 给指定的地方发请求(webhook)------> kubesphere平台感知到 -----> 自动启动流水线继续运行

    文章知识点与官方知识档案匹配,可进一步学习相关知识 云原生入门技能树云原生环境小结云原生的分层10981 人正在系统学习中 源码咨询 | 资料领取 | 学习交流 微信名片

标签:实战,原生,his,service,DevOps,cart,165.238,139.198,yygh
From: https://www.cnblogs.com/data159/p/17243491.html

相关文章