k8s之根據tag發布spring boot項目
阿新 • • 發佈:2019-03-08
實驗 tps label src zone apps seconds image update #(1)根據dockerfile構建基礎鏡像
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文件
1)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為滾動發布, 不使用資源配置清單
k8s之根據tag發布spring boot項目