具体步骤:
微服务架构图
拉取仓库代码
git clone http://192.168.0.126/saas-wms/linkinsense-wms-public.git
编译代码
mvn clean package -Dmaven.test.skip=true -Pdev
编写gateway服务的DockerFile,制作镜像
vi Dockerfile
FROM openjdk:8-jreRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezoneWORKDIR /wms-center/wms-gatewayADD ./target/wms-gateway-1.0.0.jar ./EXPOSE 8901CMD java -jar wms-gateway-1.0.0.jar
docker build -t wms-gateway:v1 -f wms-gateway/Dockerfile ./wms-gateway/
docker images
之前本地部署的镜像仓库Harbor: http://192.168.0.127:8084/
,如果没有可拿docker-hub注册一个账号。
登录仓库
docker login 192.168.0.127:8084
docker tag wms-gateway:v1 192.168.0.127:8084/onlee/gateway:v1
docker push 192.168.0.127:8084/onlee/gateway:v1
---
apiVersion: apps/v1
kind: Deployment
metadata:name: gatewaynamespace: wms-dev
spec:replicas: 1selector:matchLabels:project: wms-devapp: gatewaytemplate:metadata:labels:project: wms-devapp: gatewayspec:imagePullSecrets:- name: registry-harborcontainers:- name: gatewayimage: 192.168.0.127:8084/onlee/gateway:v1imagePullPolicy: Alwaysports:- protocol: TCPcontainerPort: 8901env:- name: JAVA_OPTSvalue: "-Xmx1g"resources:requests:cpu: 0.5memory: 256Milimits:cpu: 1memory: 1GireadinessProbe:tcpSocket:port: 8901initialDelaySeconds: 60periodSeconds: 10livenessProbe:tcpSocket:port: 8901initialDelaySeconds: 60periodSeconds: 10
kubectl create namespace wms-dev
kubectl apply -f gateway.yaml
FROM nginxCOPY dist /usr/share/nginx/html/EXPOSE 80
docker build -t wms-web:v1 -f Dockerfile .
docker tag wms-web:v1 192.168.0.127:8084/onlee/wms-web:v1
docker push 192.168.0.127:8084/onlee/wms-web:v1
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: wms-webstrategy:rollingUpdate:maxSurge: 50%maxUnavailable: 50%type: RollingUpdatetemplate:metadata:labels:app: wms-webspec:imagePullSecrets:- name: registry-harborcontainers:- image: 192.168.0.127:8084/onlee/wms-web:v1imagePullPolicy: Alwaysname: appports:- containerPort: 80protocol: TCPresources:limits:cpu: 300mmemory: 600MiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30
kubectl apply -f web.yaml
通过整个微服务架构可知,只有gateway和前端需要暴露服务。
gateway对外暴露
---
apiVersion: v1
kind: Service
metadata:name: gatewaynamespace: wms-dev
spec:ports:- port: 8901name: gatewayprotocol: TCPtargetPort: 8901nodePort: 32074selector:project: wmsapp: gatewaytype: NodePort
前端对外暴露
---
apiVersion: v1
kind: Service
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80nodePort: 32248selector:app: wms-websessionAffinity: Nonetype: NodePort
gateway对外暴露
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: gateway namespace: wms-devannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:rules:- host: gateway.wms.com http:paths:- path: /pathType: Prefixbackend:service: name: gatewayport: number: 8901
---
apiVersion: v1
kind: Service
metadata:name: gatewaynamespace: wms-dev
spec:ports:- port: 8901 name: gatewayselector:project: wms-devapp: gateway
前端对外暴露
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: wms-webnamespace: wms-devannotations:kubernetes.io/ingress.class: "nginx"nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
spec:rules:- host: dev.wms.com http:paths:- path: /pathType: Prefixbackend:service: name: wms-webport: number: 80
---
apiVersion: v1
kind: Service
metadata:labels:app: wms-webname: wms-webnamespace: wms-dev
spec:ports:- name: httpprotocol: TCPport: 80targetPort: 80type: ClusterIPselector:app: wms-websessionAffinity: None
你知道的越多,你不知道的越多。