SpringBoot應用快速部署到K8S的詳細教程

2022-09-27 07:39:08 字數 2444 閱讀 8091

歡迎訪問我的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工程啟動時其簡易初始化過程,如圖 在啟動過程中底層做了哪些事情,大致描述...