使用istio通过外部代理定向HTTP流量 配置到外部HTTPS代理的流量

我们正在启用istio的kubernetes集群中运行大量微服务。其中一个微服务会调用集群外部的外部服务,而我需要通过也在集群外部运行的公司代理路由特定的调用。

为了进一步说明,例如,我在容器中设置了HTTP_Proxy并将curl调用设为http://external.com,因为调用是通过代理路由的,因此调用成功,但是我希望istio进行此路由通过代理透明。

例如。从容器中卷曲http://external.com,然后istio应该通过公司代理自动路由http呼叫并返回响应

我已经为external.com和proxy.com创建了服务条目,以使通话成功

weedssjl 回答:使用istio通过外部代理定向HTTP流量 配置到外部HTTPS代理的流量

如果我理解正确,您正在寻找的是出口网关。

这是从Istio documentation配置外部HTTPS代理的教程的一部分:

  

配置到外部HTTPS代理的流量

     
      
  1. 为HTTPS代理定义一个TCP(不是HTTP!)服务条目。尽管应用程序使用HTTP CONNECT方法与HTTPS代理建立连接,但是您必须为TCP流量而不是HTTP配置代理。建立连接后,代理将简单地充当TCP隧道。
  2.   
     

   $ kubectl apply -f - <<EOF
   apiVersion: networking.istio.io/v1alpha3
   kind: ServiceEntry
   metadata:
     name: proxy
   spec:
     hosts:
     - my-company-proxy.com # ignored
     addresses:
     - $PROXY_IP/32
     ports:
     - number: $PROXY_PORT
       name: tcp
       protocol: TCP
     location: MESH_EXTERNAL
   EOF
     
      
  1. 从默认名称空间中的sleep pod发送请求。由于睡眠舱具有侧车,因此Istio可以控制其交通。
  2.   
     

   $ kubectl exec -it $SOURCE_POD -c sleep -- sh -c "HTTPS_PROXY=$PROXY_IP:$PROXY_PORT curl https://en.wikipedia.org/wiki/Main_Page" | grep -o "<title>.*</title>"
   <title>Wikipedia,the free encyclopedia</title>
     
      
  1. 检查Istio Sidecar代理的日志以获取您的请求:
  2.   
   $ kubectl logs $SOURCE_POD -c istio-proxy
   [2018-12-07T10:38:02.841Z] "- - -" 0 - 702 87599 92 - "-" "-" "-" "-" "172.30.109.95:3128" outbound|3128||my-company-proxy.com 172.30.230.52:44478 172.30.109.95:3128 172.30.230.52:44476 -
     
      
  1. 检查代理的访问日志以获取您的请求:
  2.   
   $ kubectl exec -it $(kubectl get pod -n external -l app=squid -o jsonpath={.items..metadata.name}) -n external -- tail -f /var/log/squid/access.log
   1544160065.248    228 172.30.109.89 TCP_TUNNEL/200 87633 CONNECT en.wikipedia.org:443 - HIER_DIRECT/91.198.174.192 -

查看整个教程,因为它涵盖了设置要求,并且具有模拟外部代理的步骤,因此您可以比较它是否按预期工作。

istio.io/docs/tasks/traffic-management/egress/http-proxy/

本文链接:https://www.f2er.com/3151894.html

大家都在问