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指令碼
- LNMP自動部署指令碼LNMP指令碼
- Centos7.9 使用 Kubeadm 自動化部署 K8S 叢集(一個指令碼)CentOSK8S指令碼
- 實現指令碼自動部署docker指令碼Docker
- svn and maven 自動部署shell指令碼Maven指令碼
- specjvm自動化指令碼JVM指令碼
- docker指令碼自動化Docker指令碼
- 自動化RMAN指令碼指令碼
- MySQL8.0的自動部署指令碼MySql指令碼
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- Dockerfile---指令碼自動化Docker指令碼
- 前端專案nodejs自動部署指令碼前端NodeJS指令碼
- mydumper自動化安裝指令碼指令碼
- oracle 巡檢指令碼(自動化)Oracle指令碼
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- Jenkins+Docker+Gitee+SpringBoot自動化部署JenkinsDockerGiteeSpring Boot
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- K8s微服務自動化部署容器(Rancher流水線)K8S微服務
- 幾個shell自動化指令碼(轉)指令碼
- Jenkins + Docker + Gitee自動化部署SpringBoot應用JenkinsDockerGiteeSpring Boot
- Jenkins自動化部署SpringBoot多模組專案JenkinsSpring Boot
- SQL SERVER 2008 R2 監控指令碼自動化部署SQLServer指令碼
- 基於 Nebula Operator 的 K8s 自動化部署運維K8S運維
- Beego 自動化部署Go
- 自動化安裝zabbix指令碼(3.0/3.2)指令碼
- shell指令碼自動化採集效能sql指令碼SQL
- Hadoop自動化安裝shell指令碼Hadoop指令碼
- dataguard switchover的自動化指令碼實現指令碼
- 使用shell生成orabbix自動化配置指令碼指令碼
- 介面自動化指令碼設計規範指令碼
- web自動化測試框架-06 如何快速編寫自動化指令碼Web框架指令碼
- springboot docker jenkins 自動化部署並上傳映象Spring BootDockerJenkins
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python
- GithubCI+webhook實現push自動化部署(更靈活的指令碼模式)GithubWebHook指令碼模式
- Springboot 專案通過 gitlab CI/CD 整合 k8s 自動部署Spring BootGitlabK8S
- 自動ftp指令碼FTP指令碼
- Docker 指令碼化一鍵部署Docker指令碼
- 案例八:Shell自動化管理賬號指令碼指令碼