Kubernetes自动化配置部署

news/2024/6/3 16:36:11 标签: kubernetes, 自动化, 容器

在新建工程中,使用k8s的devops服务,自动化部署项目

1、在搭建好k8s的集群中,确认已开启devops服务;

2、新建Maven项目之后,创建dockerfile、deploy和Jenkins文件

例如:

Dockerfile

FROM bairong.k8s.master1/br-sjzl/tomcat:9.0-jdk8-temurin-focal

ENV TZ=Asia/Shanghai

RUN mkdir /usr/local/tomcat/webapps/userfiles

COPY bairong-web/target/*.war /usr/local/tomcat/webapps/

Deploy.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: czdataease-java

  namespace: br-demo-project

  annotations:

      deployment.kubernetes.io/revision: '1'

      kubesphere.io/creator: br-project-regular

spec:

  replicas: 1

  selector:

    matchLabels:

      app: czdataease-java

  template:

    metadata:

      labels:

        app: czdataease-java

    spec:

      imagePullSecrets:    #  如过使用harbor仓库得镜像,需要设置从secret处拉取镜像  查看 kubectl get secret

      - name: harbor-pull

      containers:

      - name: czdataease-java

        image:  bairong.k8s.master1/br-sjzl/czdataease-java:latest

        imagePullPolicy: Always

        ports:

        - containerPort: 8080

          name: nginx

        volumeMounts:

          - name: czdataease-nfs-volume

            mountPath: /usr/local/tomcat/webapps/userfiles

        # command: ["sh", "-c"]

        # args:

        #   - |

        #     cp -R /usr/local/tomcat/webapps/1 /usr/local/tomcat/webapps/userfiles/

      volumes:

        - name: czdataease-nfs-volume

          persistentVolumeClaim:

            claimName: br-czdataease-nfs-pvc           

---

apiVersion: v1

kind: Service

metadata:

  name: czdataease-java-service

  namespace: br-demo-project

  annotations:

    deployment.kubernetes.io/revision: '1'

    kubesphere.io/creator: br-project-regular

spec:

  selector:

    app: czdataease-java

  ports:

    - protocol: TCP

      name: nginx

      port: 8080

      targetPort: 8080

      nodePort: 30261

  type: NodePort

Jenkins

pipeline {

  agent {

    node {

      label 'nodejs'

    }



  }

  stages {

    stage('拉取') {

      agent none

      steps {

        container('nodejs') {

          git(url: 'http://192.168.19.199:12589/org_dataapplication/czDataease_vue.git', credentialsId: 'zyq', branch: 'master', changelog: true, poll: false)

        }



      }

    }



    stage('编译') {

      agent none

      steps {

        container('nodejs') {

          sh 'npm install --registry=http://192.168.19.197:31081/repository/npm-group/'

          sh 'npm run build'

        }



      }

    }



    stage('打包') {

      agent none

      steps {

        container('nodejs') {

          sh 'docker build -t czdataease-vue:latest -f docker/Dockerfile  .'

        }



      }

    }



    stage('推送') {

      agent none

      steps {

        container('nodejs') {

          withCredentials([usernamePassword(credentialsId : 'br-dockerhub-id' ,usernameVariable : 'DOCKER_USER_VAR' ,passwordVariable : 'DOCKER_PWD_VAR' ,)]) {

            sh 'echo $DOCKER_PWD_VAR | docker login $BR_REGISTRY --username=$DOCKER_USER_VAR --password-stdin'

            sh 'docker tag czdataease-vue:latest $BR_REGISTRY/$BR_DOCKERHUB_NAMESPACE/czdataease-vue:latest'

            sh 'docker push $BR_REGISTRY/$BR_DOCKERHUB_NAMESPACE/czdataease-vue:latest'

          }



        }



      }

    }



    stage('镜像部署') {

      agent none

      steps {

        container('nodejs') {

          withCredentials([kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {

            sh '''envsubst < deploy/deploy.yaml | kubectl apply -f -

kubectl rollout restart deploy/br-czdataease-vue -n br-demo-project'''

          }



        }



      }

    }



  }

  environment {

    DOCKER_CREDENTIAL_ID = 'dockerhub-id'

    GITHUB_CREDENTIAL_ID = 'github-id'

    KUBECONFIG_CREDENTIAL_ID = 'kubeconfig-demo'

    REGISTRY = 'docker.io'

    BR_REGISTRY = 'bairong.k8s.master1'

    DOCKERHUB_NAMESPACE = 'bwylove'

    BR_DOCKERHUB_NAMESPACE = 'br-sjzl'

    GITHUB_ACCOUNT = 'bwylove'

    APP_NAME = 'dataease-vue'

  }

  parameters {

    string(name: 'TAG_NAME', defaultValue: '', description: '')

  }

}

3、编辑流水线

4、开git上的webhook服务

5、确认服务已经正常,提交代码进行测试


http://www.niftyadmin.cn/n/5446317.html

相关文章

MySQL基础函数知识的学习,数学函数、字符串函数、获取日期函数

3月22日 函数相关操作 数学函数 select abs(-2); -- 求得绝对值 select ceiling(2.2); -- 求得大于2.2的最小整数 select floor(2.2); -- 返回小于2.2的最小整数 select exp(lin(4)); -- 求e的x幂 select ln(2); -- 返回2的自然对数 select log(2, 4); -- 以2为底的4的对数 …

lora-scripts 训练IP形象

CodeWithGPU | 能复现才是好算法CodeWithGPU | GitHub AI算法复现社区&#xff0c;能复现才是好算法https://www.codewithgpu.com/i/Akegarasu/lora-scripts/lora-trainstable-diffusion打造自己的lora模型&#xff08;使用lora-scripts&#xff09;-CSDN博客文章浏览阅读1.1k次…

【笔记】KaiOS SPN显示逻辑

更新流程code 1、gonk/dom/system/gonk/radio/RadioInterfaceLayer.jsm handleNetworkStateChanged -> requestNetworkInfo() -> handleRilResponse的getOperator -> handleOperator handleNetworkStateChanged:网络状态变化请求网络信息 this.requestNetworkInfo…

基于FPGA的UDP协议栈设计第三章_ARP层设计

文章目录 前言&#xff1a;ARP层报文解析一、ARP接收二、ARP发送三、ARP缓存表总结 前言&#xff1a;ARP层报文解析 当要和一个目的IP进行通信时&#xff0c;首先检查自己的ARP缓存表&#xff0c;是否存在目的IP对应的目的MAC&#xff0c;如存在则不会触发ARP请求与应答过程&am…

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目&#xff1a;vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理&#xff1a;vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整&#xff1a;vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

kubernetes-ingress 控制器

kubernetes-ingress 控制器 kubernetes-ingress 控制器1、理解一下负载均衡1.1、概念图1.2、理解ingress1.3、ingress的负载均衡属于7层负载均衡1.4、Ingress 的关键特性包括&#xff1a;1.5、Ingress 的工作原理&#xff1a;1.6、Ingress 的配置示例&#xff1a;1.7、ingress和…

【Java开发过程中的流程图】

流程图由一系列的图形符号和箭头组成&#xff0c;每个符号代表一个特定的操作或决策。下面是一些常见的流程图符号及其含义&#xff1a; 开始/结束符号&#xff08;圆形&#xff09;&#xff1a;表示程序的开始和结束点。 过程/操作符号&#xff08;矩形&#xff09;&#xff…

电控开发新架构 —— 生成式电力电子拓扑电路与统一的模型预测控制算法相结合

子标题&#xff1a;容错、高效、鲁棒、零序电压控制&#xff08;降低漏电流、共模电压、轴电压等&#xff09;、提升系统动态性能、更多指标系统级优化、统一电力电子功率模块的可重构性 一、电动汽车电控开发架构 高性能的电动汽车变流技术系统需要专门的设计&#xff0c;以满…