Istio中Envoy代理与同一Pod中的https容器通信

82次阅读
没有评论

问题描述

在使用Istio时遇到了一个问题。他有一个在端口9999上运行https服务的容器。服务的配置如下:

apiVersion: v1
kind: Service
metadata:
  labels:
    role: pingfederate2
  name: pingfederate2
spec:
  ports:
    - name: https
      port: 443
      targetPort: 9999
  selector:
    role: pingfederate2

当通过网关访问时,生成的Envoy日志如下:

[2020-03-19T08:42:37.356Z] "- - -" 0 - "-" "-" 2046 7 11 - "-" "-" "-" "-" "127.0.0.1:9999" inbound|443|https|pingfederate2.default.svc.cluster.local 127.0.0.1:39954 10.25.132.9:9999 10.25.131.133:56890 outbound_.443_._.pingfederate2.default.svc.cluster.local -

用户认为Envoy尝试通过http而不是https与容器通信。他想知道是否有办法强制Envoy在本地与容器通信时使用https。用户可能对配置有误,但也可能是其他原因导致的问题。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

解决方案1

根据用户提供的信息,问题可能是由于配置中的mTLS(双向传输层安全性)设置错误导致的。将目标规则(Destination Rule)从ISTIO_MUTUAL更改为SIMPLE可能会解决此问题。以下是如何更改目标规则的步骤:
1. 打开Istio目标规则配置文件。
2. 将目标规则的安全设置从ISTIO_MUTUAL更改为SIMPLE。
3. 保存并应用更改的配置。
请注意,这只是一种可能的解决方案,具体取决于您的配置和环境。如果问题仍然存在,请检查其他配置和日志以进一步诊断问题。

解决方案2

如果解决方案1无效,您可以尝试在Istio中配置其他选项来强制Envoy使用https与容器通信。以下是一些可能的配置选项:
– 检查Istio的网关配置,确保正确配置了https。
– 检查Istio的虚拟服务配置,确保正确配置了https。
– 检查Istio的目标规则配置,确保正确配置了https。
– 检查容器的https配置,确保正确配置了https。
请注意,这些解决方案可能需要根据您的具体情况进行调整和修改。如果问题仍然存在,请参考Istio的官方文档或寻求更多帮助。

解决方案3

如果以上解决方案都无效,您可以尝试使用Istio的Sidecar注入功能来重新部署容器,并确保正确配置了https。以下是使用Sidecar注入功能重新部署容器的步骤:
1. 打开Istio的Sidecar注入配置文件。
2. 将容器的配置更改为正确配置https。
3. 重新部署容器。
请注意,使用Sidecar注入功能重新部署容器可能会对您的应用程序产生影响,请确保在生产环境中谨慎操作。
以上是几种可能的解决方案,具体取决于您的配置和环境。如果问题仍然存在,请参考Istio的官方文档或寻求更多帮助。

正文完