istio系列:番外二 内网到外网访问配置实例

istio系列:番外二 内网到外网访问配置实例

上一篇番外我们讲解了外网到内网的访问问题,这节让我们掌握一下内网访问外网。

为了方便请求,我们采用gateway的方式先请求内网、内网服务再请求外网服务的流程
istio系列:番外二 内网到外网访问配置实例_第1张图片

1.配置ServiceEntry,注册外部服务

向注册中心注册外部服务,让路由规则等可以像使用内部服务那样使用外部服务

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: baidu
spec:
  hosts:
  - www.baidu.com
  ports:
  - number: 8083
    targetPort: 80
    name: http
    protocol: HTTP
  resolution: DNS
  location: MESH_EXTERNAL

number为向注册中心注册的端口号,targetPort为向www.baidu.com请求的端口号
下面需要注意
1.global.outboundTrafficPolicy.mode默认为ALLOW_ANY,允许envoy出站访问未知服务,就是默认istio内部服务可以访问外网,设置为REGISTRY_ONLY则不能访问
2.ServiceEntry创建一个服务,内部服务可以根据其hosts进行访问,是访问外网的一种方式,这种方式还可以使用istio的流量管理功能
3.官网建议,使用egressgateway网关对外部服务进行访问,egressgateway提供一定的安全策略,比如攻击者可以绕过sidecar代理就可以直接与网络内部应用直接访问,那么我们就可以配置过滤除网关之外的所有响应

配置virtul service路由规则

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - www.baidu.com
  gateways:
  - baidu
  - mesh
  http:
  - route:
    - destination:
        host: www.baidu.com
        port:
          number: 8083

这里我们可以看到number配置为8083,含义是请求www.baidu.com这个服务的8083端口

配置gateway

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: baidu
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "www.baidu.com"

这样就完成了一个外网到内网、内网又访问外网的请求。

你可能感兴趣的:(istio,istio,服务器,linux)