0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在K8s上部署MySQL

马哥Linux运维 来源:马哥Linux运维 2023-12-05 10:47 次阅读

简介

JumpServer是一款免费开源的堡垒机,可以帮助企业以更安全的方式管控和登录各种类型的资产。

JumpServer 堡垒机支持事前授权、事中监察、事后审计,满足等保合规要求。

使用Helm安装JumpServer

在K8s上部署MySQL

由于JumpServer需要使用外部MySQL,因此需要自己配置

添加Helm源
helm repo add bitnami https://charts.bitnami.com/bitnami

下载MySQL Helm Chart

helm fetch bitnami/mysql

tar -xf mysql-9.12.3.tgz

[root@node1 jumpserver]
[root@node1 mysql]
Chart.lock  charts  Chart.yaml  README.md  templates  values.schema.json  values.yaml

修改其中的values.yaml文件,内容如下


global:
  imageRegistry: ""
   
  imagePullSecrets: []
  storageClass: "csi-rbd-sc"  
auth:
  
  
  
  rootPassword: "mysql_password"  
  
  
  
  createDatabase: true  
  
  
  
  database: "jumpserver"  
  
  
  
  username: "jms"        
  
  
  password: "jms_password"  
  
  
    livenessProbe:
        enabled: true
        initialDelaySeconds: 60  
        periodSeconds: 60  
        timeoutSeconds: 10 
        failureThreshold: 3
        successThreshold: 1
    readinessProbe:
        enabled: true
        initialDelaySeconds: 60
        periodSeconds: 60
        timeoutSeconds: 10
        failureThreshold: 3
        successThreshold: 1 
    startupProbe:
        enabled: true
        initialDelaySeconds: 60
        periodSeconds: 60
        timeoutSeconds: 10
        failureThreshold: 10
        successThreshold: 1

创建名称空间

创建名称空间kms,后面的服务都部署在该名称空间下

kubectl create ns jms


部署MySQL


helm install jms-mysql . -f values.yaml -n jms

在k8s上部署redis

由于JumpServer需要使用外部redis,因此也需要自己配置

下载Redis Helm Chart

helm fetch bitnami/redis

tar -xf redis-18.0.4.tgz


[root@node1 jumpserver]
[root@node1 redis]
Chart.lock  charts  Chart.yaml  img  README.md  templates  values.schema.json  values.yaml

修改values.yaml文件内容如下


global:
  imageRegistry: ""
  
  
   imagePullSecrets: []
  storageClass: "csi-rbd-sc"  
  redis:
    password: "redis_password"

应用Chart
helm install jms-redis . -f values.yaml  -n jms

查看Pod


[root@node1 redis]
NAME                   READY   STATUS    RESTARTS   AGE
jms-mysql-0            1/1     Running   0          14m
jms-redis-master-0     1/1     Running   0          3m5s
jms-redis-replicas-0   1/1     Running   0          3m5s
jms-redis-replicas-1   1/1     Running   0          119s
jms-redis-replicas-2   1/1     Running   0          77s

部署JumpServer

添加Helm源

helm repo add jumpserver https://jumpserver.github.io/helm-charts


搜索JumpServer Helm Chart


[root@node1 jumpserver]
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                                       
jumpserver/jumpserver   3.8.1           v3.8.1          A Helm chart for Deploying Jumpserver on K
ubern...

下载Helm Chart 以便修改其中的values.yml

helm fetch jumpserver/jumpserver


如果上一步下载网速慢无法下载的话可以克隆github项目

git clone https://github.com/jumpserver/helm-charts.git


修改values.yaml


[root@node1 jumpserver]
/root/jumpserver/helm-charts/charts/jumpserver
[root@node1 jumpserver]
Chart.yaml  configs  README.md  templates  values.yaml

修改values.yaml内容如下


[root@node1 ~]
2c8jbQPosNKb2pC1iGkFwMHwYwg0XYaykCPiAeO8PccHAixbih


[root@node1 ~]
wF3NSIDTGGtO22cUNwBRV808


global:
  imageRegistry: "docker.io"  
  imageTag: v3.8.1
  
  
   imagePullSecrets: []
  storageClass: "csi-rbd-sc"  


externalDatabase:
  engine: mysql
  host: jms-mysql  
  port: 3306
  user: jms       
  password: "jms_password"
  database: jumpserver


externalRedis:
  host: localhost
  port: 6379
  password: "redis_password"
core:
  enabled: true


  labels:
    app.jumpserver.org/name: jms-core


  config:
    
    secretKey: "2c8jbQPosNKb2pC1iGkFwMHwYwg0XYaykCPiAeO8PccHAixbih"  
    
    bootstrapToken: "wF3NSIDTGGtO22cUNwBRV808" 
    
accessModes:
  - ReadWriteOnce

应用Chart

该步骤时间可能会较长

helm install jumpserver . -f values.yaml -n jms


查看Pod


[root@node1 ~]
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
jms-mysql               ClusterIP   10.96.211.71            3306/TCP                        146m
jms-mysql-headless      ClusterIP   None                    3306/TCP                        146m
jms-redis-headless      ClusterIP   None                    6379/TCP                        135m
jms-redis-master        ClusterIP   10.96.40.37             6379/TCP                        135m
jms-redis-replicas      ClusterIP   10.96.237.101           6379/TCP                        135m
jumpserver-jms-chen     ClusterIP   10.96.66.253            8082/TCP                        31m
jumpserver-jms-core     ClusterIP   10.96.204.210           8080/TCP                        31m
jumpserver-jms-kael     ClusterIP   10.96.236.163           8083/TCP                        31m
jumpserver-jms-koko     ClusterIP   10.96.68.28             5000/TCP,2222/TCP               31m
jumpserver-jms-lion     ClusterIP   10.96.26.169            8081/TCP                        31m
jumpserver-jms-magnus   ClusterIP   10.96.238.16            33061/TCP,33062/TCP,63790/TCP   31m
jumpserver-jms-web      ClusterIP   10.96.209.160           80/TCP    
                      31m

查看service


[root@node1 ~]
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
jms-mysql               ClusterIP   10.96.211.71            3306/TCP                        131m
jms-mysql-headless      ClusterIP   None                    3306/TCP                        131m
jms-redis-headless      ClusterIP   None                    6379/TCP                        120m
jms-redis-master        ClusterIP   10.96.40.37             6379/TCP                        120m
jms-redis-replicas      ClusterIP   10.96.237.101           6379/TCP                        120m
jumpserver-jms-chen     ClusterIP   10.96.66.253            8082/TCP                        16m
jumpserver-jms-core     ClusterIP   10.96.204.210           8080/TCP                        16m
jumpserver-jms-kael     ClusterIP   10.96.236.163           8083/TCP                        16m
jumpserver-jms-koko     ClusterIP   10.96.68.28             5000/TCP,2222/TCP               16m
jumpserver-jms-lion     ClusterIP   10.96.26.169            8081/TCP                        16m
jumpserver-jms-magnus   ClusterIP   10.96.238.16            33061/TCP,33062/TCP,63790/TCP   16m
jumpserver-jms-web      ClusterIP   10.96.209.160           80/TCP       
                   16m

使用Istio暴露jumpserver web服务

创建gateway


apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: jumpserver-gateway
  namespace: istio-system
spec:
  selector:
    app: istio-ingressgateway
  servers:
  - port:
     number: 80
     name: http
     protocol: HTTP
    hosts:
    - "jumpserver.myk8s.cn"


应用yaml文件
kubectl apply -f jumpserver-gateway.yaml


创建VirtualService


apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: jumpserver-virtualservice
  namespace: jms
spec:
  hosts:
  - "jumpserver.myk8s.cn"
  gateways:
  - istio-system/jumpserver-gateway
  http:
  - match:
     - uri:
         prefix: /
    route:
    - destination:
        host: jumpserver-jms-web
        port:
          number: 80


应用yaml文件
[root@node1 jumpserver]
virtualservice.networking.istio.io/jumpserver-virtualservice created

测试

查看istio ingressgateway的external-ip


[root@node1 jumpserver]
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP                   PORT(S)                                                                                      AGE
grafana                ClusterIP      10.96.234.93                            3000/TCP                                                                                     13d
istio-egressgateway    ClusterIP      10.96.24.219                            80/TCP,443/TCP                                                                               14d
istio-ingressgateway   LoadBalancer   10.96.174.147   192.168.0.111,192.168.0.222   15021:31848/TCP,80:31657/TCP,20001:31775/TCP,443:30425/TCP,31400:31780/TCP,15443:30671/TCP   14d
istiod                 ClusterIP      10.96.49.69                             15010/TCP,15012/TCP,443/TCP,15014/TCP                                                        14d
jaeger-collector       ClusterIP      10.96.63.79                             14268/TCP,14250/TCP,9411/TCP,4317/TCP,4318/TCP                                               13d
kiali                  ClusterIP      10.96.202.30                            20001/TCP,9090/TCP                                                                           13d
loki-headless          ClusterIP      None                                    3100/TCP                                                                                     13d
prometheus             ClusterIP      10.96.109.177                           9090/TCP                                                                                     13d
tracing                ClusterIP      10.96.141.120                           80/TCP,16685/TCP                                                                             13d
zipkin                 ClusterIP      10.96.225.164                           9411/TCP                          
                                                           13d

在需要访问jumpserver服务的主机上修改hosts,将jumpserver.myk8s.cn解析为external-ip地址,这里解析为192.168.0.111

79a2eb14-903b-11ee-939d-92fbcf53809c.jpg

访问服务

79b8e8ce-903b-11ee-939d-92fbcf53809c.jpg

79ce0fb0-903b-11ee-939d-92fbcf53809c.jpg

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    775

    浏览量

    26006
  • Service
    +关注

    关注

    0

    文章

    30

    浏览量

    13721

原文标题:K8s部署Jumpserver并使用Istio对外暴露服务

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    371.370、 部署何在k8s 上部署有状态应用 #硬声创作季

    项目开发
    充八万
    发布于 :2023年07月19日 00:25:33

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比

    方案简介如上图所示,我们只需要在Kubernetes集群中的每个节点上部署一个Logtail的容器,即可实现该节点上宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。我们针对k8s提供了
    发表于 02-28 12:49

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比

    方案简介如上图所示,我们只需要在Kubernetes集群中的每个节点上部署一个Logtail的容器,即可实现该节点上宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。我们针对k8s提供了
    发表于 02-28 12:50

    修改mysql的配置文件my.cnf来达到让降低mysql的运行内存

    何在配置只有1G内存的服务器上部署Tomcat和Mysql
    发表于 04-16 14:21

    K8S容器编排的互通测试

    K8S容器编排之NetWorkPolicy官方实例
    发表于 06-06 11:28

    k8s核心原理学习指南3

    k8s学习3 - 核心原理
    发表于 09-25 16:37

    K8s 从懵圈到熟练 – 集群网络详解

    导读:阿里云 K8S 集群网络目前有两种方案:一种是 flannel 方案;另外一种是基于 calico 和弹性网卡 eni 的 terway 方案。Terway 和 flannel 类似
    发表于 10-14 15:06

    从零开始入门 K8s | 应用存储和持久化数据卷:核心知识

    Provisioning 主要用了阿里云的云盘。它们需要相应存储插件,插件我已经提前部署在我的 K8s 集群中了(csi-nasplugin 是为了在 K8s 中使用阿里云 NAS 所需的插件
    发表于 10-15 14:55

    从零开始入门 K8s | 应用存储和持久化数据卷:核心知识

    用的是阿里云的 NAS 文件存储;动态 Provisioning 主要用了阿里云的云盘。它们需要相应存储插件,插件我已经提前部署在我的 K8s 集群中了(csi-nasplugin 是为了在 K8s 中使
    发表于 10-16 10:10

    k8s volume中的本地存储和网络存储

    八 、 k8s volume 本地存储和网络存储
    发表于 03-25 08:44

    搭建K8s环境平台的步骤

    1 搭建K8s环境平台规划1.1 单master集群1.2 多master集群
    发表于 11-04 06:03

    何在esp8266 Node MCU的硬件上部署LVGL

    前言本文,介绍如何在esp8266 Node MCU的硬件上部署LVGL项目。使用的屏幕使用型号是ST7735 TFT 128x128屏幕。(一)arduinoIDE esp8266环境配置自行
    发表于 12-08 07:15

    介绍在STM32cubeIDE上部署AI模型的系列教程

    介绍在STM32cubeIDE上部署AI模型的系列教程,开发板型号STM32H747I-disco,值得一看。MCUAI原文链接:【嵌入式AI开发】篇四|部署篇:STM32cubeIDE上部署神经网络之模型
    发表于 12-14 09:05

    mysql部署k8s上的实现方案

    的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。这里主要讲 mysql 部署k8s 上,mysql
    的头像 发表于 09-26 10:39 2051次阅读

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful
    发表于 07-19 13:14 603次阅读