熟悉Spring Cloud微服務(wù)項(xiàng)目
- 源代碼編譯構(gòu)建
-
構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)
- 制作鏡像
- 將鏡像推送到harbor倉(cāng)庫(kù)
- K8s服務(wù)編排
- 部署基礎(chǔ)環(huán)境
- 部署微服務(wù)程序
- 部署微服務(wù)前端
-
微服務(wù)對(duì)外發(fā)布
- NorePort方式暴露
- Ingress方式暴露
k8s容器部署流程
具體步驟:
- 第一步:熟悉Spring Cloud微服務(wù)項(xiàng)目
- 第二步:源代碼編譯構(gòu)建
- 第三步:構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)
- 第四步:K8s服務(wù)編排
- 第五步:部署服務(wù)所需的基礎(chǔ)環(huán)境
- 第六步:部署微服務(wù)程序
- 第七步:部署微服務(wù)前端
- 第八步:微服務(wù)對(duì)外發(fā)布
熟悉Spring Cloud微服務(wù)項(xiàng)目
微服務(wù)架構(gòu)圖
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
- 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
- 視頻教程:https://doc.iocoder.cn/video/
源代碼編譯構(gòu)建
拉取倉(cāng)庫(kù)代碼
gitclonehttp://192.168.0.126/saas-wms/linkinsense-wms-public.git
編譯代碼
mvncleanpackage-Dmaven.test.skip=true-Pdev
這兒構(gòu)建時(shí)間久是因?yàn)榈谝淮螛?gòu)建,需要下載maven依賴,之后構(gòu)建就會(huì)很快了。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
構(gòu)建項(xiàng)目鏡像并推送到鏡像倉(cāng)庫(kù)
- 基礎(chǔ)鏡像:centos,ubuntu
- 中間件鏡像:jdk,nginx
- 項(xiàng)目鏡像:基礎(chǔ)鏡像+中間件鏡像+項(xiàng)目代碼
制作鏡像
編寫gateway服務(wù)的DockerFile,制作鏡像
viDockerfile
FROMopenjdk:8-jre
RUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
RUNecho'Asia/Shanghai'>/etc/timezone
WORKDIR/wms-center/wms-gateway
ADD./target/wms-gateway-1.0.0.jar./
EXPOSE8901
CMDjava-jarwms-gateway-1.0.0.jar
編寫完成的DockerFile放置的文件位置
通過DockerFile構(gòu)建鏡像
dockerbuild-twms-gateway:v1-fwms-gateway/Dockerfile./wms-gateway/
查看構(gòu)建好的鏡像
dockerimages
將鏡像推送到harbor倉(cāng)庫(kù)
之前本地部署的鏡像倉(cāng)庫(kù)Harbor: http://192.168.0.127:8084/
,如果沒有可拿docker-hub注冊(cè)一個(gè)賬號(hào)。
登錄倉(cāng)庫(kù)
dockerlogin192.168.0.127:8084
推送鏡像到鏡像倉(cāng)庫(kù)需要滿足鏡像倉(cāng)庫(kù)的鏡像名稱,因此需要給構(gòu)建好的鏡像打個(gè)tag。
給構(gòu)建的鏡像打tag
dockertagwms-gateway:v1192.168.0.127:8084/onlee/gateway:v1
推送鏡像倉(cāng)庫(kù)
dockerpush192.168.0.127:8084/onlee/gateway:v1
其他模塊構(gòu)建和推送參考gateway模塊
K8s服務(wù)編排
制作gateway的k8s yaml文件(gateway.yaml)
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:gateway
namespace:wms-dev
spec:
replicas:1
selector:
matchLabels:
project:wms-dev
app:gateway
template:
metadata:
labels:
project:wms-dev
app:gateway
spec:
imagePullSecrets:
-name:registry-harbor
containers:
-name:gateway
image:192.168.0.127:8084/onlee/gateway:v1
imagePullPolicy:Always
ports:
-protocol:TCP
containerPort:8901
env:
-name:JAVA_OPTS
value:"-Xmx1g"
resources:
requests:
cpu:0.5
memory:256Mi
limits:
cpu:1
memory:1Gi
readinessProbe:
tcpSocket:
port:8901
initialDelaySeconds:60
periodSeconds:10
livenessProbe:
tcpSocket:
port:8901
initialDelaySeconds:60
periodSeconds:10
其他模塊編寫k8s yaml文件參考gateway模塊
部署基礎(chǔ)環(huán)境
這一步暫時(shí)省略,后續(xù)補(bǔ)充…
部署微服務(wù)程序
準(zhǔn)備namespace
kubectlcreatenamespacewms-dev
部署服務(wù)
kubectlapply-fgateway.yaml
其他模塊部署服務(wù)參考gateway模塊
部署微服務(wù)前端
編寫DockerFile文件
FROMnginx
COPYdist/usr/share/nginx/html/
EXPOSE80
構(gòu)建鏡像
dockerbuild-twms-web:v1-fDockerfile.
鏡像打tag
dockertagwms-web:v1192.168.0.127:8084/onlee/wms-web:v1
推送到鏡像倉(cāng)庫(kù)
dockerpush192.168.0.127:8084/onlee/wms-web:v1
服務(wù)編排(web.yaml)
apiVersion:apps/v1
kind:Deployment
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
progressDeadlineSeconds:600
replicas:1
selector:
matchLabels:
app:wms-web
strategy:
rollingUpdate:
maxSurge:50%
maxUnavailable:50%
type:RollingUpdate
template:
metadata:
labels:
app:wms-web
spec:
imagePullSecrets:
-name:registry-harbor
containers:
-image:192.168.0.127:8084/onlee/wms-web:v1
imagePullPolicy:Always
name:app
ports:
-containerPort:80
protocol:TCP
resources:
limits:
cpu:300m
memory:600Mi
terminationMessagePath:/dev/termination-log
terminationMessagePolicy:File
dnsPolicy:ClusterFirst
restartPolicy:Always
terminationGracePeriodSeconds:30
部署服務(wù)
kubectlapply-fweb.yaml
微服務(wù)對(duì)外發(fā)布
通過整個(gè)微服務(wù)架構(gòu)可知,只有g(shù)ateway和前端需要暴露服務(wù)。
NorePort方式暴露
gateway對(duì)外暴露
gateway-nortport.yaml
---
apiVersion:v1
kind:Service
metadata:
name:gateway
namespace:wms-dev
spec:
ports:
-port:8901
name:gateway
protocol:TCP
targetPort:8901
nodePort:32074
selector:
project:wms
app:gateway
type:NodePort
前端對(duì)外暴露
web-noreport.yaml
---
apiVersion:v1
kind:Service
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
ports:
-name:http
port:80
protocol:TCP
targetPort:80
nodePort:32248
selector:
app:wms-web
sessionAffinity:None
type:NodePort
Ingress方式暴露
https://blog.csdn.net/qq_40722827/article/details/127929141
gateway對(duì)外暴露
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:gateway
namespace:wms-dev
annotations:
kubernetes.io/ingress.class:"nginx"
nginx.ingress.kubernetes.io/backend-protocol:"HTTP"
spec:
rules:
-host:gateway.wms.com
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:gateway
port:
number:8901
---
apiVersion:v1
kind:Service
metadata:
name:gateway
namespace:wms-dev
spec:
ports:
-port:8901
name:gateway
selector:
project:wms-dev
app:gateway
前端對(duì)外暴露
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:wms-web
namespace:wms-dev
annotations:
kubernetes.io/ingress.class:"nginx"
nginx.ingress.kubernetes.io/backend-protocol:"HTTP"
spec:
rules:
-host:dev.wms.com
http:
paths:
-path:/
pathType:Prefix
backend:
service:
name:wms-web
port:
number:80
---
apiVersion:v1
kind:Service
metadata:
labels:
app:wms-web
name:wms-web
namespace:wms-dev
spec:
ports:
-name:http
protocol:TCP
port:80
targetPort:80
type:ClusterIP
selector:
app:wms-web
sessionAffinity:None
至此,所有微服務(wù)已經(jīng)遷移到Kubernetes容器上了。
把我們上面手動(dòng)做的這些,通過Jenkins等組件搭建成一個(gè)自動(dòng)化部署的過程,就涉及到DevOps相關(guān)的知識(shí)了。接下來就會(huì)編寫這一塊的內(nèi)容。
-
自動(dòng)化
+關(guān)注
關(guān)注
29文章
5562瀏覽量
79239 -
容器
+關(guān)注
關(guān)注
0文章
495瀏覽量
22060 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
137瀏覽量
7337
原文標(biāo)題:SpringCloud 微服務(wù)遷移到 Kubernetes 容器化完整流程
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論