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 |
|
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 |
|
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
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中 创建数据,我们不着急导入。
4-4- rabbitmq部署
在应用商店中 安装,: kubesphere 开启应用商店功能 : 连接
kubesphere 部署rabbitmq -: 连接
5- 导入数据:
部署mysql5.7: kubesphere部署 mysql: 连接
1)ruoyi-cloud 项目中的 ry_config_20210730.sql 导入mysql
nacos 依赖这个
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