cfanbo / cfanbo.github.io

1 stars 0 forks source link

服务网格Istio之服务入口 ServiceEntry | 学习笔记 #232

Open cfanbo opened 11 months ago

cfanbo commented 11 months ago

https://blog.haohtml.com/archives/30931/

使用服务入口(Service Entry) 来添加一个服务入口到 Istio 内部维护的服务注册中心。添加了服务入口后,Envoy 代理可以向服务发送流量,就好像它是网格内部的服务一样,可参考 https://istio.io/latest/zh/docs/concepts/traffic-management/#service-entries。 简单的理解就是允许内网向外网服务发送流量请求,但你可能会说正常情况下在pod里也是可以访问外网的,这两者有什么区别呢? 确实默认情况下,Istio 配置 Envoy 代理可以将请求传递给外部服务。但是无法使用 Istio 的特性来控制没有在网格中注册的目标流量。这也正是 ServiceEntry 真正发挥的作用,通过配置服务入口允许您管理运行在网格外的服务的流量。 此外,可以配置虚拟服务和目标规则,以更精细的方式控制到服务条目的流量,就像为网格中的其他任何服务配置流量一样。 为了更好的理解这一块的内容,我们先看一下普通POD发送请求的流程图普通 Pod 请求 创建 ServiceEntry 资源 举例来说: svc-entry.yaml apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: svc-entry spec: hosts: - "www.baidu.com" ports: - number: 80 name: http protocol: HTTP - number: 443 name: https protocol: HTTPS location: MESH_EXTERNAL resolution: DNS 该 ServiceEntry 资源定义了一个外部网站 www.baidu.com 服务,并将它纳入到 Istio 内部维护的服务注册表(服务网格)中。 创建资源 $ kubectl apply -f svc-entry.yaml serviceentry.networking.istio.io/svc-entry created 现在我们已经创建了一个 ServiceEntry, 默认在 default 命名空间。