我想从我控制不多(就代码而言)的 pod 到第三方出口端点(我根本无法控制)获取出口跟踪和指标。您可以将其视为例如从 wordpress 安装到api.wordpress.org
.
我计划终止出口上的 tls,然后从那里创建一个新的 tls 会话。api.wordpress.org
为此,我从可以注入 pod 的 CA生成证书。
我有以下配置:
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: egress-api-wordpress-org
spec:
hosts:
- api.wordpress.org
gateways:
- mesh
- egress-api-wordpress-org
tls:
- match:
- gateways:
- mesh
port: 443
sniHosts:
- api.wordpress.org
route:
- destination:
host: istio-egressgateway.istio-egress.svc.cluster.local
port:
number: 443
http:
- match:
- gateways:
- egress-api-wordpress-org
port: 443
route:
- destination:
host: api.wordpress.org
port:
number: 443
---
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: egress-api-wordpress-org
spec:
hosts:
- api.wordpress.org
location: MESH_EXTERNAL
ports:
- number: 443
name: https
protocol: HTTPS
resolution: DNS
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
spec:
host: api.wordpress.org
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: 443
tls:
mode: SIMPLE
通过此设置,我可以看到通过出口的流量(并且我有指标和跟踪出口端)。然而,没有关于起源的细节——这是有道理的,因为边车的特使看不到里面的交通情况。
有没有办法在不破解源 pod 源代码的情况下向出口提供源详细信息?如果可以设置它,我通常对 tls-in-tls 之类的奇怪东西很好(我不确定我是否可以在出口处终止 tls 两次——对于 istio_mutual 和简单层)。