您的位置 首页 kubesphere

2-k8s devops 项目上云 kubesphere-his -流水线-ruoyi

1-ruoyi 上云部署若依-kubesphere 汇总 :连接

kubesphere 开启devops  流水线 : 连接 

第1 步: kubesphere 创建第一个流水线项目: 连接 

第2步: 项目编译 + 构建镜像 :连接

第3步:部署项目- 给流水线添加 kubectl 控制权限 : 连接

第3-1 步: 部署项目(简单)-流水线 :   连接  (推荐)

第4步: k8s 流水线 为依赖项缓存设置 CI 节点 : 连接

第5步: nodejs 流水线 : 连接

第6步: jenkins demo :  连接

7: kubesphere 流水线自定义 Jenkins Agent  :连接 

7-1 :kubeshphere 流水线 agent 自定义 如何使用 : 连接 

8: k8s中使用gradle缓存加速编译构建流水线demo : 连接

kubeSphere DevOps自定义容器 指定nodejs版本 :  连接

 

 

 

 

 

 

 

项目架构:

 

 

 

yygh-parent
|---common                                  //通用模块
|---hospital-manage                         //医院后台				[9999]   
|---model																		//数据模型
|---server-gateway													//网关    				[80]
|---service																	//微服务层
|-------service-cmn													//公共服务				[8202]
|-------service-hosp												//医院数据服务		[8201]
|-------service-order												//预约下单服务		[8206]
|-------service-oss													//对象存储服务		[8205]
|-------service-sms													//短信服务				[8204]
|-------service-statistics									//统计服务				[8208]
|-------service-task												//定时服务				[8207]
|-------service-user												//会员服务				[8203]


====================================================================

yygh-admin																	//医院管理后台		[9528]
yygh-site																		//挂号平台				[3000]

2、中间件

中间件

集群内地址

外部访问地址

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

3、流水线

https://gitee.com/wang-huamao/yygh-site
https://gitee.com/wang-huamao/yygh-admin
https://gitee.com/wang-huamao/yygh-parent

 

2、项目默认规则

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

3、deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: service-cart
  name: service-cart
  namespace: his   #一定要写名称空间
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: service-cart
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 50%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: service-cart
    spec:
      imagePullSecrets:
        - name: aliyun-docker-hub  #提前在项目下配置访问阿里云的账号密码
      containers:
        - image: $REGISTRY/$ALIYUNHUB_NAMESPACE/service-cart
          readinessProbe:
            httpGet:
              path: /actuator/health
              port: 8080
            timeoutSeconds: 10
            failureThreshold: 30
            periodSeconds: 5
          imagePullPolicy: Always
          name: app
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: 300m
              memory: 600Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: service-cart
  name: service-cart
  namespace: his
spec:
  ports:
    - name: http
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: service-cart
  sessionAffinity: None
  type: ClusterIP

“尚医通” 微服务项目 DevOps 实战 - Sentinel 服务部署 (kubesphere.io)

4-前期环境

4-1 部署 sentinel

leifengyang/sentinel:1.8.2

 

直接选择无状态服务,下一步,下一步就可以。

为了方便验证,我们创建一个 外部访问的SVC

his-sentinel-node  -> 指定工作负载

密码: sentinel, sentinel

https://kubesphere.io/zh/learn/level_4/lesson_33/video/

4-2:部署 mongodb

利用bitnami 来安装:  bitnami仓库安装

mongodb 安装

 

 

因为这个项目上线后,会自动的给 mongodb中 创建数据,我们不着急导入。

 

4-4- rabbitmq部署

在应用商店中 安装,: kubesphere 开启应用商店功能  : 连接

kubesphere 部署rabbitmq -: 连接 

 

5- 导入数据:

部署mysql5.7:  kubesphere部署 mysql:  连接

1)ruoyi-cloud 项目中的  ry_config_20210730.sql  导入mysql

nacos 依赖这个

参考: ruoyi 部署 微服务(本地部署)

2) mysql :

 

直接复制进去就行, 不用新建数据库,里边都有语句了。 (我用的datagrip 来导入的)

一共5个库

 

6、生产与开发配置隔离

部署nacos -需要配置一个单独的数据, 参考 :  kubesphere部署 nacos :  连接

https://kubesphere.io/zh/learn/level_4/lesson_36/video/

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

 

在nacos 新建一个 prod (生产环境)的名称空间,

新建 prod.yaml

把上边的 application-dev.yml的内容 复制到 下图新建的里边来。

 

然后把相关的url 更改一下 (只更改 mysql和 redis 就可以)

 

然后 Dockerfile

FROM openjdk:8-jdk
LABEL maintainer=leifengyang


#启动自行加载   服务名-prod.yml配置
ENV PARAMS="--server.port=8080 --spring.profiles.active=prod --spring.cloud.nacos.server-addr=his-nacos.his:8848 --spring.cloud.nacos.config.file-extension=yml"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

COPY target/*.jar /app.jar
EXPOSE 8080

#
ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8  -Djava.security.egd=file:/dev/./urandom -jar /app.jar ${PARAMS}"]

运行jar包后 自动的去nacos  里边找对应的prod.yaml文件。

docker 镜像制作参考: 连接

docker build -t registry.cn-hangzhou.aliyuncs.com/baimeidashu/service-cmn:v1 .

docker  push registry.cn-hangzhou.aliyuncs.com/baimeidashu/service-cmn:v1 

 

--no-cache  .

2023年11月25日

docker build -t registry.cn-hangzhou.aliyuncs.com/baimeidashu/service-cmn:v2  --no-cache .

docker push registry.cn-hangzhou.aliyuncs.com/baimeidashu/service-cmn:v2

 

 

k8s 运行jar包镜像

 

其他的也要做:

微服务:

service-hosp

service-order

service-oss

service-sms

service-statistics

service-task

service-user

网关:

server-gateway

注意,这里边的 nacos 配置可以去掉

cloud 需要留着关键字

 

hospital-manage

他不是 spring项目,只是一个单体项目, 没有bootstrap.yaml。

它的dockerfile 里边没有 nacos 信息, 我们只需要在 pro.yaml 里修改配置就可以, 无需上nacos 新建。也就是它不依赖与nacos .

到此我们的准备工作已经完成。

 

上述做好了,接下来开始做devops

 

 

“尚医通” 微服务项目 DevOps 实战 - 创建可视化流水线工程 (kubesphere.io)

 

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章