• k8s KubeSphere流水线部署SpringBoot后端项目 详细教程


    1. 创建流水线项目

    在这里插入图片描述

    2. 首先去流水线项目 创建三个凭证

    在这里插入图片描述

    • kubeconfig类型:默认内容为当前用户的 kubeconfig 配置。 选择此类型创建默认有值
    • 用户名密码(my-login):git账号和密码
    • 用户名密码(my-aliyun-docker):阿里云容器镜像仓库账号密码

    3. 创建流水线

    在这里插入图片描述

    4. 流水线Jenkinsfile文件

    pipeline {
      agent {
        node {
          label 'maven'
        }
    
      }
      stages {
        stage('拉取') {
          agent none
          steps {
            git(url: 'https://gitee.com/wy521a/dream-yard-admin.git', credentialsId: 'my-login', changelog: true, poll: false, branch: 'master')
            sh 'ls'
          }
        }
    
        stage('编译') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'mvn clean package -Dmaven.test.skip=true'
              sh 'ls ruoyi-admin/target/'
            }
    
          }
        }
    
        stage('打包') {
          agent none
          steps {
            container('maven') {
              sh 'ls ruoyi-admin/target/'
              sh 'docker build -t dream-yard-admin:latest .'
            }
    
          }
        }
    
        stage('推送') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'my-aliyun-docker' ,passwordVariable : 'DOCKER_USER' ,usernameVariable : 'DOCKER_PASSWORD' ,)]) {
                sh 'echo 镜像库密码 | docker login  镜像库地址 -u 镜像库账号 -p 镜像库密码'
                sh 'docker tag dream-yard-admin:latest 镜像库地址/dream-yard/dream-yard-admin:$BUILD_NUMBER'
                sh 'docker push  镜像库地址/dream-yard/dream-yard-admin:$BUILD_NUMBER'
              }
    
            }
    
          }
        }
    
        stage('部署') {
          agent none
          steps {
            container('maven') {
              withCredentials([
                                                      kubeconfigFile(
                                                          credentialsId: 'kubeconfig',
                                                          variable: 'KUBECONFIG')
                                                          ]) {
                    sh 'envsubst < ruoyi-admin/deploy/deploy.yaml | kubectl apply -f -'
                  }
    
                }
    
              }
            }
    
          }
        }
    
    • 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
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    5. 可视化流水线设置说明

    - 粘贴以上Jenkinsfile文件,点编辑流水线

    在这里插入图片描述

    - 拉取

    在这里插入图片描述

    • Url:git地址
    • 凭证名称:选择我们创建的my-login名称的凭证,就是我们配置的git登录的账号密码
    • 分支:就是拉取哪个分支

    - 编译

    在这里插入图片描述

    • 这里需要指定容器运行shell命令,否则会报错
    • 第二个shell脚本就是我们编译的maven命令
    • 打包

    在这里插入图片描述

    • 同样也需要指定容器
    • 第二个shell脚本就是我们打镜像的命令

    Dockerfile文件内容:

    FROM openjdk:8-jdk
    
    MAINTAINER 作者
    
    ENV TZ=Asia/Shanghai
    ENV JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
    
    RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    RUN mkdir -p /ruoyi-admin
    
    WORKDIR /ruoyi-admin
    
    EXPOSE 8080
    
    ADD ./ruoyi-admin/target/ruoyi-admin.jar ./
    
    CMD sleep 5;java $JAVA_OPTS -jar ruoyi-admin.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    - 推送

    在这里插入图片描述

    • 这里需要指定容器——>添加凭证
    • 声明:我这里使用凭证的账号密码变量不好使,所以就写死了
    • 第一个shell脚本是登录阿里云容器镜像仓库
    • 第二个shell脚本是打镜像命令
    • 第三个是将我们打的镜像推送到阿里云镜像仓库

    - 部署

    在这里插入图片描述

    • 添加容器——>凭证,这个凭证是我们创建当前用户kubeconfig凭证
    • shell脚本命令就是执行部署的命令,不要使用kubernetesDeploy部署,这个到后面会停止使用、

    deploy.yaml文件:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: dream-yard-admin
      name: dream-yard-admin
      namespace: dream-yard # 正常创建的项目空间名称
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      strategy:
        type: RollingUpdate # Recreate:在创建新Pods之前,所有现有的Pods会被杀死 RollingUpdate:滚动升级,逐步替换的策略,同时滚动升级时,支持更多的附加参数
        rollingUpdate:
          maxSurge: 1  #maxSurge:1 表示滚动升级时会先启动1个pod
          maxUnavailable: 1 #maxUnavailable:1 表示滚动升级时允许的最大Unavailable的pod个数,也可以填写比例,maxUnavailable=50%
      selector:
        matchLabels:
          app: dream-yard-admin
      template:
        metadata:
          labels:
            app: dream-yard-admin
        spec:
          containers:
            - env:
                - name: CACHE_IGNORE
                  value: js|html
                - name: CACHE_PUBLIC_EXPIRATION
                  value: 3d
              image: registry.cn-hangzhou.aliyuncs.com/dream-yard/dream-yard-admin:$BUILD_NUMBER
              readinessProbe:
                httpGet:
                  path: /
                  port: 8080
                timeoutSeconds: 10
                failureThreshold: 30
                periodSeconds: 5
              imagePullPolicy: Always
              name: dream-yard-admin
              ports:
                - containerPort: 8080
                  protocol: TCP
              resources:
                limits:
                  cpu: 300m
                  memory: 600Mi
                requests:
                  cpu: 100m
                  memory: 100Mi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          terminationGracePeriodSeconds: 30
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: dream-yard-admin-service
      name: dream-yard-admin-service
      namespace: dream-yard # 正常创建的项目空间名称
    spec:
      ports:
        - name: http
          port: 8080
          protocol: TCP
          targetPort: 8080
      selector:
        app: dream-yard-admin
      sessionAffinity: None
      type: NodePort
    
    • 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
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    6. 以上就完成啦

    点个爱心和关注吧

  • 相关阅读:
    Android SensorManager学习
    二十七、java版 SpringCloud分布式微服务云架构之Java 枚举(enum)
    【华为校招】【校招】【Java】考古问题
    Docker实战之二
    记录socket的使用 | TCP/IP协议下服务器与客户端之间传送数据 | java学习笔记
    (附源码)ssm考试题库管理系统 毕业设计 069043
    Axure RP美容美妆医美行业上门服务交互原型图模板源文件
    RFID携手制造业升级,为锂电池生产带来前所未有的可靠性
    初步探索 superset新增导出excel功能
    HashMap解析
  • 原文地址:https://blog.csdn.net/A_yonga/article/details/125254055