k8s自動化部署springcloud、springboot指令碼
為了自動化部署jar包到k8s容器雲上邊而寫的指令碼。
懶惰才是第一生產力,為了避免繁雜的發包操作。複製貼上的喋喋不休,jar包升版的版本控制而寫的指令碼。
一、 指令碼功能
把jar包放到指定目錄,執行shell指令碼,指令碼先自動根據資料夾的環境把jar包中的配置檔案替換掉。這樣可以很方便的打生產環境和測試環境的jar包。只需要把jar放上去,配置檔案無需關係,自動放到jar包裡。然後指令碼會自動把jar打成映象,給映象打成映象名稱加時間日期的標籤,然後把映象推送到映象倉庫。然後自動替換k8s的yaml指令碼停止舊容器,啟動新容器。
二、 指令碼所需
1. springboot的jar包
2. 構建springboot映象的Dockerfile
3. k8s啟動yaml檔案
三、 指令碼定義
appname:所打包的name
dockersrc:用來放置Dockerfile檔案。把jar包打成docker映象。
k8ssrc:用來防止k8s的yaml檔案,啟動pod,停止pod
bmc:jar包的名字
file1:jar包種要替換的配置檔案的名字,這個檔案放置在dockersrc目錄下。如bootstrap.properties
【替換jar包配置檔案真的很方便,這樣打成的jar包直接放進來就能用,無需關心配置檔案,一鍵shell即可打包更新環境】
四、 指令碼流程
1. 獲取當前時間的年月日時分秒,生成當前jar包的版本號
2. 把jar包中的配置檔案替換為dockersrc中的配置檔案。
3. 把jar包打成docker映象
4. 清除替換配置檔案的殘餘
5. 給映象打標籤帶上我們的版本號
6. 把這個映象推送到遠端映象倉庫
7. 替換yaml檔案中的版本號
8. 重啟pod,更新完成
五、 指令碼詳情
#!/bin/bash
#auth eric
#date 2020-11-25
#*********指令碼入參#*********
appname=base
#Docker指令碼位置
dockersrc=/home/springcloud/DockerBuilder/$appname
#K8s指令碼位置
k8ssrc=/home/springcloud/k8s/$appname
#需要替換的包名稱
bmc=$appname-server-web-1.0.jar
#需要替換的檔名稱
file1=bootstrap.properties
#*********指令碼入參#*********
#當前映象版本
source /etc/profile
version="`date +%Y%m%d%H%M%S`"
echo '當前版本為'$version
echo '第一步:替換JAR包配置檔案'
#找到替換檔案路徑
cd $dockersrc
#清除上一次的殘餘
rm -f *.tar *.jar
cp /home/springcloud/jar/$bmc $dockersrc
filesrc1=`jar -tvf \$bmc|grep \$file1|awk '{print \$NF}'`
echo $bmc
echo $file1
echo $filesrc1
#把要替換的檔案解壓出來
jar -xvf $bmc $filesrc1
#刪掉原檔案
rm -f $filesrc1
#換掉檔案
cp $file1 $filesrc1
#重新將檔案加入到jar包中
jar -uvf $bmc $filesrc1
#刪除解壓檔案
rm -rf BOOT-INF
rm -f *.tmp
echo '替換完成'
echo '第二步:構建Docker映象'
docker build -t springcloud-$appname:1.1 .
docker save springcloud-$appname:1.1 -o springcloud-$appname.tar
docker load < springcloud-$appname.tar
docker tag springcloud-$appname:1.1 192.168.1.6:15000/springcloud/springcloud-$appname:v$version
docker push 192.168.1.6:15000/springcloud/springcloud-$appname:v$version
echo '第三步:升級K8s容器'
#替換k8s容器映象版本
cd $k8ssrc
sed -i "s|springcloud/springcloud-$appname:.*|springcloud/springcloud-$appname:v$version |g" 04.application-deployments.yaml
kubectl delete -f 04.application-deployments.yaml
kubectl apply -f 04.application-deployments.yaml
echo '升級完成,當前版本為:'$version
六、 Dockerfile例項
首先要先安裝openjdk
docker pull openjdk
然後注意修改時區保證docker容器內的時間和外部時間同步
FROM openjdk:8
MAINTAINER ERIC-BASE
LABEL app="eric-base" version="1.1" by="eric"
COPY ./base-server-web-1.0.jar base-server-web-1.0.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
CMD java -Xms256m -Xmx512m -jar base-server-web-1.0.jar
七、 K8s指令碼
這個篇幅較長,放到下一篇吧
相關文章
- vue自動化部署指令碼Vue指令碼
- Centos7.9 使用 Kubeadm 自動化部署 K8S 叢集(一個指令碼)CentOSK8S指令碼
- 實現指令碼自動部署docker指令碼Docker
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- specjvm自動化指令碼JVM指令碼
- Jenkins+Docker+Gitee+SpringBoot自動化部署JenkinsDockerGiteeSpring Boot
- MySQL8.0的自動部署指令碼MySql指令碼
- 前端專案nodejs自動部署指令碼前端NodeJS指令碼
- Dockerfile---指令碼自動化Docker指令碼
- Jenkins + Docker + Gitee自動化部署SpringBoot應用JenkinsDockerGiteeSpring Boot
- mydumper自動化安裝指令碼指令碼
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- Jenkins自動化部署SpringBoot多模組專案JenkinsSpring Boot
- springboot docker jenkins 自動化部署並上傳映象Spring BootDockerJenkins
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python
- Springboot 專案通過 gitlab CI/CD 整合 k8s 自動部署Spring BootGitlabK8S
- GithubCI+webhook實現push自動化部署(更靈活的指令碼模式)GithubWebHook指令碼模式
- springboot開啟自動部署devtoolsSpring Bootdev
- K8s微服務自動化部署容器(Rancher流水線)K8S微服務
- 介面自動化指令碼設計規範指令碼
- web自動化測試框架-06 如何快速編寫自動化指令碼Web框架指令碼
- 阿里出品!SpringBoot應用自動化部署神器,IDEA版Jenkins?阿里Spring BootIdeaJenkins
- Docker 指令碼化一鍵部署Docker指令碼
- [python] request 介面測試自動化指令碼轉化為 [locust] 效能測試指令碼Python指令碼
- Maven 自動化部署Maven
- Maven自動化部署Maven
- 基於 Nebula Operator 的 K8s 自動化部署運維K8S運維
- pyautogui模組,PC自動化指令碼,控制滑鼠GUI指令碼
- 案例八:Shell自動化管理賬號指令碼指令碼
- 自動化瓦力多渠道打包python指令碼Python指令碼
- 自動備份指令碼指令碼
- springboot 配置熱啟動 不需重啟自動部署Spring Boot
- 微服務專案Git倉庫自動化指令碼微服務Git指令碼
- 用python寫一個自動化盲註指令碼Python指令碼
- Ubuntu自動啟動配置指令碼Ubuntu指令碼
- springboot打包不同環境配置與shell指令碼部署Spring Boot指令碼
- K8S搭建自動化部署環境 Jenkins下載、安裝和啟動K8SJenkins