KuberSphere 实战

10/19/2022 k8s,运维

# 第一章 多租户系统实战

# 第二章 Kubersphere 中间件部署

应用部署需要关注的信息【应用部署三要素】

1、应用的部署方式

2、应用的数据挂载(数据,配置文件)

3、应用的可访问性

# 2.1 MySQL安装

# 2.1.1 MySQL配置管理

配置信息

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2.1.2 MySQL数据卷管理

# 2.1.3 工作负载

选择有状态副本集

存储卷

配置文件

# 2.1.4 服务配置

# 2.1.4.1 无状态服务(内网域名访问)

使用域名登录MySQL

# 2.1.4.2 有态服务(内网域名访问或者外网访问)

使用Navicat连接

内网连接

也可以想上面集群 内部使用域名访问

# 2.2 部署Redis

redis容器启动

#创建配置文件
## 1、准备redis配置文件内容
mkdir -p /mydata/redis/conf && vim /mydata/redis/conf/redis.conf


##配置示例
appendonly yes
port 6379
bind 0.0.0.0


#docker启动redis
docker run -d -p 6379:6379 --restart=always \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v  /mydata/redis-01/data:/data \
 --name redis-01 redis:6.2.5 \
 redis-server /etc/redis/redis.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 2.2.1 创建配置管理

# 2.2.2 创建工作负载

创建存储卷模板

挂在配置文件

# 2.2.3 服务配置

参考MySQL服务配置

# 第三章 应用商店

# 3.1 开启应用商店

如果使用最小化部署是不会安装应用商店,因此需要先开启应用商店功能

第一步

第二步:在搜索栏中输入 clusterconfiguration

第三步:搜寻到 openpitrix,将 enabled 的 false 改为 true

第四步:点击更新,等待几分钟

# 3.2 使用应用商店部署rabitmq

选中rabbitmq点击部署

# 第四章 应用仓库

使用空间管理员添加应用仓库

# 4.1 添加应用

# 第五章 RuoYi-Cloud部署

# 5.1 本地部署

# 5.1.1 克隆RuoYi-Cloud项目

# 5.1.2 Nacos准备

下载Nacos

https://github.com/alibaba/nacos/releases

创建数据库

  • ry-config
  • ry-cloud
  • ry-seata

配置Nacos数据存储方式为MySQL

修改application.properties文件

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=zhishun.cai
1
2
3
4

导入SQL数据

  • ry-config

​ 项目中 sql/ry_config.sql文件

  • ry-cloud

    项目中 sql/ry_cloud.sql文件

启动nacos

startup.cmd -m standalone
1

访问

http://localhost:8848/nacos

用户名:nacos
密码:nacos
1
2
3
4

修改配置文件中MySQL和Redis配置信息

# 5.1.3 前端工程启动

ruoyi-ui

npm install

npm run dev
1
2
3

# 5.1.3 启动项目

  • Gateway
  • Auth
  • System

# 5.2 上云部署

# 5.2.1 MySQL准备

按照上面搭建mysql服务,并将本地部署的sql文件上传

# 5.2.2 Redis准备

按照上面部署Redis

# 5.2.3 Nacos集群部署

创建有状态服务

  1. 创建配置文件

    1. application.properties文件创建

    2. cluster.conf文件创建

  2. 服务创建 服务 - 创建 - 有状态服务

    Tip:由于Nacos如果在MySQL未启动时会出现启动失败问题,这里采用探针,如果Nacos不能成功访问,就让K8s重启Nacos

    添加配置文件

# 5.2.4 创建Dockerfile,打包上传服务器

这里以Gateway举例

  1. Dockerfile

    FROM openjdk:8-jdk
    LABEL maintainer=zhishun.cai
    
    
    #docker run -e PARAMS="--server.port 9090"
    ENV PARAMS="--server.port=8080 --spring.profiles.active=prod --spring.cloud.nacos.discovery.server-addr=nacos.ruoyi:8848 --spring.cloud.nacos.config.server-addr=nacos.ruoyi:8848 --spring.cloud.nacos.config.namespace=prod --spring.cloud.nacos.discovery.namespace=prod --spring.cloud.nacos.config.file-extension=yml"
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    
    COPY *.jar /app.jar
    EXPOSE 8080
    
    #
    ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
  2. 将项目打包编译

  3. 创建文件夹ruoyi-gateway,并将jar包和Dockerfile放入其中

    [root@ha01 ruoyi-gateway]# pwd
    /opt/k8s/ruoyi-gateway
    [root@ha01 ruoyi-gateway]# ll
    总用量 95908
    -rw-r--r-- 1 root root      617 1021 09:53 Dockerfile
    -rw-r--r-- 1 root root 98205159 1021 09:48 ruoyi-gateway.jar
    
    1
    2
    3
    4
    5
    6

# 5.2.5 构建镜像并推送至阿里云仓库

构建镜像

docker build -t ruoyi-gateway:v1.0 -f Dockerfile .
1

推送至阿里云仓库

  1. 阿里云上创建命名空间

  2. 登录镜像仓库

    [root@ha01 ruoyi-gateway]# docker login --username=782099197@qq.com registry.cn-hangzhou.aliyuncs.com
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    
    1
    2
    3
    4
    5
    6
    7
  3. 按照阿里云规则给镜像打标签

    docker tag ebc1a6d4e55d registry.cn-hangzhou.aliyuncs.com/ximen/ruoyi-gateway:v1.0
    
    1
  4. 上传镜像

    docker push registry.cn-hangzhou.aliyuncs.com/ximen/ruoyi-gateway:v1.0
    
    1

# 5.2.6 后端项目部署

选择服务 - 无状态部署

# 5.2.7 前端项目部署

前端工程打包

npm run build
1

创建Dockerfile

# 基础镜像
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 ./nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./dist /home/ruoyi/projects/ruoyi-ui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

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:8080/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}# requirepass 123456
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
36

上传服务器

创建ruoyi-web文件夹

将上面前端打包工程、Dockerfile和nginx配置文件放入其中

打包

docker build -t ruoyi-web:v1.0 -f Dockerfile .
1

按照阿里云规则给镜像打标签

docker tag ebc1a6d4e55d registry.cn-hangzhou.aliyuncs.com/ximen/ruoyi-web:v1.0
1

上传镜像

docker push registry.cn-hangzhou.aliyuncs.com/ximen/ruoyi-web:v1.0
1

部署项目

服务 - 无状态

Last Updated: 10/21/2022, 6:03:22 PM