目录
前言
- 前面写过一篇文章,kubernetes(k8s)滚动发布,不宕机实战已经实现了滚动发布,不过还得手工输命令,本篇呢想通过
Jenkins实现一键操作。使发布应用效率提高。 - 其实像
KubeSphere这类的工具也是集成了Jenkins的,之所以直接使用Jenkins,是因为那种大而全的工具必然会损耗资源,而我又用不上那么多的功能。
开始前的准备
- JDK环境。
- kubernetes。
- Jenkins。安装好之后需要一些基础配置,可以参考拙作gitlab+jenkins自动发布到Tomcat。
- Docker。
- 我使用的项目地址是: https://github.com/1030907690/spring-boot-kubernetes。
第一次创建应用
- 首先需要一个yaml文件(deployment.yaml),参考kubernetes(k8s)滚动发布,不宕机实战,去掉了
ConfigMap的配置和command,代码如下。
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-kubernetes-deployment
spec:
replicas: 2
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: spring-boot-kubernetes-deployment
template:
metadata:
labels:
app: spring-boot-kubernetes-deployment
spec:
terminationGracePeriodSeconds: 300
containers:
- name: spring-boot-kubernetes
image: spring-boot-kubernetes:1.0.0
imagePullPolicy: Never
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 50
periodSeconds: 5
successThreshold: 1
failureThreshold: 2
env:
- name: TZ
value: Asia/Shanghai
lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","echo this pod is stopping. > /stop.log && sleep 90s"]
- 我需要
spring-boot-kubernetes:1.0.0这个镜像,我手动创建一下。

docker build -t spring-boot-kubernetes:1.0.0 .

kubectl apply -f deployment.yaml

操作Jenkins
- 怎么下载、运行Jenkins就不多少了,可以参考拙作gitlab+jenkins自动发布到Tomcat。
Jenkins配置maven、jdk、git等等同样可以参考拙作gitlab+jenkins自动发布到Tomcat。- 下面直接创建自由风格项目。进入配置。
General

源码管理
- 源码管理填写仓库地址和分支,因为我是公共项目,所以不需要帐号密码。

构建

#!/bin/bash
sh rolling_update.sh
ls
cp src/main/resources/Dockerfile target
ls target
cd target
date=`date "+%Y%m%d%H%M%S"`
docker build -t spring-boot-kubernetes:$date .
kubectl set image deployment/spring-boot-kubernetes-deployment spring-boot-kubernetes=spring-boot-kubernetes:$date --record
kubectl get pod -o wide
kubectl rollout status deployment/spring-boot-kubernetes-deployment
kubectl get pod -o wide
FROM openjdk:8
ADD spring-boot-kubernetes-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT [ "java", "-jar", "/app.jar"]
Jenkins构建
- 下面就可以使用
Build Now一键发布最新的应用。

- 可以查看构建历史,如果有错误的时候,方便排查错误。


- 如果你不想点
Build Now,也可以使用Webhook,可以参考拙作gitlab+jenkins自动发布到Tomcat。 - 以上就把Jenkins和kubernetes(k8s)结合起来实现滚动发布了。
小结
- 本文先把应用创建一次。然后
Jenkins就做滚动发布的事情,分成这2个步骤。