jenkins发布k8s平台

本文介绍了一个使用Jenkins流水线结合Kubernetes进行应用程序自动化构建、镜像制作、推送及部署的具体流程。该流程包括源码编译、Docker镜像构建与推送、Kubernetes配置文件更新及应用部署等关键步骤。
摘要由CSDN通过智能技术生成

1、k8s通过jenkins发布流水线模板

pipeline {
	agent any

	environment {
		app_name="ibuild-local4e"
		build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
		image_tag = "${env.BRANCH_NAME}-${build_tag}"
		branch = "xw_master"
		namespace = "sykj-dev"

	}

	stages {

		stage('Compile build') {
			steps {
				echo "start compile"
				sh "mvn clean package -Dmaven.test.skip=true"
				
			}
		}
		
	    stage('Build image') {
			steps {
				echo "start build image"
				sh "cp /data/jenkins/userContent/Docker-manage/${app_name}/${branch}/* ./"
				sh "docker build -t  192.168.1.137:8011/devops/${app_name}:${image_tag} ."
				sh "pwd"
    		}
    	}	
		
        stage('Push image') {
			steps {
				echo "start push image"
				sh "docker push 192.168.1.137:8011/devops/${app_name}:${image_tag}"
				sh "docker rmi 192.168.1.137:8011/devops/${app_name}:${image_tag}"
    		}
    	}
		
		stage('Change k8s YAML') {
			steps {
				echo "Change YAML File"
				sh "sed -i 's/<NAMESPACE>/${namespace}/' k8s.yaml"
				sh "sed -i 's/<APP_NAME>/${app_name}/' k8s.yaml"
				sh "sed -i 's/<IMAGE_TAG>/${image_tag}/' k8s.yaml"
    		}
    	}
		
		stage('Deploy k8s ') {
			steps {
				kubeconfig(caCertificate: '', credentialsId: 'kubectl-cert', serverUrl: 'https://192.168.1.200:16443') {
				
					
					sh "kubectl apply -f k8s.yaml"
					sh "sleep 10 && kubectl -n ${namespace} get pod |grep ${app_name}"
				}
				
    		}
    	}
	}
}

2、yaml编排文件基础模板

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ibuild-v2-<APP_NAME>
  namespace: <NAMESPACE>
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ibuild-v2-<APP_NAME>
  template: 
    metadata:
      labels:
        app: ibuild-v2-<APP_NAME>
    spec:
      nodeSelector:
        zone: ibuild-v2
      containers:
      - name: ibuild-v2-<APP_NAME>
        image:192.168.1.137:8011/devops/<APP_NAME>:<IMAGE_TAG>
        env: 
          - name: ENV
            value: dev
        #command: ["java", "-jar", "-Dspring.profiles.active=${ENV}", "/app/ibuilds-zh.jar"]
        volumeMounts:
          - name: <APP_NAME>-server-log
            mountPath: /app/logs
        ports:
        - name: port8080
          containerPort: 8080
        - name: port8083
          containerPort: 8083          
        # livenessProbe:
          # httpGet:
            # path: /api/common/health
            # port: port8080
          # initialDelaySeconds: 60
          # periodSeconds: 10
        # readinessProbe:
          # httpGet:
            # path: /api/common/health
            # port: port8080
          # initialDelaySeconds: 60
          # periodSeconds: 10
        resources: 
          requests:
            cpu: 200m
            memory: 512Mi
          limits:
            cpu: "1"        
            memory: 1024Mi          
      imagePullSecrets:
        - name: habor-repo
      volumes:
      - name: <APP_NAME>-server-log
        hostPath: 
          path: /data/logs/<APP_NAME>
          type: DirectoryOrCreate
        
---
apiVersion: v1
kind: Service
metadata:
  name: svc-ibuild-v2-<APP_NAME>
  namespace: <NAMESPACE>
  labels:
    app: ibuild-v2-<APP_NAME>
spec:
  type: ClusterIP
  #type: NodePort
  ports:
    - name: port8080
      port: 8080
      targetPort: 8080
      #nodePort: 30080
    - name: port8083
      port: 8083
      targetPort: 8083
      #nodePort: 30083      
  selector:
    app: ibuild-v2-<APP_NAME>

---

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值