我已经将 Google Foundation 工具包的简化版本部署到我的 GCP 组织中。它没有所有花里胡哨的东西,但它是一个起点(实际上是出于教育目的)
事实上,我有一个项目“cloudbuild”,其中部署了云构建的所有触发器。我可怜的人基金会的每个阶段都有它的 git 仓库:
问题:
一个标准的“项目”通常是一个码头化的应用程序,可以从注册表中拉出并推送到 Cloud Run 中。这是由 IaC 管道和 terraform(我们称之为“app-infra”)完成的。这个 tf 管道从注册表中拉取给定的图像并推送到云运行中。
DOCKERFILE 和应用程序的源代码位于不同的 git 存储库中(我们称之为“应用程序代码”)。这个 repo 有一个自己的 cloudbuild 文件来构建它并推送到注册表中。这是因为我不希望开发团队能够访问 IaC 代码。
所以,这就是发生的事情:
当云架构师推送到 app-infra 时,terraform apply 被触发,新版本的 docker 镜像从注册表中拉出并推送到 Cloud Run。
如果开发人员推送到应用程序代码,则会构建新的 docker 映像并将其推送到注册表中,但由于部署代码已进入应用程序基础设施管道,因此不会部署它。
我是否完全搞砸了我的架构设计,或者有一种方法可以确保在这种情况下适当的安全性和职责分离?