如何使用Istio创建内部网关?

时间:2020-01-05 21:35:29

标签: kubernetes istio

当前,我们成功设置了Istio,以创建几个入口网关,例如api.example.com和app.example.com,这些网关将流量路由到具有目标规则等的各种服务。除此以外,我们还将我喜欢将Istio的功能用于仅供内部使用的API,但我们不确定如何设置类似的设置。是否可以使用Istio的网关和VirtualServices CRD在不退出群集的情况下路由流量?如果是这样,我们将如何进行设置?

1 个答案:

答案 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服务注册表的一部分,它们只是虚拟目的地。 这使您可以为网格内没有可路由条目的虚拟主机的流量建模