

k8s-deploy
node {env.BUILD_DIR = "/root/script/namespace"env.MODEL = "springboot"stage('Git') { for display purposesgit "https://gitee.com/xuexi100/yanshi.git"}stage('Maven') {sh "cd ${MODEL}; mvn clean; mvn package"}stage('build-image') {sh "sh root/script/build-springboot.sh"}stage('k8s-deploy'){sh "sh root/script/k8s-deploy.sh"}}
1、k8s的yaml文件在这里我们直接复制过来,然后把里面的相关值,配置成变量,就可以多次使用了。2、image的name这里的话,我们需要修改上个脚本,将镜像名字放到一个文件中,这样子我们是不是就可以获取到了。
# 在脚本文件的最后添加如下信息# 获取镜像名字echo ${Image_Name} > root/script/IMAGE_NAME
[root@node1 ~]# cd root/script/[root@node1 script]# mkdir template[root@node1 script]# cd template/[root@node1 template]##deployapiVersion: apps/v1kind: Deploymentmetadata:name: {{NAME}}spec:selector:matchLabels:app: {{NAME}}replicas: 1template:metadata:labels:app: {{NAME}}spec:containers:- name: {{NAME}}image: {{IMAGE}}ports:- containerPort: 8080---#serviceapiVersion: v1kind: Servicemetadata:name: {{NAME}}spec:ports:- port: 80protocol: TCPtargetPort: 8080selector:app: {{NAME}}type: ClusterIP---#ingressapiVersion: extensions/v1beta1kind: Ingressmetadata:name: {{NAME}}spec:rules:- host: {{HOST}}http:paths:- path:backend:serviceName: {{NAME}}servicePort: 80[root@node1 template]#
node {env.BUILD_DIR = "/root/script/namespace"env.MODEL = "springboot"env.HOST = "springboot.yunweijia.com"stage('Git') { for display purposesgit "https://gitee.com/xuexi100/yanshi.git"}stage('Maven') {sh "cd ${MODEL}; mvn clean; mvn package"}stage('build-image') {sh "sh root/script/build-springboot.sh"}stage('k8s-deploy'){sh "sh root/script/k8s-deploy.sh"}}
[root@node1 template]# cd ..[root@node1 script]# pwd/root/script[root@node1 script]#[root@node1 script]# vim k8s-deploy.sh#!/bin/bashname=${JOB_NAME}image=$(cat root/script/IMAGE_NAME)host=${HOST}# 输出变量echo "deploying~~~"echo "k8s_NAME: ${name}"echo "k8s_IMAGE: ${image}"echo "k8s_HOST: ${host}"# 复制yaml文件过来rm -f springboot.yamlcp root/script/template/springboot.yaml .# 替换变量sed -i "s,{{NAME}},${name},g" springboot.yamlsed -i "s,{{IMAGE}},${image},g" springboot.yamlsed -i "s,{{HOST}},${host},g" springboot.yaml# 使配置生效kubectl apply -f springboot.yaml# 查看yaml文件cat springboot.yaml[root@node1 script]# chmod +x k8s-deploy.sh

[root@node1 script]# kubectl get podNAME READY STATUS RESTARTS AGEdeploy-springboot-5cf68f977b-rrcc2 1/1 Running 0 4m10snginx-ds-q2pjt 1/1 Running 16 10dnginx-ds-zc5qt 1/1 Running 21 16d[root@node1 script]#
说明是没有问题的。
health check
#!/bin/bashname=${JOB_NAME}image=$(cat /root/script/IMAGE_NAME)host=${HOST}# 输出变量echo "deploying~~~"echo "k8s_NAME: ${name}"echo "k8s_IMAGE: ${image}"echo "k8s_HOST: ${host}"# 复制yaml文件过来rm -f springboot.yamlcp /root/script/template/springboot.yaml .# 替换变量sed -i "s,{{NAME}},${name},g" springboot.yamlsed -i "s,{{IMAGE}},${image},g" springboot.yamlsed -i "s,{{HOST}},${host},g" springboot.yaml# 使配置生效kubectl apply -f springboot.yaml# 查看yaml文件cat springboot.yaml# 健康检查sleep 5success=0count=100IFS=","while [ ${count} -gt 0 ]doreplicas=$(kubectl get deploy ${name} -o go-template='{{.status.replicas}},{{.status.updatedReplicas}},{{.status.readyReplicas}},{{.status.availableReplicas}}')echo "kubectl get deploy ${name} -o go-template='{{.status.replicas}},{{.status.updatedReplicas}},{{.status.readyReplicas}},{{.status.availableReplicas}}'"echo "replicas is ${replicas}"shuzu=(${replicas})if [ "${shuzu[0]}" == "${shuzu[1]}" -a "${shuzu[1]}" == "${shuzu[2]}" -a "${shuzu[2]}" == "${shuzu[3]}" ];thenecho "Health check Successful!"success=1breakfi((count--))sleep 2doneif [ ${success} -ne 1 ];thenecho "Health check Failed!"fi


往期推荐
文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




