假设我正在使用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
。
答案 0 :(得分:9)
如果我必须从服务A呼叫服务B,如果我一直走到使用群集的外部IP /域并使用HTTPS(https://example.com/api/user/1)来呼叫服务,或者我可以使用服务的内部IP并使用HTTP(http://serviceb/api/user/1)?
如果您需要使用API Gateway提供的功能(身份验证,缓存,高可用性,负载平衡),则为YES,否则为DON' T.面向外部的API应仅包含外部客户端(来自群集外部)使用的端点。
我是否必须加密数据,或者它是否安全"只要它不离开私人k8s网络?
"安全"是一个非常相对的词,我相信没有100%安全的网络。你应该平衡概率"某人"或"某事"如果发生这种情况,嗅探来自网络的数据以及它对您的业务的影响。
如果这对您有所帮助:对于我曾为之工作的任何项目(或者我从我认识的人那里听到),容器/服务之间的专用网络已经绰绰有余了。
如果我想要"内部"该怎么办?只能从群集中访问的端点 - 当我总是使用外部https-url时,每个人都可以访问这些端点。
正是我在答案之上所说的话。将这些端点保留在集群内部使得它们无法通过外部设计进行访问。
最后一件事,为许多内部服务管理大量SSL
证书是一种痛苦,如果没有必要,应该避免。