• k8s集群中流水线部署微服务


    k8s集群中流水线发布微服务

    一、流水线部署微服务部署流程

    在这里插入图片描述

    二、微服务发布流程

    在这里插入图片描述
    在这里插入图片描述

    pipeline {
      agent {
        node {
          label 'maven'
        }
    
      }
       parameters {
        string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
        string(name: 'PROJECT_NAME', defaultValue: '', description: '')
      }
    
       environment {
        DOCKER_CREDENTIAL_ID = 'dockerhub-id'
        GITEE_CREDENTIAL_ID = 'gitee-id'
        KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
        REGISTRY = 'docker.io'
        DOCKERHUB_NAMESPACE = 'nextgomsb'
        GITEE_ACCOUNT = 'nextgomsb'
        SONAR_CREDENTIAL_ID = 'sonar-qube'
      }
    
    
      stages {
        stage('拉取项目代码') {
          agent none
          steps {
            git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', changelog: true, poll: false)
          }
        }
    
        stage('代码质量检查及分析') {
          agent none
          steps {
            container('maven') {
              withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
                withSonarQubeEnv('sonar') {
                  sh 'echo 当前目录 `pwd`'
                  sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
                  sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
                }
    
              }
    
              timeout(unit: 'HOURS', activity: true, time: 1) {
                waitForQualityGate 'true'
              }
    
            }
    
          }
        }
    
        stage('单元测试') {
          agent none
          steps {
            container('maven') {
              sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
            }
    
          }
        }
    
        stage('构建项目容器镜像及推送') {
          agent none
          steps {
            container('maven') {
              sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
              sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
              withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
                sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
                sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
                sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
              }
    
            }
    
          }
        }
    
        stage('创建项目代码及容器镜像的发布版') {
          agent none
          when {
            expression {
              return params.PROJECT_VERSION =~ /v.*/
            }
    
          }
          steps {
            container('maven') {
              input(message: '''@project-admin
    是否允许推送本次项目代码及容器镜像的发布版?''', submitter: 'project-admin')
              withCredentials([usernamePassword(credentialsId : 'gitee-id' ,passwordVariable : 'GITEE_PASSWORD' ,usernameVariable : 'GITEE_USERNAME' ,)]) {
                sh 'git config --global user.email "nextgo@126.com" '
                sh 'git config --global user.name "nextgo" '
                sh 'git tag -a $PROJECT_VERSION -m "$PROJECT_VERSION" '
                sh 'git push http://$GITEE_USERNAME:$GITEE_PASSWORD@gitee.com/$GITEE_ACCOUNT/sangomall.git --tags --ipv4'
              }
    
              sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION '
              sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION'
            }
    
          }
        }
    
        stage('部署微服务项目到K8S集群') {
          agent none
          steps {
            input(message: '''@project-admin
    是否允许发布微服务项目到K8S集群?''', submitter: 'project-admin')
            container('maven') {
              withCredentials([kubeconfigContent(credentialsId : 'sangomall-kubeconfig' ,variable : 'KUBECONFIG_CONTENT' ,)]) {
                sh '''mkdir ~/.kube
    echo "$KUBECONFIG_CONTENT" > ~/.kube/config
    envsubst < $PROJECT_NAME/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
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127

    在这里插入图片描述

    三、各微服务发布过程

    在这里插入图片描述

    3.1 mall-gateway

    在这里插入图片描述

    3.2 mall-auth-server

    在这里插入图片描述

    3.3 mall-cart

    在这里插入图片描述

    3.4 mall-coupon

    在这里插入图片描述

    3.5 mall-member

    在这里插入图片描述

    3.6 mall-order

    在这里插入图片描述

    3.7 mall-product

    在这里插入图片描述

    3.8 mall-search

    在这里插入图片描述

    3.9 mall-seckill

    在这里插入图片描述

    3.10 mall-third-party

    在这里插入图片描述

    3.11 mall-ware

    在这里插入图片描述

    3.12 renren-fast-master

    在这里插入图片描述

    3.13 renren-generator-master

    在这里插入图片描述

    四、微服务部署验证

    在这里插入图片描述

    五、mall-gateway服务暴露

    在这里插入图片描述

    lb.kubesphere.io/v1alpha1: openelb
    protocol.openelb.kubesphere.io/v1alpha1: layer2
    eip.openelb.kubesphere.io/v1alpha2: layer2-eip
    
    • 1
    • 2
    • 3

    在这里插入图片描述
     

    在这里插入图片描述
     

    [root@dnsserver ~]# cat /var/named/msb.com.zone
    $TTL 1D
    @       IN SOA  msb.com admin.msb.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       NS      ns.msb.com.
    ns      A       192.168.10.145
    harbor  A       192.168.10.146
    reg-test        A       192.168.10.70
    kibana          A       192.168.10.70
    rabbitmq        A       192.168.10.70
    nacos-server    A       192.168.10.70
    zipkin-server   A       192.168.10.70
    sentinel-server A       192.168.10.70
    skywalking-ui   A       192.168.10.70
    rocketmq-dashboard      A       192.168.10.70
    mall-gateway    A       192.168.10.73
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    [root@dnsserver ~]# systemctl restart named
    
    • 1
  • 相关阅读:
    VR点亮元宇宙丨酷雷曼与你相约2022世界VR产业大会
    推出链上美债产品的 ProsperEx:RWA 衍生品赛道的早期玩家
    [39题] 牛客深度学习专项题
    使用Python将MySQL查询结果导出到Excel(xlsxwriter)
    Qt页面布局
    Vue项目之使用EditorConfig, Eslint和Prettier实现代码规范
    Java反射
    ElasticSearch - 映射(mapping)
    RabbitMQ篇
    Spring Boot中RedisTemplate的使用
  • 原文地址:https://blog.csdn.net/qq_37892401/article/details/132889311