一、前端服务部署到k8s¶
1、定义Deployment类型的yaml文件
# 创建ns
[root@k8s-master01 ~]# k create ns demo
[root@k8s-master01 ~]# mkdir springcloud
# 定义yaml文件
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-ui-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-ui
namespace: demo
labels:
app: demo-ui
spec:
replicas: 1
selector:
matchLabels:
app: demo-ui
template:
metadata:
labels:
app: demo-ui
spec:
containers:
- name: demo-ui
image: registry.cn-hangzhou.aliyuncs.com/abroad_images/demo-ui:v0.0.1
imagePullPolicy: IfNotPresent
ports:
- name: http-web
containerPort: 80
protocol: TCP
resources:
limits:
cpu: "1"
memory: "1Gi"
requests:
cpu: "100m"
memory: "128Mi"
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
restartPolicy: Always
2、定义Service类型的yaml文件
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-ui-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-ui
namespace: demo
labels:
app: demo-ui
spec:
type: ClusterIP
ports:
- name: http-web
port: 80
targetPort: http-web
protocol: TCP
selector:
app: demo-ui
3、创建Ingress文件
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-ui-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ui
namespace: demo
spec:
ingressClassName: nginx
rules:
- host: demo.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: demo-ui
port:
number: 80
4、创建前端服务
[root@k8s-master01 springcloud]# k apply -f demo-ui-deploy.yaml -f demo-ui-svc.yaml -f demo-ui-ingress.yaml
# 验证pod
[root@k8s-master01 springcloud]# kgp -n demo | grep ui
demo-ui-5bddffc4f6-v2877 1/1 Running 0 25s
# 验证ingress
[root@k8s-master01 springcloud]# kg ingress -n demo
NAME CLASS HOSTS ADDRESS PORTS AGE
demo-receive nginx demo.test.com 10.0.0.22 80 105m
demo-ui nginx demo.test.com 80 40s
# 查看服务
[root@k8s-master01 springcloud]# kg svc -n demo | grep demo-ui
demo-ui ClusterIP 10.111.107.108 <none> 80/TCP 61s
5、浏览器上测试访问
在windows主机上添加hosts解析(C:\Windows\System32\drivers\etc\hosts)
10.0.0.22 demo.test.com
在浏览器上输入demo.test.com测试访问

打开F12上查看请求头信息,

其中访问流量走向为:
- 1)用户访问demo.test.com/,调用demo.test.com/receiveapi/api/generatePassword接口通过路由到网关服务
- 2)demo-receive通过demo-eureka查询服务列表,demo-eureka返回demo-handler地址给demo-receive
- 3)demo-receive转发请求给demo-handler
- 4)demo-handler返回随机密码给demo-receive
- 5)demo-receive最终返回数据给浏览器