目录
场景一:将http地址:httpbin.org:80 解析到192.168.1.1:8080
场景二:将TCP地址:httpbin.org:8080 解析到192.168.1.1:8080
场景二:将http地址:httpbin.org:80 解析到192.168.1.1:8080、192.168.1.2:8080、192.168.1.3:8080
我们添加服务条目时,选择合适的解析模式对管控流量十分重要
ServiceEntry.Resolution指定的解析模式不会影响应用程序解析与服务关联的 IP 地址的方式。应用程序可能仍然需要使用 DNS 将服务解析为 IP,以便捕获代理的出站流量。或者,对于 HTTP 服务,应用程序可以直接与代理通信(例如,通过设置 HTTP_PROXY)来与这些服务通信。
| 解析方式 | 描述 |
|---|---|
NONE | 访问地址已被解析为IP。此类连接通常使用 IP 表 REDIRECT/eBPF 等机制通过代理进行路由。执行任何与路由相关的转换后,代理会将连接转发到该连接所绑定的 IP 地址。 |
STATIC | 在访问域名中指定静态 IP 地址作为与服务通信。 |
DNS | 尝试通过查询环境 DNS 来解析 IP 地址。如果未指定访问地址,并且未使用通配符,则代理将解析hosts字段中指定的 DNS 地址。如果指定了访问地址,则将解析地址中指定的 DNS 地址以确定目标 IP 地址。注意:DNS 解析不能与 Unix 域套接字端点一起使用。 |
DNS_ROUND_ROBIN | 尝试通过异步查询环境 DNS 来解析 IP 地址。与 |
- apiVersion: networking.istio.io/v1beta1
- kind: ServiceEntry
- metadata:
- name: external-httpbin-tcp
- namespace: default
- spec:
- endpoints:
- - address: 192.168.1.1
- ports:
- http: 8080
- hosts:
- - httpbin.org
- location: MESH_EXTERNAL
- ports:
- - name: http
- number: 80
- protocol: HTTP
- resolution: STATIC
- apiVersion: networking.istio.io/v1beta1
- kind: ServiceEntry
- metadata:
- name: external-httpbin-tcp
- namespace: default
- spec:
- endpoints:
- - address: 192.168.1.1
- ports:
- http: 8080
- hosts:
- - httpbin.org
- addresses:
- - 44.194.145.111/32 #httpbin.org的地址
- - 44.194.145.111/32
- location: MESH_EXTERNAL
- ports:
- - name: tcp
- number: 8080
- protocol: TCP
- resolution: STATIC
DNS模式- apiVersion: networking.istio.io/v1beta1
- kind: ServiceEntry
- metadata:
- generation: 1
- name: httpbin-svc-http
- namespace: default
- spec:
- hosts:
- - httpbin.org
- location: MESH_EXTERNAL
- ports:
- - name: http
- number: 80
- protocol: http
- resolution: DNS
- apiVersion: networking.istio.io/v1alpha3
- kind: ServiceEntry
- metadata:
- name: external-svc-dns
- spec:
- hosts:
- - httpbin.org
- location: MESH_EXTERNAL
- ports:
- - number: 80
- name: http
- protocol: HTTP
- resolution: DNS
- endpoints:
- - address: 192.168.1.1
- ports:
- http: 8080
- - address: 192.168.1.2
- ports:
- http: 8080
- - address: 192.168.1.3
- ports:
- http: 8080
NONE模式场景:网格内服务访问外部服务192.168.1.1:80- apiVersion: networking.istio.io/v1beta1
- kind: ServiceEntry
- metadata:
- name:ip-svc-http
- namespace: default
- spec:
- addresses:
- - 192.168.1.1/32
- hosts:
- - 192.168.1.1
- location: MESH_EXTERNAL
- ports:
- - name: http
- number: 80
- resolution: NONE
该字段必填
与 ServiceEntry 关联的访问地址。可以是带有通配符前缀的 DNS 名称。
注 1:当解析设置为 DNS 类型并且未指定端点时,主机字段将用作将流量路由到的端点的 DNS 名称。
该字段非必需
与服务关联的虚拟 IP 地址。可能是 CIDR 前缀。在 HTTP流量中,该字段被忽略。如果指定了一个或多个 IP 地址,如果目标 IP 与地址字段中指定的 IP/CIDR 匹配,则传入流量将被识别为属于此服务。
如果Addresses字段为空,则将仅根据目标端口来识别流量。在这种情况下,网格中的任何其他服务都不得共享访问服务的端口。换句话说,sidecar将充当一个简单的TCP代理,将指定端口上的传入流量转发到指定的目标端点IP/主机。‘
此字段不支持Unix域套接字地址。
与服务关联的网络地址。可以是域名也可以是IP
控制服务条目的可见性
如果未指定命名空间,则默认情况下将服务条目推到所有命名空间。
如果设置为 ”.” ,声明服务条目只能在同一命名空间的生效。类似地,值“*”定义为在所有命名空间的生效。