当前,我们成功设置了Istio,以创建几个入口网关,例如api.example.com和app.example.com,这些网关将流量路由到具有目标规则等的各种服务。除此以外,我们还将我喜欢将Istio的功能用于仅供内部使用的API,但我们不确定如何设置类似的设置。是否可以使用Istio的网关和VirtualServices CRD在不退出群集的情况下路由流量?如果是这样,我们将如何进行设置?
答案 0 :(得分:2)
Istio网关用于进入群集的流量或离开群集的流量。 对于群集内部的流量,您不应使用入口/出口网关。如果您已在集群中配置Istio来创建服务网格,那么您将获得所有这些benefits,因为Istio将为集群内的所有服务注入侧车envoy。正是这种边车提供了网状网的所有优势。当您使用入口或出口网关时,您实际上是在将侧面车部署为入口或出口网关。您可以使用虚拟服务,目标规则,服务条目,边车等而无需网关,因为届时,您将使用部署在应用程序Pod旁边的Sidecar。
以下是虚拟服务的示例:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v3
虚拟服务主机名可以是IP地址,DNS名称,也可以是短名称(例如Kubernetes服务短名称),具体取决于平台,该名称隐式或显式地解析为完全限定的域名( FQDN)。您还可以使用通配符(“ *”)前缀,从而为所有匹配的服务创建一套路由规则。虚拟服务主机实际上不一定是Istio服务注册表的一部分,它们只是虚拟目的地。 这使您可以为网格内没有可路由条目的虚拟主机的流量建模。