我有一个示例 Web 应用程序,我用它来试验 Spinnaker,特别是从源代码 (github) 到生产 (GCE)。
一般来说,这是应该作为图像烘焙的东西(包括适用的依赖项)吗?如果是这样,怎么做?由于文档和可用的 UI 选项仅涵盖 deb 包。
如果这不应该被烘焙,我将如何将它和依赖项部署到 QA VM?我应该使用脚本从源中提取和安装它们吗?
我有一个示例 Web 应用程序,我用它来试验 Spinnaker,特别是从源代码 (github) 到生产 (GCE)。
一般来说,这是应该作为图像烘焙的东西(包括适用的依赖项)吗?如果是这样,怎么做?由于文档和可用的 UI 选项仅涵盖 deb 包。
如果这不应该被烘焙,我将如何将它和依赖项部署到 QA VM?我应该使用脚本从源中提取和安装它们吗?
一个典型的场景是使用像 jenkins 这样的 CI 系统构建您的源代码并生成/发布一个 deb,并让该 deb 声明其依赖项。
根据您使用的构建系统,有很多用于生成 deb 的选项。许多人使用 gradle 和一个名为 nebula ( https://nebula-plugins.github.io/ ) 的 Netflix OSS 插件。
这里有一个综合教程(http://www.spinnaker.io/docs/from-source-to-prod),它展示了如何: - 从 git repo 中的源代码开始并使用 jenkins 构建/发布 deb(到local aptly repo) - 触发 spinnaker pipeline,烘焙新镜像,并部署到测试集群 - 执行一些手动判断 - 在测试集群中找到刚刚验证的镜像并将其提升到 prod 集群
虽然该 Codelab 中的概念大多是通用的,但它确实依赖于罐装 GCE 映像来让您在没有配置的情况下启动并运行。正如您提到您在 GCE 上运行的那样,这对您来说应该很有效。
请注意,您当然可以采用其他烘焙/部署策略(有些人在启动时依赖配置管理系统),但是构建一个 deb 并将其烘焙成图像似乎最适合您描述的场景。
如果您真正想要的只是将您的 web 应用程序克隆到新烘焙的图像中,您可以通过创建自定义打包程序模板来做到这一点。打包程序模板都位于此目录中(https://github.com/spinnaker/rosco/tree/master/rosco-web/config/packer),您可以使用(https://github.com/spinnaker/rosco/ blob/master/rosco-web/config/packer/gce.json)作为起点。
然后更改此行 ( https://github.com/spinnaker/rosco/blob/master/rosco-web/config/packer/gce.json#L33 ) 以调用您自己的 shell 脚本。您的 shell 脚本可以克隆它需要的任何 repo,并根据您的喜好构建/测试。由于我们依赖于 packer,您还可以在此处使用任何 packer 的其他支持的供应商。