Istio与外部群集通信问题

时间:2019-03-25 23:10:48

标签: istio envoyproxy

在我的设置中,我们将所有离开集群的呼叫发送到GCP中的内部负载均衡器。我们通过创建出口服务并手动将端点添加到该服务来实现。该服务的端点是内部负载平衡器的IP。

[sourabh.w@K9-MAC-035 r19-3] $ k get svc,ep -n egproxy-lle 名称类型集群IP外部IP端口的年龄 服务/ egproxy ClusterIP 10.206.180.135 80 / TCP,443 / TCP 4d

姓名终点年龄 端点/代理10.207.132.8:30443,10.207.132.8:30080 4d [sourabh.w@K9-MAC-035 r19-3] $

对于我设置中的所有微服务,它们必须在启动时运行“ openssl s_Client”命令。这个命令对我来说是失败的。

openssl s_client-服务器名称ae17-api.kohlsecommerce.com -connect ae17-api.kohlsecommerce.com:443 -debug -state

执行此操作时,请确保将ae17-api.kohlsecommerce.com映射到/ etc / hosts中的egproxy服务的IP(10.206.180.135)。

这是我在pod中运行openssl时的操作符:


root @ product-26-655f4f55b6-g2bpq:/#openssl s_client-服务器名ae17-api.kohlsecommerce.com -connect ae17-api.kohlsecommerce.com:443 -state -debug 已连接(00000003) SSL_connect:在SSL初始化之前 写入0x556dc50b2860 [0x556dc50c3a20](212字节=> 212(0xD4)) 0000-16 03 01 00 cf 01 00 00-cb 03 03 43 59 24 26 31 ........... CY $&1 0010-4f 13 80 47 f2 09 25 f7-ec 74 40 57 7c d0 bc c6 O..G ..%.. t @ W | ... 0020-18 9b a7 a3 3c 38 80 d6-f4 99 62 00 00 38 c0 2c .... <8 .... b..8。, 0030-c0 30 00 9f cc a9 cc a8-cc aa c0 2b c0 2f 00 9e .0 ......... + .. 0040-c0 24 c0 28 00 00 c0 23-c0 88 00 67 c0 0a c0 14。$。(。k。#。'。g .... 0050-00 39 c0 09 c0 00 00 33-00 9d 00 9c 00 3d 00 3c .9 ..... 3 ..... =。< 0060-00 35 00 2f 00 ff 01 00-66 6a 00 00 00 20 00 1e .5。/ ..... j ..... 0070-00 00 1b 61 65 31 37 2d-61 70 69 2e 6b 6f 68 6c ... ae17-api。 0080-73 65 63 6f 6d 6d 65 72-63 65 2e 63 6f 6d 00 0b ecommerce.com。 0090-00 04 03 00 01 02 00 8a-00 0a 00 08 00 1d 00 17 ................ 00a0-00 19 00 18 00 00 00 66-00 16 00 00 00 17 00 00 .....#.......... 00b0-00 0d 00 20 00 00 06 01-06 02 06 03 05 01 05 02 ... ............ 00c0-05 03 04 01 04 02 04 03-03 01 03 02 03 03 02 01 ................ 00d0-02 02 02 03 .... SSL_connect:SSLv3 / TLS写客户端问候 从0x556dc50b2860 [0x556dc50ba803]读取(5个字节=> -1(0xFFFFFFFFFFFFFFFF)) SSL_connect:SSLv3 / TLS中的错误向客户端打个招呼

write:errno = 104

没有可用的对等证书

未发送客户端证书CA名称

SSL握手已读取0个字节并写入212个字节

验证:确定

新功能,(无),密码为(无) 不支持安全重新协商 压缩:无 扩展:无 没有协商ALPN SSL会话:     通讯协定:TLSv1.2     密码:0000     会话ID:     会话ID-ctx:     主密钥:     PSK身份:无     PSK身份提示:无     SRP用户名:无     开始时间:1553126020     超时:7200(秒)     验证返回码:0(确定)

扩展主密码:否

我尝试创建各种服务条目和虚拟服务,但无济于事:

  1. 使用负载均衡器IP:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  generation: 1
  name: egproxy-ext
  namespace: r19-3-mui-qa
spec:
  addresses:
  - 10.207.132.8/32
  endpoints:
  - address: 10.207.132.8
  hosts:
  - istio-ilb.lle-mcommerce.com
  location: MESH_INTERNAL
  ports:
  - name: http
    number: 30080
    protocol: HTTP
  - name: https
    number: 30443
    protocol: HTTPS
  resolution: STATIC
  1. 具有egproxy serivce FQDN:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: egproxy-headless-service-fqdn-ext
  namespace: r19-3-mui-qa
spec:
  addresses:
  - 10.206.117.116/32
  endpoints:
  - address: 10.207.132.8
  hosts:
  - egproxy.egproxy-lle.svc.cluster.local
  location: MESH_INTERNAL
  ports:
  - name: http
    number: 30080
    protocol: HTTP
  - name: https
    number: 30443
    protocol: HTTPS
  resolution: STATIC
  1. 负载均衡器的目的地规则:
  apiVersion: networking.istio.io/v1alpha3
  kind: DestinationRule
  metadata:
    name: egress-gateway
    namespace: default
  spec:
    host: istio-ilb.lle-mcommerce.com
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
      portLevelSettings:
      - port:
          number: 30443
        tls:
          mode: SIMPLE
  1. 代理服务的目的地规则

希望通过无头的代理服务从微服务到ILB的通信正常工作。

“出口网关”之类的变通方法也是可行的选择,但为此,在正确配置以使其正常工作时也面临着问题。

1 个答案:

答案 0 :(得分:1)

在Istio中,要访问服务,您需要配置Kubernetes Service或Istio ServiceEntry。您可能需要禁用双向TLS。请参见此初步示例https://deploy-preview-3899--preliminary-istio.netlify.com/docs/examples/advanced-gateways/egress-kubernetes-services/