如何使用Spinnaker部署分布式系统的两组主机(3个用于QA,3个用于Prod)?

时间:2016-02-13 00:54:28

标签: devops spinnaker

我正在使用Spinnaker将3层系统部署到QA,然后再部署到Production。每个系统中的配置文件都指向其他系统。如果我在AMI中为QA配置进行烘焙,那么如何在推广到Prod时更改它?它是1)通过拥有两组不同的AMI - 一组用于QA,一组用于Prod,或者2)通过让AMI没有配置,然后在部署后配置它(以某种方式)来更改配置文件? 推荐什么?

2 个答案:

答案 0 :(得分:0)

我在公司里遇到类似的问题。 我的解决方案是使用Packer脚本为特定目的创建AMI。这让我 - 1.尽可能多地配置服务器,然后将这些配置存储在AMI中。 2.如果需要,轻松更改这些配置。

然后,使用Ansible脚本启动AMI,并在特定实例上进行所有其余配置。

在我的情况下,我选择为舞台和制作创建不同的图像,但主要是因为它们差别很大。如果它们更相似,我可能选择使用单个AMI。

Ansible为您提供的优势是分配您的配置,并包括一次性写入生产和登台服务器。

答案 1 :(得分:0)

您可以在部署时为群集定义自定义AWS user data(在群集配置的高级设置下)。然后,您可以在应用程序中检索此用户数据。这将允许您更改这些类型的配置。

在Netflix上,我们有一系列初始化脚本,这些脚本被烘焙到基本映像中,并提供了一种通过nebula / gradle扩展自定义启动(init.d)脚本的机制。这通常会设置像NETFLIX_ENVIRONMENT这样众所周知且编程的值。

我们还通过https://github.com/Netflix/archaius使用功能翻转机制。这允许我们添加集群外部的属性,但可以针对它们。

当涉及到安全凭证时,该方法在本演示文稿中进行了概述,但实际上这些图像可以通过外部服务发布,从而发布这些类型的信用卡。 https://speakerdeck.com/bdpayne/key-management-in-aws-how-netflix-secures-sensitive-data-without-its-own-data-center