Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在istio中实现安全的服务对服务通信?_Kubernetes_Istio - Fatal编程技术网

Kubernetes 如何在istio中实现安全的服务对服务通信?

Kubernetes 如何在istio中实现安全的服务对服务通信?,kubernetes,istio,Kubernetes,Istio,我正试图从istio中的一个pod调用另一个pod中运行的web服务 我用python编写了这两个微服务。请告诉我如何从一个吊舱中运行的一个微服务到另一个吊舱中运行的另一个微服务进行https呼叫 我可以在istio网站上找到下面的示例命令 kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl https://httpbin:8000/head

我正试图从istio中的一个pod调用另一个pod中运行的web服务

我用python编写了这两个微服务。请告诉我如何从一个吊舱中运行的一个微服务到另一个吊舱中运行的另一个微服务进行https呼叫

我可以在istio网站上找到下面的示例命令

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl https://httpbin:8000/headers -o /dev/null -s -w '%{http_code}\n' --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem -k
但这是从istio代理容器进行https调用,但我的微服务如何将请求转发给istio代理,然后再由istio代理将请求转发给不同pod中的另一个istio代理

从这个链接中,我无法理解“Istio将出站流量从客户重新路由到客户的本地侧车特使”这句话?我的python微服务中调用https web服务的代码更改是什么?如果您有任何问题,请给出完整的示例?

这篇来自istio docs的文章展示了相互TLS如何与HTTPS服务一起工作。它包括:

  • 部署不带Istio侧车的HTTPS服务
  • 使用禁用了相互TLS的Istio部署HTTPS服务
  • 部署启用了相互TLS的HTTPS服务
以上所有场景都提供了可以在一个microservice容器上运行的命令,以命中另一个microservice的https端点。例如,从睡眠容器通过https点击nginx

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl https://my-nginx -k

istio的好处是您不需要在python应用程序中进行任何代码更改。Istio proxy side car将执行必要的操作,以启用mTLS等安全功能。

我们正在使用openssl生成证书,并提供给nginx应用程序,但是睡眠服务将如何获取证书以发出https请求?您需要将证书存储在机密中,并在睡眠服务中卷装该机密。这是从客户端(睡眠)调用的正确方法吗。这是一个python代码。r=requests.get(“”,auth=None,cert='cert.pem',verify=False)我将为客户端pod的cert.pem创建一个秘密如果您只从python应用程序调用https nginx服务而不提供证书会发生什么?istio sidecar应该自动保护您已安装的机密。我提供了证书,然后它就工作了,谢谢