zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

程序员真是惹不起,看不下去就动手!为了方便部署,居然亲自动手把这款SQL工具制作成容器

SQL工具部署容器程序员 制作 方便 动手
2023-09-14 09:14:54 时间

程序员大家是真惹不起啊!看不下去就动手!没有道理可讲。

为什么会有这样的感慨呢,让小编复述一下事情的原委。

小编的公司在2023年1月份发布了一款面向个人免费的SQL开发工具,可以面向多数据库管理的一款纯Web版工具SQL Studio,跨平台支持Windows、MacOS和Linux三种平台。

一位热心网友私信小编能不能支持容器部署,因为这款产品的研发正忙于解决大家反馈的各种问题,公司暂时并没有提供容器部署,需要再等等。

等待,可能是一位程序员最不能容忍的事情。于是,我们这位可爱的网友,自发动手把我司这款SQL工具制作成了容器,并总结了一段图文。

在此,小编非常感谢这位热心网友,同时也分享给各位程序员同行参考。特别申明,这篇文章的代码并未麦聪软件官方确认,仅供大家参考学习!

在这里插入图片描述
以下内容转自B站up主“嘿嘿嘿?!!”,转载正文如下:

摘要
SQL Studio 是由 麦聪软件 开发的一款全 web 的数据库管理和开发工具。可以便捷、高效、简单的管理多种数据库如: Oracle 、 PostgreSQL 、 MySQL 、 SQLite 、 SQL Server 、 DM(武汉达梦) 、 KingBase(人大金仓) 等。

目前 SQL Studio 官方并没有提供容器化的部署方案,本文尝试性的将 SQL Studio 制作成容器并通过 docker 和 kubernetes 将其部署。

环境信息

在这里插入图片描述
图1-1 主机信息

软件版本信息

在这里插入图片描述
图1-2 软件版本信息

制作镜像
访问麦聪软件 SQL Studio 下载页,注册账号,下载 SQL Studio Linux 版

http://www.maicongs.com/#/home/probation/studio

准备 SQL Studio 资源

[root@vlnx207 sqlstudio]# ls
dockerfile  sqlstudio_linux_1.0.2.zip

准备简化启动脚本

vim sqlstudio-start.sh

文件内如如下

#!/bin/bash

SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
APP_JAR=$(cd $SHELL_FOLDER;ls Maicong-SQLStudio-*.jar)
LOG_PATH=$SHELL_FOLDER/log

JAVA_OPTS="
-server
-Xms2g
-Xmx4g
-XX:+UseG1GC
-XX:+UseStringDeduplication
-XX:+AlwaysPreTouch
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCCause
-Xloggc:$LOG_PATH/maicong-sqlstudio-gc.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=$LOG_PATH/maicong-sqlstudio-heapdump
-Dfile.encoding=utf-8"

java $JAVA_OPTS -jar $SHELL_FOLDER/$APP_JAR --spring.config.location=config/maicong.yaml

为简化启动脚本添加执行权限

chmod a+x sqlstudio-start.sh

创建 dockerfile 文件

vim dockerfile

文件内如如下

FROM centos:centos7.9.2009
#容器内用户
USER root
#暴露端口
EXPOSE 18888

#修改系统时区
ENV TZ Asia/Shanghai

#加中文支持
RUN set -x \
    && yum -y install kde-l10n-Chinese telnet \
    && yum -y reinstall glibc-common \
    && yum clean all \
    && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8

#常用软件安装
RUN set -x \
    && yum update -y \
    && yum install -y telnet net-tools wget curl unzip \
    && yum clean all \
    && rm -rf /tmp/* \
    && rm -rf /var/cache/yum/*

#注入sqlstudio程序
WORKDIR /apps/usr/sqlstudio/
COPY ./sqlstudio_linux_1.0.2.zip /apps/usr/sqlstudio
RUN set -x \
    && unzip -q sqlstudio_linux_1.0.2.zip -d /apps/usr/sqlstudio \
    && rm -rf sqlstudio_linux_1.0.2.zip

#注入简化启动脚本
WORKDIR /apps/usr/sqlstudio/linux
COPY ./sqlstudio-start.sh /apps/usr/sqlstudio/linux/

#将sqlstudio自带的jdk变更为全局变量
ENV JAVA_HOME /apps/usr/sqlstudio/linux/jdk1.8.0_351
ENV JRE_HOME ${JAVA_HOME}/
ENV PATH ${JAVA_HOME}/bin:${PATH}
ENV CLASSPATH .:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

#指定启动命令
CMD  ["/bin/bash","sqlstudio-start.sh"]

注:使用该 dockerfile 文件,构建出的镜像较大,该 dockerfile 文件是一个针对 SQL Studio 镜像制作的思路的体现。

优化 dockerfile 文件

使用多阶段构建方式,将构建镜像的过程拆分为两个阶段:build 阶段、 environment 阶段,在 build 阶段中将 SQL Studio 官方提供的的程序包 COPY 到构建容器中并安装 unzip 程序将其解压,在 environment 阶段将 build 阶段解压的程序包文件拷入并运行,通过这样的方式将镜像使用的空间减小,因本人习惯于使用 CentOS 作为基础镜像,也可以在构建中使用其他更小的基础镜像来完成 SQL Studio 的镜像制作。

FROM centos:centos7.9.2009 as build
USER root
EXPOSE 18888

WORKDIR /apps/usr/sqlstudio/
COPY ./sqlstudio_linux_1.0.2.zip /apps/usr/sqlstudio/
COPY ./sqlstudio-start.sh /apps/usr/sqlstudio/

RUN set -x \
    && yum -y install unzip \
    && yum clean all \
    && unzip -q sqlstudio_linux_1.0.2.zip -d /apps/usr/sqlstudio/ \
    && cp /apps/usr/sqlstudio/sqlstudio-start.sh /apps/usr/sqlstudio/linux/ \
    && rm -rf sqlstudio_linux_1.0.2.zip \
    && rm -rf /tmp/*  \
    && rm -rf /var/cache/yum/*

FROM centos:centos7.9.2009 as environment
USER root
EXPOSE 18888

ENV TZ Asia/Shanghai

WORKDIR /apps/usr/sqlstudio/
COPY --from=build /apps/usr/sqlstudio/linux /apps/usr/sqlstudio/

RUN set -x \
    && yum update -y \
    && yum -y install kde-l10n-Chinese telnet net-tools wget curl \
    && yum -y reinstall glibc-common \
    && yum clean all \
    && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \
    && rm -rf /tmp/*  \
    && rm -rf /var/cache/yum/*

ENV JAVA_HOME /apps/usr/sqlstudio/jdk1.8.0_351
ENV JRE_HOME ${JAVA_HOME}/
ENV PATH ${JAVA_HOME}/bin:${PATH}
ENV CLASSPATH .:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8

CMD  ["/bin/bash","sqlstudio-start.sh"] 

分别使用优化前后的 dockerfile 文件构建镜像

dockerfile.old 文件对应优化前的 dockerfile 文件

dockerfile.new 文件对应优化后的 dockerfile 文件

docker build -f dockerfile.old -t sqlstudioold:1.0.2 .
docker build -f dockerfile.new -t sqlstudionew:1.0.2 .

dockerfile 文件优化前后对比

使用如下命令分别打印优化前后镜像的编译信息,查看镜像的占用空间

docker history <镜像ID或镜像名> 

优化前

在这里插入图片描述

图2-1 优化前容器分层大小

注:图片中的优化前的镜像名和文档中镜像名存在不对应的问题,但是都是使用优化前的 dockerfile 文件构建的镜像不影响实际结果。

优化后

在这里插入图片描述

图2-2 优化前容器分层大小

对比前后的镜像变化,减少了两个 COPY 层,分别是拷入的 SQL Studio 官方提供的的程序包 275MB 和我们自行编写的快速启动脚本 535B ,通过分阶段构建的方式我们将镜像的大小从 1.2GB 缩小到了 923MB ,如果使用更小的基础镜像和其他的优化方式可以将镜像进一步压缩。

删除进行优化测试的俩个镜像

docker rmi sqlstudioold:1.0.2
docker rmi sqlstudionew:1.0.2

使用优化的后 dockerfile 文件制作镜像

docker build -f dockerfile -t sqlstudio:1.0.2 . 

上传公共云镜像仓库

修改镜像 Tag 标签

docker tag sqlstudio:1.0.2 registry.cn-hangzhou.aliyuncs.com/sql_studio/sql-studio:1.0.2

上传 阿里云 镜像仓库

[root@vlnx211 ~]# docker push registry.cn-hangzhou.aliyuncs.com/sql_studio/sql-studio:1.0.2
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/sql_studio/sql-studio]
4d13d7c57496: Pushed
6331bccae14c: Pushed
658f617325b7: Pushed
174f56854903: Pushed
1.0.2: digest: sha256:2095dff6a460ebb06b9e91e1deacbc06b5e9c8d8479c7dd7f71dae19034d3718 size: 1161 

部署镜像
docker环境下部署
docker 部署命令

docker run -d --name=sqlstudio -p 18888:18888/tcp  -v /apps/usr/sqlstudio/log/:/apps/usr/sqlstudio/linux/log/  -v /apps/usr/sqlstudio/data/:/apps/usr/sqlstudio/linux/data/ sqlstudio:1.0.2

命令解析

docker run
-d
#后台运行
--name=sqlstudio
#定义容器名称
-p 18888:18888/tcp
#定义容器端口
-v /apps/usr/sqlstudio/log/:/apps/usr/sqlstudio/linux/log/
#配置挂载卷,将sqlstudio产生的日志输出到本地磁盘
-v /apps/usr/sqlstudio/data/:/apps/usr/sqlstudio/linux/data/
#配置挂载卷,将sqlstudio产生的数据输出到本地磁盘
sqlstudio:1.0.2
#指定镜像

验证部署是否正常

查看 SQL Studio 的控制台日志是否启动成功

[root@vlnx207 linux]# docker logs sqlstudio
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
14:06:09.164 [main] INFO com.mc.MainApplication - Maicong SQLStudio Start...

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::                (v2.6.7)

2023-01-18 14:06:09.614 [main] INFO  com.mc.MainApplication - Starting MainApplication v1.0.0-release using Java 1.8.0_351 on d440cb2cad54 with PID 12 (/apps/usr/sqlstudio/linux/Maicong-SQLStudio-1.0.0-release.jar started by root in /apps/usr/sqlstudio/linux)
2023-01-18 14:06:09.616 [main] INFO  com.mc.MainApplication - No active profile set, falling back to 1 default profile: "default"
2023-01-18 14:06:10.268 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[org.spring.mc.dao.master]' package. Please check your configuration.
2023-01-18 14:06:10.633 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 18888 (http)
2023-01-18 14:06:10.645 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-18888"]
2023-01-18 14:06:10.645 [main] INFO  org.apache.catalina.core.StandardService - Starting service [Tomcat]
2023-01-18 14:06:10.646 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.62]
2023-01-18 14:06:10.737 [main] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
2023-01-18 14:06:10.737 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1086 ms
2023-01-18 14:06:11.424 [main] INFO  s.d.s.w.PropertySourcedRequestMappingHandlerMapping - Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2023-01-18 14:06:11.529 [main] INFO  o.s.b.a.web.servlet.WelcomePageHandlerMapping - Adding welcome page: ServletContext resource [/index.html]
2023-01-18 14:06:11.670 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-18888"]
2023-01-18 14:06:11.726 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 18888 (http) with context path ''
2023-01-18 14:06:11.727 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Context refreshed
2023-01-18 14:06:11.738 [main] INFO  s.d.s.web.plugins.DocumentationPluginsBootstrapper - Found 1 custom documentation plugin(s)
2023-01-18 14:06:11.760 [main] INFO  s.d.spring.web.scanners.ApiListingReferenceScanner - Scanning for api listing references
2023-01-18 14:06:11.980 [main] INFO  com.mc.MainApplication - Started MainApplication in 2.695 seconds (JVM running for 3.299)
2023-01-18 14:06:11.982 [main] INFO  com.mc.spring.lifecycle.AppLifecycleListener - App Lifecycle -> start
2023-01-18 14:06:11.983 [main] INFO  com.mc.MainApplication - Maicong SQLStudio started successfully.
2023-01-18 15:16:02.870 [http-nio-18888-exec-2] INFO  o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-01-18 15:16:02.872 [http-nio-18888-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
2023-01-18 15:16:02.886 [http-nio-18888-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - Completed initialization in 14 ms
2023-01-18 15:16:03.233 [http-nio-18888-exec-2] INFO  com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
2023-01-18 15:16:06.241 [http-nio-18888-exec-8] INFO  com.mc.controller.PublicUserController - User IP address is:11.0.1.1 

访问 SQL Studio 的 Web 界面,查看是否可以正常访问

SQL Studio 的 Web 界面如下图

在这里插入图片描述

图2-3 SQL Studio 的 Web 界面

kubernetes环境下部署

前期准备
在镜像制作服务器上修改镜像 Tag 标签

docker tag sqlstudio:1.0.2 harbor.sharks.top/sqlstudio/sqlstudio:1.0.2

将镜像上传 harbor 镜像存储

docker push harbor.sharks.top/sqlstudio/sqlstudio:1.0.2

在 NFS 持久化存储服务器创建 SQL Studio 持久化文件目录

mkdir -m 755 -p /apps/usr/nfs_data/ruoyi-cloud-sql-studio/{data,logs}

在 kubernetes master 节点创建 SQL Studio 的 YAML 资源文件存储目录

mkdir -m 755 -p /root/RuoYi-Cloud/sql-studio/

进入目录

cd /root/RuoYi-Cloud/sql-studio/ 

创建资源定义文件

创建 SQL Studio 的存储资源定义 YAML 文件,该章节采用 NFS 存储挂载到 PV , PVC 挂载到容器的方式进行,也可以采用其他的存储资源。

vim ruoyi-cloud-sql-studio-storage.yaml

文件内如如下

#SQL Studio 的日志存储 PV
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ruoyi-cloud-sql-studio-logs-pv
  labels:
    app: sql-studio
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  mountOptions:
  - hard
  - nfsvers=4.1
  nfs:
    server: 11.0.1.207
    path: /apps/usr/nfs_data/ruoyi-cloud-sql-studio/logs/
  persistentVolumeReclaimPolicy: Retain

#SQL Studio 的数据存储 PV
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ruoyi-cloud-sql-studio-data-pv
  labels:
    app: sql-studio
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  mountOptions:
  - hard
  - nfsvers=4.1
  nfs:
    server: 11.0.1.207
    path: /apps/usr/nfs_data/ruoyi-cloud-sql-studio/data/
  persistentVolumeReclaimPolicy: Retain

#SQL Studio 的日志存储 PVC
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ruoyi-cloud-sql-studio-logs-pvc
  namespace: ruoyi-cloud
spec:
  resources:
    requests:
      storage: 5Gi
  accessModes:
  - ReadWriteOnce
  selector:
    matchLabels:
      app: sql-studio

#SQL Studio 的数据存储 PVC
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ruoyi-cloud-sql-studio-data-pvc
  namespace: ruoyi-cloud
spec:
  resources:
    requests:
      storage: 5Gi
  accessModes:
  - ReadWriteOnce
  selector:
    matchLabels:
      app: sql-studio 

创建 SQL Studio 的 ConfigMap (配置字典)资源定义 YAML 文件

vim ruoyi-cloud-sql-studio-ConfigMap.yaml

文件内容如下

---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: sql-studio
    namespace: ruoyi-cloud
  name: sql-studio-maicong.yaml
  namespace: ruoyi-cloud
data:
  maicong.yaml: >
    # ======================== MaiCongSoftWare Configuration =========================
    #
    # NOTE: MAICONGSOFTWARE comes with reasonable defaults for most settings.
    #       Before you set out to tweak and tune the configuration, make sure you
    #       understand what are you trying to accomplish and the consequences.
    #
    # The primary way of configuring a node is via this file. This template lists
    # the most important settings you may want to configure for a production cluster.
    #
    # Please consult the documentation for further information on configuration options:
    # http://www.maicongs.com/#/listdocu
    #
    # -------------------------------------- Network --------------------------------------
    # set the server run port for backend and frontend, this is backend port
    # must
    server.port: 18888

    # ----------------------------------------- DB configuration ----------------------------------------
    master.datasource.initial-size: 10
    master.datasource.max-active: 100
    master.datasource.min-idle: 10
    # set the sqlite local path (have default if not set)
    #master.datasource.url: jdbc:sqlite:xxx/sqlite.db
    master.datasource.url:

    # ---------------------------------------- LOG ----------------------------------------
    # log level, you can set info, error, warn, debug
    logging.level.com.mc.dao: info

    # --------------------------------------- MYBATIS ------------------------------------
    mybatis.check-config-location: true
    mybatis.config-location: classpath:mybatis/mybatis-config.xml
    mybatis.mapper-locations: classpath:mybatis/mapper/*.xml
    mybatis.type-aliases-package: com.mc.entity

    # -------------------------------------- Network --------------------------------------
    server.tomcat.accept-count: 800
    server.tomcat.max-connections: 20000
    server.tomcat.max-max-threads: 1000
    server.tomcat.uri-encoding: UTF-8

    # -------------------------------------- SPRING ---------------------------------------
    spring.http.enncoding.charset: UTF-8
    spring.http.enncoding.enabled: true
    spring.http.enncoding.force: true
    spring.messages.encoding: UTF-8
    spring.mvc.async.request-timeout: 180000
    spring.mvc.pathmatch.matching-strategy: ant_path_matcher
    spring.messages.basename: i18n/messages 

创建 SQL Studio 的部署资源定义 YAML 文件

vim ruoyi-cloud-sql-studio-Deployment-Service.yaml

文件内容如下

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    k8s.kuboard.cn/displayName: SQL Studio
  labels:
    k8s.kuboard.cn/layer: monitor
    k8s.kuboard.cn/name: sql-studio
  name: sql-studio
  namespace: ruoyi-cloud
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: monitor
      k8s.kuboard.cn/name: sql-studio
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/restartedAt: '2023-01-18T22:44:29+08:00'
      creationTimestamp: null
      labels:
        k8s.kuboard.cn/layer: monitor
        k8s.kuboard.cn/name: sql-studio
    spec:
      containers:
        - image: 'harbor.sharks.top/sqlstudio/sqlstudio:1.0.2'
          imagePullPolicy: Always
          lifecycle:
            preStop:
              exec:
                command:
                  - /bin/bash
                  - /apps/usr/sqlstudio/linux/
                  - stop
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /
              port: 18888
              scheme: HTTP
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: sql-studio
          ports:
            - containerPort: 18888
              name: server
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /
              port: 18888
              scheme: HTTP
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            limits:
              memory: 4000Mi
            requests:
              memory: 2000Mi
          startupProbe:
            failureThreshold: 3
            httpGet:
              path: /
              port: 18888
              scheme: HTTP
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File

          volumeMounts:
            - mountPath: /apps/usr/sqlstudio/linux/data/
              name: data

            - mountPath: /apps/usr/sqlstudio/linux/log/
              name: logs

            - mountPath: /etc/localtime
              name: timezone
              readOnly: true

            - mountPath: /apps/usr/sqlstudio/linux/config/maicong.yaml
              name: maicong-yaml
              readOnly: true
              subPath: maicong.yaml

      dnsPolicy: ClusterFirst
      imagePullSecrets:
        - name: sharks-harbor
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

      volumes:
        - name: logs
          persistentVolumeClaim:
            claimName: ruoyi-cloud-sql-studio-logs-pvc

        - name: data
          persistentVolumeClaim:
            claimName: ruoyi-cloud-sql-studio-data-pvc

        - hostPath:
            path: /etc/localtime
            type: File
          name: timezone

        - configMap:
            defaultMode: 420
            items:
              - key: maicong.yaml
                path: maicong.yaml
            name: sql-studio-maicong.yaml
          name: maicong-yaml

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels:
    k8s.kuboard.cn/layer: monitor
    k8s.kuboard.cn/name: sql-studio
  name: sql-studio
  namespace: ruoyi-cloud
spec:
  clusterIP:
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: server
      nodePort: 32888
      port: 18888
      protocol: TCP
      targetPort: 18888
  selector:
    k8s.kuboard.cn/layer: monitor
    k8s.kuboard.cn/name: sql-studio
  sessionAffinity: None
  type: NodePort 

导入资源定义文件

导入存储资源定义 YAML 文件

kubectl apply -f ruoyi-cloud-sql-studio-storage.yaml

输出如下

[root@vlnx201 sql-studio]# kubectl create -f ruoyi-cloud-sql-studio-storage.yaml
persistentvolume/ruoyi-cloud-sql-studio-logs-pv created
persistentvolume/ruoyi-cloud-sql-studio-data-pv created
persistentvolumeclaim/ruoyi-cloud-sql-studio-logs-pvc created
persistentvolumeclaim/ruoyi-cloud-sql-studio-data-pvc created

导入配置字典资源定义 YAML 文件

kubectl apply -f ruoyi-cloud-sql-studio-ConfigMap.yaml

输出如下

[root@vlnx201 sql-studio]# kubectl apply -f ruoyi-cloud-sql-studio-ConfigMap.yaml
configmap/sql-studio-maicong.yaml created

导入部署资源定义 YAML 文件

kubectl apply -f ruoyi-cloud-sql-studio-Deployment-Service.yaml

输出如下

[root@vlnx201 sql-studio]# kubectl apply -f ruoyi-cloud-sql-studio-Deployment-Service.yaml
deployment.apps/sql-studio created
service/sql-studio created 

功能验证

请参考通过 docker 部署 SQL Studio 章节,该部分不在赘述

SQL Studio平台的使用

使用如下地址访问 SQL Studio

http://11.0.1.207:18888/#/login

SQL Studio 的 WEB 登录界面如下图

图3-1 SQL Studio 的 WEB 登录界面
图3-1 SQL Studio 的 WEB 登录界面

本次 SQL Studio 设置的账号密码如下

在这里插入图片描述

图3-2 账号信息

注:首次登陆时,填写的账号密码即为之后使用中的账号密码

SQL Studio 的 WEB 工作界面如下图

在这里插入图片描述

图3-3 SQL Studio 的 WEB 工作界面

SQL Studio 用户管理
在这里插入图片描述
图3-4 SQL Studio 用户管理

测试用户信息如下,请根据实际情况进行配置

在这里插入图片描述
图3-5 测试用户信息

SQL Studio 添加数据源

在这里插入图片描述
图3-6 SQL Studio 添加数据源

SQL Studio 配置数据源

在这里插入图片描述

图3-7 SQL Studio 配置数据源

测试数据源信息如下,请根据实际情况进行配置

在这里插入图片描述
图3-8 测试数据源信息

SQL Studio 简单操作

新建查询

在这里插入图片描述
图3-9 新建查询

导出数据

在这里插入图片描述

图3-10 导出数据

如需了解 SQL Studio 更多详细操作,请移步如下地址

http://www.maicongs.com/#/home/web