KubeSphere
本文最后更新于5 天前,其中的信息可能已经过时,如有错误请发送邮件到1770087309@qq.com

一、部署KubesPhere

All-in-One部署

下载KK

export KKZONE=cn

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

# 如果上面命令下载不了,可以使用这个
wget https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.0.7/kubekey-v3.0.7-linux-amd64.tar.gz

执行安装

# 所有节点安装
yum install -y conntrack  socat 

./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.3.2

登录访问

Account: admin
Password: P@88w0rd

多节点部署

下载KK

export KKZONE=cn

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

# 如果上面命令下载不了,可以使用这个
wget https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.0.7/kubekey-v3.0.7-linux-amd64.tar.gz

创建配置文件

./kk create config --with-kubesphere v3.3.2

修改配置文件


apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: master, address: 192.168.17.10, internalAddress: 192.168.17.10, user: root, password: "junan@123"}
  - {name: node1, address: 192.168.17.11, internalAddress: 192.168.17.11, user: root, password: "junan@123"}
  - {name: node2, address: 192.168.17.12, internalAddress: 192.168.17.12, user: root, password: "junan@123"}
  roleGroups:
    etcd:
    - master
    control-plane: 
    - master
    worker:
    - node1
    - node2
  ....

创建集群

# 所有节点安装
yum install -y conntrack  socat 

./kk create cluster -f config-sample.yaml

二、中间件部署

MySql

1.配置文件

配置文件名称:mysql-cnf 键名:my.cnf

[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

2.环境变量

//键
MYSQL_ROOT_PASSWORD
//值
root

3.数据路径

//数据挂载路径
/etc/mysql/conf.d

//配置文件路径
/var/lib/mysql

Redis

1.配置文件

配置文件名称:redis.conf 键名:redis.conf

appendonly yes
port 6379
bind 0.0.0.0

2.启动命令

//命令
redis-server

//参数
/etc/redis/redis.conf

3.数据路径

//数据挂载路径
/data

//配置文件路径
/etc/redis

Nacos

1.配置文件

配置文件名称:nacos-conf 键名:application.properties

### Web 相关配置 ###
server.servlet.contextPath=/nacos
server.port=8848
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

### 数据源配置 ###
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql.kch-dev:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

### 命名模块配置 ###
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000

### 安全认证配置 ###
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=false
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

### 指定静态资源免认证路径 ###
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

2.环境变量

//键
MODE 
//值
standalone

3.数据路径

//配置文件路径
/home/nacos/conf/application.properties

//子路径(防止覆盖该路径下所有配置文件)
application.properties

Xxl-Job

1.环境变量

//数据库连接url
SPRING_DATASOURCE_URL
jdbc:mysql://mysql.kch-dev:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

//数据库用户名
SPRING_DATASOURCE_USERNAME
root

//数据库密码
SPRING_DATASOURCE_PASSWORD
root

2.数据路径

//数据挂载路径
/data/applogs

三、devops自动化部署

开启devops

登录平台管理员账户,定制资源下搜索ClusterConfiguration

修改配置文件信息,设置devops中enabled=true,等待一段时间系统自动安装

创建devops项目

创建用户,设置新用户角色信息为platform-self-provisioner

登录新用户账户,创建DevOps项目

在企业空间下提前创建一个项目,然后创建流水线,自动化部署

后端流水线

注意:https://gitee.com/kangchenhu/ruoyi-admin.git

1.Java项目部署agent选择maven
2.拉取代码环节若有密码,需要配置凭证
3.镜像仓库需要配置凭证
4.后端打包镜像使用openjdk:8-jre,需提前上传到宿主机
5.部署服务时需要配置kubeConfig凭证

pipeline {
  agent {
    node {
      label 'maven'
    }
  }

  environment {
    DOCKER_CREDENTIAL_ID = 'dockerhub-id'
    GITHUB_CREDENTIAL_ID = 'github-id'
    KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
    REGISTRY = 'crpi-889yxb948z8n1h15.cn-hangzhou.personal.cr.aliyuncs.com'
    DOCKERHUB_NAMESPACE = 'kch-images'
    GITHUB_ACCOUNT = 'kubesphere'
    APP_NAME = 'devops-java-sample'
  }

  parameters {
    string(name: 'TAG_NAME', defaultValue: '', description: '')
  }

  stages {
    stage('拉取代码') {
      agent none
      steps {
        container('maven') {
          echo '========开始拉取代码========'
          git(
            url: 'https://gitee.com/kangchenhu/ruoyi-admin.git',
            changelog: true,
            poll: false
          )
        }
      }
    }

    stage('编译代码') {
      steps {
        container('maven') {
          echo '=======开始编译代码======='
          sh 'mvn package'
        }
      }
    }

    stage('打包镜像') {
      agent none
      steps {
        container('maven') {
          echo '========开始打包镜像========='
          sh 'docker build -t ruoyi-admin:latest .'
        }
      }
    }

    stage('推送镜像') {
      agent none
      steps {
        container('maven') {
          echo '========开始推送镜像========='
          script {
            def imageTag = "${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-admin:SNAPSHOT-${BUILD_NUMBER}"

            // 镜像打标签
            sh "docker tag ruoyi-admin:latest ${imageTag}"

            // 登录远程仓库并推送镜像
            withCredentials([usernamePassword(
              credentialsId: DOCKER_CREDENTIAL_ID,
              usernameVariable: 'DOCKER_USER',
              passwordVariable: 'DOCKER_PASS'
            )]) {
              sh """
                echo "\$DOCKER_PASS" | docker login --username=\$DOCKER_USER --password-stdin ${REGISTRY}
                docker push ${imageTag}
              """
            }
          }

          echo '========删除本地镜像========='
          script {
            def imageTag = "${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-admin:SNAPSHOT-${BUILD_NUMBER}"

            echo "开始删除镜像:${imageTag} 和 ruoyi-admin:latest"

            // 删除指定镜像和默认标签
            sh """
              docker rmi ${imageTag} || true
              docker rmi ruoyi-admin:latest || true
            """
          }
        }
      }
    }

    stage('部署服务') {
      agent none
      steps {
        container('maven') {
          withCredentials([
            kubeconfigContent(
              credentialsId: "${KUBECONFIG_CREDENTIAL_ID}",
              variable: 'KUBECONFIG_CONFIG'
            )
          ]) {
            sh 'mkdir -p ~/.kube/'
            sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
            sh 'envsubst < deploy/deploy.yaml | kubectl apply -f -'
          }
        }
      }
    }
  }
}

前端流水线

注意:https://gitee.com/kangchenhu/ruoyi-web.git

1.Vue项目部署agent选择nodejs
2.拉取代码环节若有密码,需要配置凭证
3.镜像仓库需要配置凭证
4.部署服务时需要配置kubeConfig凭证
5.前端服务需要暴露,可以选择NodePort,使用IP+端口访问
6.前端打包镜像使用nginx:apline,需提前上传到宿主机
7.前端服务需要暴露,可以选择ClusterIP + Ingress,使用域名+端口访问
(域名需要配置在本地C:\Windows\System32\drivers\etc)

pipeline {
  agent {
    node {
      label 'nodejs'
    }
  }

  environment {
    DOCKER_CREDENTIAL_ID = 'dockerhub-id'
    GITHUB_CREDENTIAL_ID = 'github-id'
    KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
    REGISTRY = 'crpi-889yxb948z8n1h15.cn-hangzhou.personal.cr.aliyuncs.com'
    DOCKERHUB_NAMESPACE = 'kch-images'
    GITHUB_ACCOUNT = 'kubesphere'
    APP_NAME = 'devops-java-sample'
  }

  stages {
    stage('拉取代码') {
      agent none
      steps {
        container('nodejs') {
          git(
            url: 'https://gitee.com/kangchenhu/ruoyi-web.git',
            branch: 'master',
            changelog: true,
            poll: false,
            credentialsId: 'git-id'
          )
          sh 'ls -al'
        }
      }
    }

    stage('项目编译') {
      agent none
      steps {
        container('nodejs') {
          sh 'npm install --registry=https://registry.npmmirror.com'
          sh 'npm run build:prod'
          sh 'ls'
        }
      }
    }

    stage('构建镜像') {
      agent none
      steps {
        container('nodejs') {
          sh 'ls'
          sh 'docker build -t ruoyi-web:latest .'
        }
      }
    }

    stage('推送镜像') {
      agent none
      steps {
        container('nodejs') {
          echo '========开始推送镜像========='
          script {
            def imageTag = "${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-web:SNAPSHOT-${BUILD_NUMBER}"

            sh "docker tag ruoyi-web:latest ${imageTag}"

            withCredentials([usernamePassword(
              credentialsId: DOCKER_CREDENTIAL_ID,
              usernameVariable: 'DOCKER_USER',
              passwordVariable: 'DOCKER_PASS'
            )]) {
              sh """
                echo "\$DOCKER_PASS" | docker login --username=\$DOCKER_USER --password-stdin ${REGISTRY}
                docker push ${imageTag}
              """
            }
          }

          echo '========删除本地镜像========='
          script {
            def imageTag = "${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-web:SNAPSHOT-${BUILD_NUMBER}"

            echo "开始删除镜像:${imageTag} 和 ruoyi-web:latest"

            sh """
              docker rmi ${imageTag} || true
              docker rmi ruoyi-web:latest || true
            """
          }
        }
      }
    }

    stage('部署服务') {
      agent none
      steps {
        container('nodejs') {
          withCredentials([
            kubeconfigContent(
              credentialsId: "${KUBECONFIG_CREDENTIAL_ID}",
              variable: 'KUBECONFIG_CONFIG'
            )
          ]) {
            sh 'mkdir -p ~/.kube/'
            sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
            sh 'envsubst < deploy/deploy.yaml | kubectl apply -f -'
            // nodePort方式暴露
            // sh 'envsubst < deploy/nodePort.yaml | kubectl apply -f -'
            // clusterId方式暴露 配合ingress
            sh 'envsubst < deploy/clusterIP.yaml | kubectl apply -f -'
            sh 'envsubst < deploy/ingress.yaml | kubectl apply -f -'
          }
        }
      }
    }

  }
}
觉得有帮助可以投喂下博主哦~感谢!
作者:KCH
版权声明: 转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇