istio系列:第四章-Ingress网关配置
接下来让我们看一下它的具体配置结构
type Gateway struct { Servers []*Server Selector map[string]string }
Selector
标签选择器,这个我们并不陌生提供了多种标签过滤组件。
这里的作用是对POD进行过滤
Servers
提供了向外开放的端口以及传输协议、绑定hosts(这个将具体讲解)。
type Server struct { //暴露的端口、使用的协议 Port *Port Bind string //设定请求的hosts,并且与virtualservice绑定,FQDN语法,作用过滤virtualservice中的hosts Hosts []string // tls设定 Tls *ServerTLSSettings // 流量应该发送到的环回 IP 端点或 Unix 域套接字 DefaultEndpoint string // 服务名称 Name string }
接下来让我们重点讲解一下hosts机制
设定gatway公开的域名,通常用于http服务,但是也可以使用与TCP服务。
在istio中也有命名空间的概念,gatway在定义域名(主机)时可以指定作用于的命名空间,这样virtualserivce在使用的过程中就需要进行命名空间的判断。
gatway通过 namespace/ + 域名来设定命名空间,对于hosts来说可以使用FQDN格式,所以我们在日常使用过程时应该尽量使用FQDN格式进行配置。
让我们举个例子
hosts设置了prod/*.example.com,那么VirtualService在使用的过程中指定hosts时可以指定dev.example.com,prod.example.com这些的前提是VirtualService在prod命名空间下或者设置了exportTo。
当hosts设置为*或者.时 代表任何或当前命名空间,比如*/foo.example.com代表所有命名空间下的virtualService都可以使用该gatway
如果我们不设置命名空间的话,比如example.com,那么与.的效果一致
这里其实我们讲解的是ingress gatway(外部访问内部的过程)
那么内部向外部访问的过程又是怎么样的那?为什么内外访问需要两个工具,egress gatway又是什么那?这个让我们在下一章 service-entry 中进行讲解。