Istio不会通过TLS发起路由到外部HTTPs服务。
我有一个包含两个容器的容器:-应用程序-ISTIO代理
应用程序调用驻留在https://someurl.somedomain.com/v1/some-service的外部第三方API
应用程序通过调用http://someurl.somedomain.com/v1/some-service向此服务发送HTTP请求-请注意,它是HTTP而不是HTTP。
然后,我在ISTIO中配置了以下内容:
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: someservice-vs
spec:
hosts:
- someurl.somedomain.com
http:
- match:
- port: 80
route:
- destination:
host: someurl.somedomain.com
port:
number: 443
timeout: 40s
retries:
attempts: 10
perTryTimeout: 4s
retryOn: gateway-error,connect-failure,refused-stream,retriable-4xx,5xx
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: someservice-se
spec:
hosts:
- someurl.somedomain.com
location: MESH_EXTERNAL
ports:
- number: 443
name: http-port-for-tls-origination
protocol: HTTP
- number: 80
name: http-port
protocol: HTTP
resolution: DNS
最后,我有一个目标规则,它将简单的TLS应用于传出流量:
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: someservice-destinationrule
spec:
host: someurl.somedomain.com
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: 443
tls:
mode: SIMPLE # initiates HTTPS when accessing someurl.somedomain.com
由于某种原因,这不起作用,当从我的应用程序容器调用服务时,我会得到404,这表明流量没有通过TLS加密。
我之所以使用TLS origination,是因为我需要在我的虚拟服务中应用重试,我只能通过HTTP路由来实现这一点,否则ISTIO无法看到请求并使用它。
我挠了两天的头,需要帮忙吗
配置TLS起源在这里记录。
上面显示的配置是正确的。事实证明,实际问题是由虚拟服务中的超时不足引起的,而不是TLS的起源。
https://discuss.istio.io/t/can-i-route-http-traffic-as-https-to-an-external-service/489/8
我认为应该是这样:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: someservice-vs
spec:
hosts:
- someurl.somedomain.com
http:
- match:
- port: 80
route:
- destination:
host: someurl.somedomain.com
timeout: 40s
retries:
attempts: 10
perTryTimeout: 4s
retryOn: gateway-error,connect-failure,refused-stream,retriable-4xx,5xx
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: someservice-se
spec:
hosts:
- someurl.somedomain.com
location: MESH_EXTERNAL
ports:
- number: 80
protocol: HTTP
name: http
endpoints:
- address: someurl.somedomain.com
ports:
http: 443
resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: someservice-destinationrule
spec:
host: someurl.somedomain.com
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
tls:
mode: SIMPLE # initiates HTTPS when accessing someurl.somedomain.com
使ServiceEntry监听端口80,但endpoint地址指向端口443。然后,目标规则对所有目标端口80应用TLS,最终通过群集的终结点转发到端口443。
追根究底。ISTIO文件记录正确——TLS发起和重试工作符合预期。
该问题是由perTryTimeout值太低引起的。请求没有在分配的时间内完成,因此网关正在超时。因为外部服务的性能最近下降了,我们没有想到要检查它。
我的微服务使用的是最新发布的Spring Boot、Spring WebFlux (Undertow)、Spring Data MongoDB、Spring Cloud网飞和Kotlin... 现在我已经设置了一个演示项目来使用新的功能界面,而不是Spring WebFlux中的注释。将Netty与HTTP一起使用效果很好。但是,我找不到如何使用TLS resp配置Netty的任何信息。HTTPS
我已经阅读了stackoverflow中的相关问题。然而,答案只告诉如何配置身份验证检查。我需要在spring boot中用rsocket加密所有传输的数据。如何在带有SSL/tls的spring boot中使用tls。在如下所示初始化rsocket客户端时,我找不到任何受支持的方法,尽管我知道rsocket-it本身可以支持SSL/TLS。我发现了一些例子:
我们有一个Istio集群,我们正在尝试为Kubernetes配置水平pod自动Scale。我们希望使用请求计数作为HPA的自定义度量。我们如何利用伊斯蒂奥的普罗米修斯来达到同样的目的?
DataSource TlsParameters TlsParameters.TlsProtocol (Enum) TlsCertificate TlsSessionTicketKeys CertificateValidationContext CommonTlsContext UpstreamTlsContext DownstreamTlsContext DataSource DataSourc
金属(版本0.7.3) Kubernetes(版本1.12.2) ISTIO(版本1.0.3) 我会从什么起作用开始。 所有补充服务均已部署,大部分正在工作: null 网关 虚拟服务 我仔细检查了一下,这不是DNS的问题,因为我可以通过busybox或使用K8S仪表板进入入口网关的shell
我正在为Istio gRPC开发POC,Istio版本是1.6,但是我看不到任何gRPC流量。 我怀疑我的Istio Gateway或VirtualService遗漏了什么,但我不知道这里出了什么问题?有人能帮我查看yaml文件并纠正我的yaml中缺失或错误的地方吗? 请给予指导,谢谢。