主要介绍KubeSphere实战RuoYi-Cloud部署实战,项目地址:RuoYi-Cloud

中间件搭建

搭建 MySQL、Redis、Nacos。

若未安装,则可以阅读 kubesphere使用镜像安装部署Mysqlkubesphere使用镜像安装部署RediskubeSphere使用镜像安装部署Nacos集群

准备工作

  • MySQL 数据准备

    创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql(必须),quartz.sql(可选)。

    创建数据库nacos_config并导入数据脚本ry_config_2021xxxx.sql(必须)。

    创建数据库ry-seata并导入数据脚本ry_seata_2021xxxx.sql

  • 配置nacos持久化

    修改conf/application.properties文件,增加支持mysql数据源配置, 需要将连接mysql的地址改为DNS域名,密码改为实际密码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ### If use MySQL as datasource:
    spring.datasource.platform=mysql

    ### Count of DB:
    db.num=1

    ### Connect URL of DB:
    db.url.0=jdbc:mysql://mysql-5-7.common-util:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=123456

    ### Connection pool configuration: hikariCP
    db.pool.config.connectionTimeout=30000
    db.pool.config.validationTimeout=10000
    db.pool.config.maximumPoolSize=20
    db.pool.config.minimumIdle=2

微服务后端镜像打包

  • 使用 Idea 的 Maven 将所有涉及的微服务生成 jar 包,如ruoyi-gateway,其它微服务打包方法一致。

  • 编写 Dockerfile 的规范,如ruoyi-gateway,其它微服务打包方法一致,只是名字不同。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 基础镜像
    FROM java:8
    # author
    MAINTAINER ruoyi

    # 挂载目录
    VOLUME /home/ruoyi
    # 创建目录
    RUN mkdir -p /home/ruoyi
    # 指定路径
    WORKDIR /home/ruoyi
    # 复制jar文件到路径
    COPY ./jar/ruoyi-gateway.jar /home/ruoyi/ruoyi-gateway.jar
    # 启动网关服务
    ENTRYPOINT ["java","-jar","ruoyi-gateway.jar"]
  • Docker 打包为镜像,如ruoyi-gateway,其它微服务打包为镜像方法一致,只是名字不同。

    登录拥有 Docker 服务的服务器,把jar包和Dockerfile文件上传服务器。目录结构如下:

    1
    2
    # 进入相应服务目录
    [root@node02 ruoyi-gateway]# docker build -t ruoyi-gateway:v1.0 -f Dockerfile .
  • 推送镜像到Harbor仓库,其它微服务推送方法一致,只是名字不同。

    1
    2
    3
    4
    5
    6
    7
    8
    # 1.登陆
    docker login --username=nacos 192.168.18.111:31432

    # 2.打标签
    docker tag ruoyi-gateway:v1.0 192.168.18.111:31432/library/ruoyi-gateway:v1.0

    # 3.推送
    docker push 192.168.18.111:31432/library/ruoyi-gateway:v1.0

微服务前端镜像打包

前端需要修改生产环境下访问的网关地址,指向云端网关的DNS域名地址。

打包正式环境。

1
npm run build:prod

将生成的dist文件夹内容放到面拥有Docker服务的服务器里面,增加nginx的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name _;

location / {
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ruoyi-gateway.ruoyi-system:8080/;
}

# 避免actuator暴露
if ($request_uri ~ "/actuator") {
return 403;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

编写 Dockerfile 的规范。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 基础镜像
FROM nginx
# author
MAINTAINER ruoyi

# 挂载目录
VOLUME /home/ruoyi/projects/ruoyi-ui
# 创建目录
RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
# 指定路径
WORKDIR /home/ruoyi/projects/ruoyi-ui
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/ruoyi/projects/ruoyi-ui
1
2
3
4
5
6
7
# 进入相应服务目录
[root@node02 ruoyi-ui]# docker build -t ruoyi-ui:v1.0 -f Dockerfile .
# 推送镜像到Harbor仓库,其它微服务推送方法一致,只是名字不同。
# 打标签
[root@node02 ruoyi-ui]# docker tag ruoyi-ui:v1.0 192.168.18.111:31432/library/ruoyi-ui:v1.0
# 推送
[root@node02 ruoyi-ui]# docker push 192.168.18.111:31432/library/ruoyi-ui:v1.0

kubesphere使用镜像部署服务

所有镜像创建无状态服务,但 ruoyi-gateway,ruoyi-ui 需要开启外网访问。

ruoyi-gateway 的外网访问地址就是前端需要修改生产环境下访问的网关地址。

ruoyi-ui 的外网访问就是管理平台的页面访问地址。