我一直在研究 Spinnaker、Spring Boot/Cloud 和 Amazon Web 服务的组合,以便为我的新雇主实现微服务的持续交付。
我最大的问题是分离 AWS 中的不同环境,并在 Spring Boot/Cloud 微服务通过从代码签入到生产的管道时确定该环境。在 AWS 中分离不同环境的最佳实践是什么?我见过单独的子账户,使用 VPC 来分隔环境。
然后下一步涉及微服务在启动时确定环境。我们计划使用 Spring Cloud Config Server 为微服务提供运行时配置。联系配置服务器时的环境判断需要在向配置服务器请求配置时设置'label'。
我所做的假设:
1. Spinnaker 或其他一些支持管道的工具被用于将工件推入各种环境。
2. 原始工件是一个自包含的 jar,理想情况下将合并到 AWS AMI 中,然后无需修改即可推送到后续部署环境中。
3. AMI 可以使用确定运行时环境所需的任何脚本来构建,并在启动时向 jar 提供该信息。
4. 实例正在由自动缩放器启动,并将启动实例(AMI),启动时不提供外部信息。
我认为这已经足够了。这可能会分成多个问题,但我想为这个过程保持一个有凝聚力的整体。
感谢您的帮助。