架构示意图
envoy
需要使用到CONTOUR
,所以我们先部署CONTOUR,官网
1)使用快速部署
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
2)创建一个简单的demo范例
我这里使用的httpproxy高级路由管理,比较强大,可以自定义很多的规则。
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: httpproxy-demo
namespace: default
spec:
virtualhost:
fqdn: www.ik8s.io #定义虚拟主机名,一般设置你的域名
tls: #设置https访问协议
secretName: ik8s-tls #这个secret需要你提前创建好的,tls这一块如果不需要可以注释掉。
minimumProtocolVersion: "tlsv1.1" #这是兼容的tls最低版本
routes:
- conditions:
- prefix: /
services:
- name: demoapp-deploy
port: 80
permitInsecure: true #是否重定向到https协议,你也可以理解为是否强制https,true是不强制https,就是你访问http也可以https也可以,如果是false到话你访问http到话会强制跳转到https
#注意如果直接采用访问IP地址的话可能会访问不同,建议通过域名访问。
3)测试
#部署
kubectl apply -f httpproxy-demo.yaml
#查看envoy映射的端口,下面会用到
kubectl get svc -n projectcontour
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
contour ClusterIP 10.107.197.123 <none> 8001/TCP 103m
envoy LoadBalancer 10.102.101.40 <pending> 80:30651/TCP,443:32481/TCP 103m
#访问
[root@master1 chapter13]# curl http://www.ik8s.io:30651
iKubernetes demoapp v1.0 !! ClientIP: 10.244.135.57, ServerName: deployment-demo-fb544c5d8-s8wh8, ServerIP: 10.244.135.53!
[root@master1 chapter13]# curl -k https://www.ik8s.io:32481
iKubernetes demoapp v1.0 !! ClientIP: 10.244.104.15, ServerName: deployment-demo-fb544c5d8-2242p, ServerIP: 10.244.166.184!
注意⚠️:以上所使用的demo采用的是马哥的教学demo,如有需要我已经放在我的公众号上了。可前往公众号「自在拉基」回复envoy获取demo pod。
4)问题
上面所使用的域名需要你们自行配置dns或者修改测试机上的host文件,如果通过ip访问的话会有可能访问不了,域名是没问题的。