有没有一种安全的方式可以在同一个k8s集群上与不同的产品DevOps团队一起工作?如何在团队之间隔离工作负载?我知道有可用的k8s基于角色的访问控制和命名空间,但是运行不同的prod工作负载安全吗?我知道istio,但据我所知,我的Südasien没有直接的答案。我们如何处理来自同一群集中不同团队的不同入口配置?如果不能安全地隔离工作负载,您如何协调k8s集群以减少维护。
非常感谢!
发布于 2021-01-11 15:24:43
答案是:视情况而定。首先,Kubernetes在默认情况下不是不安全的,并且容器提供了一个基础抽象层。更好的问题是:
隔离级别
如果您需要工作负载之间的强隔离(我指的是非常强的隔离),那么帮自己一个忙,使用不同的集群。在某些业务案例中,您可能需要保证不允许在同一(虚拟机)计算机上运行某种工作负载。您还可以尝试通过添加仅用于某个子项目的节点,并使用Affinities和Anti-Affinities来处理日程安排。但是,如果需要这种级别的隔离,在考虑日志聚合、指标或一般情况下,如果您拥有跨所有服务使用的组件,您可能会遇到问题。
对于任何其他用例:构建一个集群并按名称空间划分。你甚至可以创建两个只属于你的团队的入口控制器。
用户管理
手动管理RBAC和用户可能有点棘手。Kubernetes本身就是supports OIDC-Tokens。如果您已经使用OIDC进行SSO或类似操作,则可以在Kubernetes中重用令牌来对用户进行身份验证。我从来没有用过这个,所以我不能告诉你使用OIDC的角色映射。
另一个解决方案是Rancher或另一个集群编排工具。我不能说另一个,但Rancher提供了内置的用户管理。您还可以创建项目来为某个访问者分组多个命名空间。
流量加密
通过使用像Istio或Linkerd这样的服务网格,您可以对pods之间的流量进行加密。即使加密你的工作负载听起来很诱人,但如果你真的需要这样做,也要明确。服务网格也有一些缺点,例如资源使用。此外,您还需要管理和更新另一个组件。
https://stackoverflow.com/questions/65659072
复制相似问题