如何使用 Spinnaker 烘焙 Web 应用程序?

How to bake a web app using Spinnaker?

我有 an example web app 用于试验 Spinnaker,特别是将它从源 (github) 带到生产 (GCE)。

一般来说,这是应该作为图像烘焙的东西(包括适用的依赖项)吗?如果是这样,如何?由于文档和可用的 UI 选项仅涵盖 deb 包。

如果不应该烘焙它,我将如何将它和依赖项部署到 QA VM?我应该使用脚本从源代码中提取和安装它们吗?

一个典型的场景是uild你的源和produce/publish一个使用像jenkins这样的CI系统的deb,并让那个deb声明它的依赖关系。

根据您使用的 build 系统,有 quite 几个用于生成 deb 的选项。许多人使用 gradle 和一个名为 nebula (https://nebula-plugins.github.io/) 的 Netflix OSS 插件。

这里有一个综合教程 (http://www.spinnaker.io/docs/from-source-to-prod),它展示了如何: - 从 git repo 中的源代码开始,然后使用 jenkins build/publish deb(到本地适当的 repo) - 触发 spinnaker 管道,烘焙新图像,并部署到测试集群 - 进行一些人工判断 - 在测试集群中定位刚刚验证过的镜像,并将其提升为生产集群

虽然该 Codelab 中的概念大多是通用的,但它确实依赖于固定的 GCE 图像来让您启动并且 运行 没有配置。正如你提到的你在 GCE 上 运行 一样,这对你来说应该很好。

请注意,您当然可以采用其他 baking/deployment 策略(有些人在启动时依赖配置管理系统),但是构建一个 deb 并将其烘焙到映像中似乎是最适合您描述的场景。

如果您真正想要的只是将您的网络应用程序克隆到新烘焙的图像中,您可以通过创建自定义打包程序模板来实现。打包程序模板都位于此目录 (https://github.com/spinnaker/rosco/tree/master/rosco-web/config/packer) and you can use (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,并且 build/test 可以随心所欲。由于我们依赖于 packer,您还可以在此处使用任何 packer 的其他支持的供应商。

最后一步是在 Bake Stage 配置 ui 中指定新的自定义打包器模板,以及它需要的任何参数(如果有)uires: