Kubernetes 使用带有TCP协议的出口网关执行TLS发起

Kubernetes 使用带有TCP协议的出口网关执行TLS发起,kubernetes,ldap,tls1.2,istio,Kubernetes,Ldap,Tls1.2,Istio,我的用例如下:我希望在172.28.0.3:389中拦截对LDAP的调用,并使用TLS转发到172.28.0.3:636 我遵循了的步骤,它工作得很好。现在我正在尝试使用网关,不幸的是,我在设置端口时遇到了问题。我基本上复制并粘贴了HTTP和HTTPS到TCP以及端口80和443到389和636的设置,并修改了协议: apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: na

我的用例如下:我希望在172.28.0.3:389中拦截对LDAP的调用,并使用TLS转发到172.28.0.3:636

我遵循了的步骤,它工作得很好。现在我正在尝试使用网关,不幸的是,我在设置端口时遇到了问题。我基本上复制并粘贴了HTTP和HTTPS到TCP以及端口80和443到389和636的设置,并修改了协议:

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: cnn
    spec:
      hosts:
      - ldap.host
      addresses:
      - 172.28.0.3
      ports:
      - number: 389
        name: tcp
        protocol: TCP
      - number: 636
        name: tcp-secure
        protocol: TCP
      resolution: STATIC
      endpoints:
       - address: 172.28.0.3

------ 


apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      number: 389 # I am not sure about this
      name: tpc-port-for-tls-origination
      protocol: tcp
    hosts:
    - ldap.host
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egressgateway-for-cnn
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: cnn


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: direct-cnn-through-egress-gateway
spec:
  hosts:
  - ldap.host
  gateways:
  - istio-egressgateway
  - mesh
  tcp: # I AM NOT SURE ABOUT THIS PART
  - match:
    - gateways:
      - mesh
      port: 389
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: cnn
        port:
          number: 389
      weight: 100
  - match:
    - gateways:
      - istio-egressgateway
      port: 389
    route:
    - destination:
        host: ldap.host
        port:
          number: 636
      weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: originate-tls-for-edition-cnn-com
spec:
  host: ldap.host
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
    portLevelSettings:
    - port:
        number: 636
      tls:
        mode: SIMPLE # initiates HTTPS for connections to edition.cnn.com

我觉得问题出在
VirtualService
上,但是我尝试了很多方法,但都没有成功,如果有任何提示可能会出现问题,我将不胜感激。

查看本文和前一篇文章:看起来您对支持LDAP集成的外部提供商感兴趣。例如,您可以使用

本文档显示了一个外部身份验证,它可以是。请注意,文件可能已过时(2018年2月)


您可以在这里找到:

据我所知,LDAP不在中工作。 这里的解决办法是要么 您可以将两者都集成到istio中,但这只是为了进行身份验证,它不会像LDAP本身那样工作,至少据我所知


您还可以使用JSON Web令牌(JWT)验证进行可扩展身份验证。Istio负责验证传入用户请求中的JWT令牌。因此,如果您实现了Istio JWT身份验证功能,您的应用程序代码就不需要担心JWT令牌验证。我会为你做的。不是JWT令牌生成。Istio不会为您生成代币。您必须拥有生成令牌的身份验证微服务。
线程是关于如何使用JWT对最终用户进行身份验证的。

您在日志中看到了什么?在调试这类东西时,我通常会检查发出请求的侧车的访问日志和出口网关中的访问日志:这会让您了解哪个组件会给您带来问题。不幸的是,我还不能帮助解决这个具体问题,我在设置出口网关方面也很新:)@Mark谢谢你的回答,在我之前的问题()中,我必须在吊舱内安装证书,但这似乎是错误的,您知道有没有一种方法可以使用caCertificates,而不用将它们部署在应用程序pod中?谢谢您的回复,但在我的情况下,我已经配置了Key斗篷,我已经使用Key斗篷配置了LDAP,我只想将LDAP的自定义证书从Key斗篷pod移动到istio。我想我可以通过出口网关实现这一点。看看TLS起源的出口网关。我还附上一封感谢信:),这正是我所做的,也是我为什么提出这个问题的原因。我已经读了很多东西,但我仍然不知道该在哪里提交证书文件,POD?是什么?代理,我以为是POD,但我错了如果我很了解你的问题,证书应该在目录中:
samples/certs/
。查看更多信息。有一个指南,介绍如何插入现有证书。