上一篇我们已经完成了代码上传gitlab-》rancher流水线生成,打包镜像,自动部署的整个流程。
这一篇来完成一下服务发现和负载均衡。
ingress部署文件:myfirstcicd_ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hellok8s
namespace: default
spec:
rules:
- host: www.hellok8s.cn #自己随便起一个域名
http:
paths:
- path: / #路由规则。/代表这个host:www.hellok8s.cn 的所有请求都发送到serverName:hellok8s上
backend:
serviceName: hellok8s #服务名,就是在我们部署文件里面定义的服务名称
servicePort: 80
这里host自己可以随便定义。这个个ingress的意思是 凡是从www.hellok8s.cn 发过来的所有请求,都转发到serverName:hellok8s上。这个serverName:hellok8s 还记得吗?就是上一篇中:
deployment.yaml文件中service的名称
部署ingress
关系图:
我本机hosts文件(C:\Windows\System32\drivers\etc\hosts)配置的:192.168.21.233 www.hellok8s.cn,也可以是其他两台。因为三台worker都是有ingress的。
修改部署文件 deployment.yaml中的副本数为3个然后重新流水线发布一次
或者不用改直接在rancher控制台操作:
验证负载均衡:(可以访问这个局域网的任何主机,hosts文件设置好域名:192.168.21.233 www.hellok8s.cn或者192.168.21.234 www.hellok8s.cn或者192.168.21.235 www.hellok8s.cn)都行
调用测试接口:http://www.hellok8s.cn/Health/GetLocalIP 这个接口返回对应上图pod副本的集群内ip,F5频繁刷新浏览器你会发现,ip在变化,那么我们的请求也就在三个副本中进行了负载均衡