【问题标题】:Argo with multiple GCP projectsArgo 与多个 GCP 项目
【发布时间】:2020-08-17 03:16:16
【问题描述】:

我一直在研究 Argo 作为 Gitops 风格的 CD 系统。它看起来真的很整洁。也就是说,我不了解如何在多个 GCP 项目中使用 Argo。具体来说,该计划是拥有依赖环境的项目(即 prod、stage dev)。似乎 Argo 并非旨在协调跨环境依赖集群的部署,或者是这样吗?

【问题讨论】:

  • 您的 Argo 管道的标识是什么?您有服务帐号吗?
  • @guillaumeblaquiere 不确定你的意思。我是 Argo 的新手,正在研究它作为潜在的 CD 选项。
  • 您将在哪里运行您的 Argo 应用程序?在 GKE 上?
  • @guillaumeblaquiere 是的,在 GKE 上。我想从 Github 中的 dev -> stg -> master 合并,并启动 Argo 将版本部署到相应的环境。也许解决方案是在每个 GCP 项目中简单地部署一个 Argo 服务器并让它们都指向不同的分支?也许这是最简单的方法?如何让 Argo 将应用程序连同环境相关配置一起部署到各种环境?

标签: google-cloud-platform argoproj


【解决方案1】:

您的问题主要是关于安全管理的。您有多种可能性和多种观点/安全级别。

1.项目隔离

最简单和安全的方法是让 Argo 在每个项目中运行,而每个环境之间没有关系/桥梁。没有安全风险或部署在错误的项目上。默认项目隔离(VPC 和 IAM 角色)就足够了。

但这意味着在多个集群上部署和维护同一个应用程序,并为多个集群付费(Dev、Staging 和 prod CD 的使用频率不同)

在安全方面,可以使用Compute Engine默认服务账号进行授权,也可以依赖Workload identity(首选方式)

2。命名空间隔离

另一种方法是,每个交付项目只有一个部署了集群的项目和一个 kubernetes 命名空间。顺便说一句,您可以为公司的所有项目重复使用同一个集群。

您仍然需要在每个命名空间中更新和维护 Argo,但由于节点相同,因此集群管理更容易。

在安全性方面,您可以为每个命名空间使用Workload identity (因此在交付项目中授权每个命名空间有 1 个服务帐户)并保持权限隔离

在这里,权衡的是私有 IP 访问。如果您的部署需要访问交付项目内的私有 IP(出于测试目的或访问私有 K8S 主服务器),您必须设置 VPC 对等互连(每个项目限制为 25 个对等互连)或设置共享VPC。

3.服务帐号隔离

不推荐使用最新的解决方案,但它最容易维护。对于所有环境,您只有一个 GKE 集群,并且只有 1 个部署了 Argo 的命名空间。通过配置,您可以告诉 Argo 使用特定的服务帐户来访问交付项目(使用存储在 GKE 机密或机密管理器中的服务帐户密钥文件(不推荐的解决方案),或者(更好)使用服务帐户模拟) .

此外,您还为每个交付项目授权了 1 个服务帐户。在交付项目中需要私有 IP 访问的情况下,对等问题是相同的。

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2012-07-29
    • 1970-01-01
    • 2021-02-22
    • 2020-08-13
    相关资源
    最近更新 更多