Kubernetes:我应该使用HTTPS在服务之间进行通信

pky*_*eck 9 kubernetes microservices google-kubernetes-engine

假设我正在使用GCE ingress来处理来自集群外部的流量并终止TLS(https://example.com/api/items),从此处请求被路由到services仅在集群内可用的两个中的一个.到现在为止还挺好.

如果我必须从服务A调用服务B,如果我一直使用集群的外部IP /域并使用HTTPS(https://example.com/api/user/1)来调用服务,或者我可以使用服务的内部IP并使用HTTP(http://serviceb/api/user/1) ?我是否必须加密数据,或者它是否"安全",只要它不离开私人k8s网络?

如果我想拥有只能从群集中访问的"内部"端点怎么办?当我总是使用外部https-url时,每个人都可以访问这些端点.直接调用服务,我可以做一个http://serviceb/internal/info/abc.

Con*_*enu 12

如果我必须从服务A呼叫服务B,如果我一直使用集群的外部IP /域并使用HTTPS(https://example.com/api/user/1)来呼叫服务或者可以我使用服务的内部IP并使用HTTP(http:// serviceb/api/user/1)?

如果您需要使用API​​ Gateway提供的功能(身份验证,缓存,高可用性,负载平衡),则为YES,否则不要.面向外部的API应仅包含外部客户端(来自群集外部)使用的端点.

我是否必须加密数据,或者它是否"安全",只要它不离开私人k8s网络?

"安全"是一个非常相对的词,我相信没有100%安全的网络.您应该平衡"某人"或"某事"从网络中嗅探数据的可能性以及如果发生这种情况,它对您的业务产生的影响.

如果这对你有所帮助:对于我曾经为之工作的任何项目(或者我从我认识的人那里听到),容器/服务之间的私人网络绰绰有余.

如果我想拥有只能从群集中访问的"内部"端点怎么办?当我总是使用外部https-url时,每个人都可以访问这些端点.

正是我在答案之上所说的话.将这些端点保留在集群内部使得它们无法通过外部设计进行访问.

最后一件事,SSL为许多内部服务管理大量证书是一种痛苦,如果没有必要,应该避免.