歡迎訪問我的github
所有原創文章分類彙總及配套原始碼,涉及j**a、docker、kubernetes、devops等;
對於生產環境,我們一般會用ci&&cd工具完成整個構建和部署,因此本文不適合生產環境;對於學習和開發環境,我們頻繁修改**,又想快速見到效果,本文就是針對這種場景的;
本次實戰有兩個環境:開發和執行環境,其中開發環境資訊如下:
執行環境資訊如下:
另外,請在開發環境安裝sshpass;
本次實戰用到了乙個普通的springboot工程,原始碼可在github**到,位址和鏈結資訊如下表所示():
名稱鏈結
備註專案主頁該專案在github上的主頁git倉庫位址(https).git該專案原始碼的倉庫位址,https協議git倉庫位址(ssh)[email protected]:zq2599/blog_demos.git該專案原始碼的倉庫位址,ssh協議
這個git專案中有多個資料夾,本章的應用在probedemo資料夾下,如下圖紅框所示:
整個工程是普通springboot工程,除了常見的pom.xml和原始碼,還多了以下三個檔案:
auto_deploy.sh詳述
auto_deploy.sh的作用如下:
#!/bin/bash
# 判斷是否安裝了sshpass
if ! [ -x "$(command -v sshpass)" ]; then
echo '請安裝sshpass後再使用此指令碼!'
exit 1
fi# 映象名
image_name='bolingc**alry/probedemo'
# tag名
tag_name='0.0.1'
# 配置了deployment和service的yaml檔名
deploy_service_yaml='probedemo.yaml'
# k8s環境的ip位址
k8s_ip_address='192.168.50.135'
# k8s環境的ssh賬號
k8s_ssh_account='root'
# 8s環境的ssh密碼
k8s_ssh_pswd='888888'
# k8s上存放tar和yaml檔案的位置
k8s_file_path='~/deploy_temp'
# 當前名目錄
current_dir=`pwd`
echo '開始自動構建和部署,當前目錄是:'$
# 執行m**en命令構建專案
mvn clean package -u -dskiptests
echo "構建映象檔案:"$/$
docker build -t $/$ .
echo "將映象匯出為tar檔案:"$/$
docker s**e $/$ > $/image.tar
echo "在k8s伺服器建立存放檔案的目錄:"$
sshpass -p $ ssh $@$ "mkdir -p $"
echo "將yaml檔案傳送到k8s伺服器:"$/$
sshpass -p $ scp $/$ $@$:$/
echo "將映象tar檔案傳送到k8s伺服器:"$/$
sshpass -p $ scp $/image.tar $@$:$/
echo "如果k8s環境之前已經部署過,就先清理:"$/$
sshpass -p $ ssh $@$ "kubectl delete -f $/$"
echo "等待10秒"
sleep 10
echo "清理之前載入到本地倉庫的映象:"$/$
sshpass -p $ ssh $@$ "docker rmi $/$"
echo "從tar檔案載入映象:"$/$
sshpass -p $ ssh $@$ "docker load < $/image.tar"
echo "部署:"$/$
sswww.cppcns.comhpass -p $ ssh $@$ "kubectl apply -f $/$"
echo "刪除tar檔案:"$/image.tar
rm -rf $/image.tar
echo "刪映象:"$/$
docker rmi $/$
實驗
部署已經完成,可以驗證功能了;
本次實戰更新映象的方法是本地匯出為tar,再傳到k8s環境去匯入,當k8s環境有多台機器時就不適合這樣作了,建議使用私有映象倉庫,將映象push到倉庫,然後k8s中映象倉庫pull映象;
至此,springboot應用快速部署到k8s的實戰就完成了,這是我開發過程中常用的遠端部署手段,希望能給您提供一些crkouqowrz參考;
你不孤單,欣宸原創一路相伴
j**a系列
spring系列
docker系列
kubernetes系列
資料庫+中介軟體系列
devops系列
Spring Boot快速入門
spring boot屬性配置檔案詳解 自定義屬性與載入 我們在使用spring boot的時候,通常也需要定義一些自己使用的屬性,我們可以如下方式直接定義 xml xml org.springframework.bootgroupid spring boot starterartifactid d...
Spring Boot 快速入門
spring boot 是由 pivotal 團隊提供的全新框架,其設計目的是用來簡化新 spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。spring boot 被認為是 spring mvc 的 人 它可以幫我們自動配置,如果預設...
Spring Boot快速入門
1 package com.cy 23 import 4import56 7public class89 public static void main string args 1213 view code springboot工程啟動時其簡易初始化過程,如圖 在啟動過程中底層做了哪些事情,大致描述...