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>
---
本文介绍了一个使用Jenkins流水线结合Kubernetes进行应用程序自动化构建、镜像制作、推送及部署的具体流程。该流程包括源码编译、Docker镜像构建与推送、Kubernetes配置文件更新及应用部署等关键步骤。
1万+

被折叠的 条评论
为什么被折叠?



