最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot應(yīng)用快速部署到K8S的詳細(xì)教程

 更新時(shí)間:2020年12月16日 08:41:02   作者:zq2599  
這篇文章主要介紹了SpringBoot應(yīng)用快速部署到K8S的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

歡迎訪(fǎng)問(wèn)我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:

所有原創(chuàng)文章分類(lèi)匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

背景

對(duì)于生產(chǎn)環(huán)境,我們一般會(huì)用CI&&CD工具完成整個(gè)構(gòu)建和部署,因此本文不適合生產(chǎn)環(huán)境;對(duì)于學(xué)習(xí)和開(kāi)發(fā)環(huán)境,我們頻繁修改代碼,又想快速見(jiàn)到效果,本文就是針對(duì)這種場(chǎng)景的;

內(nèi)容簡(jiǎn)介

  1. 如果您正在開(kāi)發(fā)SpringBoot應(yīng)用,并且應(yīng)用部署在K8S環(huán)境,可以參考本文將應(yīng)用快速部署到K8S環(huán)境;
  2. 文中SpringBoot的版本是2.3.0.RELEASE,從該版本起,SpringBoot官方推薦了一種新的docker鏡像構(gòu)建方案,如果您是之前的版本,請(qǐng)自行修改文中構(gòu)建鏡像的部分;

環(huán)境信息

本次實(shí)戰(zhàn)有兩個(gè)環(huán)境:開(kāi)發(fā)和運(yùn)行環(huán)境,其中開(kāi)發(fā)環(huán)境信息如下:

  • 操作系統(tǒng):Ubuntu 20.04 LTS 桌面版(同樣驗(yàn)證過(guò)的還有:MacBook pro 13寸,macOS Catalina 10.15.4)
  • CPU :2.30GHz × 4,內(nèi)存:32G,硬盤(pán):1T NVMe
  • JDK:1.8.0_231
  • MAVEN:3.6.3
  • SpringBoot:2.3.0.RELEASE
  • Docker:19.03.10
  • 開(kāi)發(fā)工具:IDEA 2020.1.1 (Ultimate Edition)

運(yùn)行環(huán)境信息如下:

  • 操作系統(tǒng):CentOS Linux release 7.8.2003
  • Kubernetes:1.15

另外,請(qǐng)?jiān)陂_(kāi)發(fā)環(huán)境安裝sshpass;

SpringBoot工程源碼

本次實(shí)戰(zhàn)用到了一個(gè)普通的SpringBoot工程,源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos): 名稱(chēng) 鏈接 備注項(xiàng)目主頁(yè)https://github.com/zq2599/blog_demos該項(xiàng)目在GitHub上的主頁(yè)git倉(cāng)庫(kù)地址(https)https://github.com/zq2599/blog_demos.git該項(xiàng)目源碼的倉(cāng)庫(kù)地址,https協(xié)議git倉(cāng)庫(kù)地址(ssh)git@github.com:zq2599/blog_demos.git該項(xiàng)目源碼的倉(cāng)庫(kù)地址,ssh協(xié)議

這個(gè)git項(xiàng)目中有多個(gè)文件夾,本章的應(yīng)用在probedemo文件夾下,如下圖紅框所示:

必要的內(nèi)容

整個(gè)工程是普通SpringBoot工程,除了常見(jiàn)的pom.xml和源碼,還多了以下三個(gè)文件:

  • Dockerfile文件用來(lái)構(gòu)建docker鏡像,如果您的SpringBoot版本為2.3.0.RELEASE或者更高,建議使用SpringBoot官方推薦的鏡像構(gòu)建方式,此Dockerfile可以用來(lái)參考;
  • 和probedemo.yaml文件和您的具體項(xiàng)目有關(guān),請(qǐng)自行修改,確??梢杂脕?lái)部署deployment和service;
  • auto_deploy.sh是可以快速部署的關(guān)鍵,接下來(lái)詳細(xì)說(shuō)明;

auto_deploy.sh詳述

auto_deploy.sh的作用如下:

  • 調(diào)用maven命令編輯構(gòu)建工程;
  • 將構(gòu)建好的jar文件制作成docker鏡像;
  • 將docker鏡像導(dǎo)出為tar文件;
  • 將tar文件上傳到K8S服務(wù)器;
  • 將probedemo.yaml文件發(fā)送到K8S服務(wù)器;
  • 通過(guò)sshpass遠(yuǎn)程執(zhí)行命令,將docker鏡像導(dǎo)入K8S服務(wù)器的本地docker倉(cāng)庫(kù);
  • 通過(guò)sshpass遠(yuǎn)程執(zhí)行命令,部署deployment和service;
  • auto_deploy.sh的完整內(nèi)容如下:
#!/bin/bash

# 判斷是否安裝了sshpass
if ! [ -x "$(command -v sshpass)" ]; then
 echo '請(qǐng)安裝sshpass后再使用此腳本!'
 exit 1
fi

# 鏡像名
IMAGE_NAME='bolingcavalry/probedemo'

# TAG名
TAG_NAME='0.0.1'

# 配置了deployment和service的yaml文件名
DEPLOY_SERVICE_YAML='probedemo.yaml'

# K8S環(huán)境的IP地址
K8S_IP_ADDRESS='192.168.50.135'

# K8S環(huán)境的SSH賬號(hào)
K8S_SSH_ACCOUNT='root'

# 8S環(huán)境的SSH密碼
K8S_SSH_PSWD='888888'

# K8S上存放tar和yaml文件的位置
K8S_FILE_PATH='~/deploy_temp'

# 當(dāng)前名目錄
CURRENT_DIR=`pwd`

echo '開(kāi)始自動(dòng)構(gòu)建和部署,當(dāng)前目錄是:'${CURRENT_DIR}

# 執(zhí)行maven命令構(gòu)建項(xiàng)目
mvn clean package -U -DskipTests

echo "構(gòu)建鏡像文件:"${IMAGE_NAME}/${TAG_NAME}
docker build -t ${IMAGE_NAME}/${TAG_NAME} .

echo "將鏡像導(dǎo)出為tar文件:"${IMAGE_NAME}/${TAG_NAME}
docker save ${IMAGE_NAME}/${TAG_NAME} > ${CURRENT_DIR}/image.tar

echo "在K8S服務(wù)器創(chuàng)建存放文件的目錄:"${K8S_FILE_PATH}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "mkdir -p ${K8S_FILE_PATH}"

echo "將yaml文件發(fā)送到K8S服務(wù)器:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/${DEPLOY_SERVICE_YAML} ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/

echo "將鏡像tar文件發(fā)送到K8S服務(wù)器:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/image.tar ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/

echo "如果K8S環(huán)境之前已經(jīng)部署過(guò),就先清理:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl delete -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"

echo "等待10秒"
sleep 10

echo "清理之前加載到本地倉(cāng)庫(kù)的鏡像:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker rmi ${IMAGE_NAME}/${TAG_NAME}"

echo "從tar文件加載鏡像:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker load < ${K8S_FILE_PATH}/image.tar"

echo "部署:"${IMAGE_NAME}/${TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl apply -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"

echo "刪除tar文件:"${CURRENT_DIR}/image.tar
rm -rf ${CURRENT_DIR}/image.tar

echo "刪鏡像:"${IMAGE_NAME}/${TAG_NAME}
docker rmi ${IMAGE_NAME}/${TAG_NAME}

實(shí)驗(yàn)

  • 請(qǐng)按照自己的實(shí)際情況,修改auto_deploy.sh中變量的值,例如K8S環(huán)境地址、賬號(hào)密碼等;
  • 開(kāi)發(fā)階段,修改java代碼完成;
  • 執(zhí)行腳本auto_deploy.sh;
  • 控制臺(tái)提示如下:

部署已經(jīng)完成,可以驗(yàn)證功能了;

注意事項(xiàng)

本次實(shí)戰(zhàn)更新鏡像的方法是本地導(dǎo)出為tar,再傳到K8S環(huán)境去導(dǎo)入,當(dāng)K8S環(huán)境有多臺(tái)機(jī)器時(shí)就不適合這樣作了,建議使用私有鏡像倉(cāng)庫(kù),將鏡像push到倉(cāng)庫(kù),然后K8S中鏡像倉(cāng)庫(kù)pull鏡像;

至此,SpringBoot應(yīng)用快速部署到K8S的實(shí)戰(zhàn)就完成了,這是我開(kāi)發(fā)過(guò)程中常用的遠(yuǎn)程部署手段,希望能給您提供一些參考;

你不孤單,欣宸原創(chuàng)一路相伴

Java系列

Spring系列

Docker系列

kubernetes系列

數(shù)據(jù)庫(kù)+中間件系列

DevOps系列

到此這篇關(guān)于SpringBoot應(yīng)用快速部署到K8S的詳細(xì)教程的文章就介紹到這了,更多相關(guān)SpringBoot部署到K8S內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案

    vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案

    使用?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證非常簡(jiǎn)單,實(shí)現(xiàn)在線(xiàn)實(shí)時(shí)編輯的記賬憑證、自動(dòng)合計(jì)金額等,這篇文章主要介紹了vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案,需要的朋友可以參考下
    2024-12-12
  • java8 Stream API之reduce使用說(shuō)明

    java8 Stream API之reduce使用說(shuō)明

    這篇文章主要介紹了java8 Stream API之reduce使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作步驟,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Java實(shí)現(xiàn)一個(gè)簡(jiǎn)易聊天室流程

    Java實(shí)現(xiàn)一個(gè)簡(jiǎn)易聊天室流程

    這篇文章主要介紹了我的java課程設(shè)計(jì)一個(gè)多人聊天室(socket+多線(xiàn)程)本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • Springcloud中的@RefreshScope的實(shí)現(xiàn)

    Springcloud中的@RefreshScope的實(shí)現(xiàn)

    @RefreshScope注解是Spring Cloud中的一個(gè)注解,它用來(lái)實(shí)現(xiàn)Bean中屬性的動(dòng)態(tài)刷新,本文就來(lái)介紹一下@RefreshScope注解的使用,感興趣的可以了解一下
    2024-06-06
  • SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄

    SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄

    微信的登錄功能是用戶(hù)注冊(cè)和使用微信的必經(jīng)之路之一,而微信授權(quán)登錄更是方便了用戶(hù)的登錄操作,本文主要介紹了SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄,感興趣的可以了解一下
    2023-09-09
  • Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    其實(shí)yml和properties文件是一樣的原理,且一個(gè)項(xiàng)目上要么yml或者properties,二選一的存在。這篇文章給大家介紹了Spring Boot 中application.yml與bootstrap.yml的區(qū)別,感興趣的朋友一起看看吧
    2018-04-04
  • idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式

    idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式

    這篇文章主要介紹了idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 一篇文章帶你從java字節(jié)碼層理解i++和++i

    一篇文章帶你從java字節(jié)碼層理解i++和++i

    這篇文章帶你從java字節(jié)碼層理解i++和++i,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Java 分割字符串詳解及實(shí)例代碼

    Java 分割字符串詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 分割字符串詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

玛多县| 哈尔滨市| 南郑县| 兰考县| 阳江市| 博湖县| 长海县| 田东县| 娄烦县| 大石桥市| 漠河县| 上高县| 封开县| 广东省| 吉隆县| 阳东县| 古丈县| 绥芬河市| 磐安县| 同江市| 古浪县| 张家界市| 漳州市| 静乐县| 田林县| 晋中市| 韶关市| 阿克| 濉溪县| 壤塘县| 扎兰屯市| 乌苏市| 安义县| 石门县| 惠水县| 丹凤县| 曲麻莱县| 多伦县| 乌拉特后旗| 七台河市| 霍邱县|