在我的设置中,我们将所有离开集群的呼叫发送到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中的错误向客户端打个招呼
SSL握手已读取0个字节并写入212个字节
新功能,(无),密码为(无) 不支持安全重新协商 压缩:无 扩展:无 没有协商ALPN SSL会话: 通讯协定:TLSv1.2 密码:0000 会话ID: 会话ID-ctx: 主密钥: PSK身份:无 PSK身份提示:无 SRP用户名:无 开始时间:1553126020 超时:7200(秒) 验证返回码:0(确定)
我尝试创建各种服务条目和虚拟服务,但无济于事:
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
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
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
希望通过无头的代理服务从微服务到ILB的通信正常工作。
“出口网关”之类的变通方法也是可行的选择,但为此,在正确配置以使其正常工作时也面临着问题。
答案 0 :(得分:1)
在Istio中,要访问服务,您需要配置Kubernetes Service或Istio ServiceEntry。您可能需要禁用双向TLS。请参见此初步示例https://deploy-preview-3899--preliminary-istio.netlify.com/docs/examples/advanced-gateways/egress-kubernetes-services/。