我一直在寻找作为Gitops风格的CD系统的Argo。看起来真的很整齐。尽管如此,我并不理解如何在多个GCP项目中使用Argo。具体来说,该计划是有环境依赖的项目(即prod,stage )。看起来Argo并不是为了协调跨环境依赖的集群的部署而设计的,是吗?
发布于 2020-08-16 19:16:16
你的问题主要是关于安全管理的。您有几种可能性和几种观点/安全级别。
1.项目隔离
最简单和最安全的方法是让Argo在每个项目中运行,而不需要在每个环境之间建立联系/桥梁。没有安全风险或部署在错误的项目上。默认的项目隔离(VPC和IAM角色)就足够了。
但这意味着在多个集群上部署和维护相同的应用程序,并支付多个集群的费用(开发、分期和prod CD不以相同的频率使用)。
在安全性方面,可以使用Compute默认服务帐户进行授权,也可以依赖工作负载标识 (首选方式)
2.命名空间隔离
另一种方法是在每个交付项目上只部署一个具有集群和kubernetes命名空间的项目。顺便说一句,您可以在公司的所有项目中重用相同的集群。
您仍然需要更新和维护每个名称空间中的Argo,但是集群管理更容易一些,因为节点是相同的。
在安全性方面,您可以使用每个名称空间的工作负载标识 (因此在交付项目中每个名称空间有一个服务帐户),并保持权限隔离。
在这里,交换的是私有IP访问。如果您的部署需要访问交付项目中的私有IP (用于测试目的或访问私有K8S主服务器),则必须设置一个VPC对等(每个项目仅限于25个窥视)或设置一个共享VPC。
3.服务帐户隔离
不推荐最新的解决方案,但它是最容易维护的。对于所有环境,您只有一个GKE集群,并且只部署了一个带有Argo的命名空间。通过配置,您可以告诉Argo使用特定的服务帐户访问交付项目(使用存储在GKE机密或秘密管理器中的服务帐户密钥文件(不推荐解决方案),或者(更好)使用服务帐户模拟)。
在这里,您也有一个服务帐户授权的每个交付项目。在交付项目中需要私有IP访问的情况下,对等问题也是一样的。
https://stackoverflow.com/questions/63421235
复制相似问题