#(1)根據dockerfile建構基礎鏡像
1)dockerfile
#mkdir /temp/basic
#cd /temp/basic
#cat dockerfile
FROM java:8
MAINTAINER wangfang
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
2)建構
docker build registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/java:v1 .
docker push registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/java:v1
#(2)根據打包生成的jar包生成新的dockerfile檔案
#mkdir /temp/release; cd /temp/release
#cat dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/java:v1
ADD demo-0.0.1-SNAPSHOT.jar /
WORKDIR /
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo-0.0.1-SNAPSHOT.jar"]
#(3)準備項目的資源配置清單
1)deployment對象資源配置清單檔案
#cd /temp/release
# cat springboot-test.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: springboot-test-deployment
spec:
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
replicas: 2
selector:
matchLabels:
app: springboot-test
template:
metadata:
labels:
app: springboot-test
spec:
containers:
- name: springboot-test
image: registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/springboot-test:tag
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "256m"
limits:
memory: "512Mi"
cpu: "512m"
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 20
periodSeconds: 3
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 20
periodSeconds: 3
successThreshold: 1
failureThreshold: 3
2)service對象資源配置清單檔案
# cat springboot-test-service.yaml
apiVersion: v1
kind: Service
metadata:
name: springboot-test-service
spec:
selector:
app: springboot-test
type: NodePort
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
nodePort: 33333
type: NodePort
#(3)配置jenkins
1)丢棄舊的建構

2)參數化建構過程
3)配置tag
4)配置git倉庫位址
5)配置打包指令
6)ssh到jenkins伺服器, 這台機器我配置的也是kubectl用戶端;
指令說明:
把打包生成的jar包拷貝到工作目錄, 根據tag建構新的鏡像,
實驗示範我是推送到阿裡雲的容器鏡像倉庫, 生産環境建議部署habor開源鏡像倉庫, 速度更快
然後根據tag把資源配置的tag裡面替換成真實的tag;
最後根據資源配置清單檔案釋出項目
cd /temp/release
\cp /var/lib/jenkins/workspace/test/target/demo-0.0.1-SNAPSHOT.jar .
docker build -t registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/springboot-test:${tag} .
docker login --username=your_name registry.cn-hangzhou.aliyuncs.com --password=your_password
docker push registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/springboot-test:${tag}
sed -ri "s/tag/${tag}/g" springboot-test.yaml
kubectl apply -f .
注意: 第一次釋出項目, 使用的是sed替換和apply釋出項目; 第一次之後把sed和apply方式修改成set image釋出項目
kubectl set image deployment deployment_name container_name=image:version
#(4)測試
1)修改源代碼如下, 同時送出到git倉庫和打tag
2)開始建構項目
pod容器建立成功
釋出的tag的版本
通路資源, 确實是修改後的資源
3)修改資源進行第二次釋出
上傳到git遠端倉庫
建立tag并上傳到git倉庫
4)修改jenkins為滾動釋出, 不使用資源配置清單