我有一个使用Kubernetes和Istio的设置,其中我们运行一组服务。我们的每个服务都有一个istio-sidecar和一个REST-api。我们希望的是,每当我们的设置中的一个服务调用另一个服务时,被调用的服务就知道调用者是哪个服务(最好是通过标头)。
查看来自bookinfo:bookinfo-image的示例图像(由于<10声誉而链接),这意味着在评级服务的源代码中,例如,我希望能够读取一个标头,告诉我请求来自Reviews-v2。
我的直觉告诉我,我应该能够在istio侧车中处理这件事,但我没有意识到具体是如何做到的。
到目前为止,我特别关注了envoy filters,希望他们能帮助我。我看到对于特使筛选器,我可以设置头部,但我没有看到的是,为了在头部中设置它,我如何获得进行调用的服务的信息。
发布于 2019-09-25 23:48:26
我最终通过使用“规则”找到了另一个解决方案。如果我们确保启用了策略强制,然后添加了规则:
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: header-rule
namespace: istio-system
spec:
actions: []
requestHeaderOperations:
- name: serviceid
values:
- source.labels["app"]
operation: REPLACE我们实现了我们想要做的事情。
发布于 2019-09-25 21:50:44
特使自动设置X-Forwarded-Client-Cert标头,其中包含调用者的SPIFFE。Istio中的SPIFFE ID是spiffe://cluster.local/ns/<namespace>/sa/<service account>形式的URI。实际上,它指定调用者的Kubernetes服务帐户。您可能希望通过使用Istio httpbin示例并向httpbin:8000/headers发送请求来测试它
https://stackoverflow.com/questions/58097675
复制相似问题