对于AWS客户,CodePipeline自动化CI / CD是一个流行的选择过程和增长,我们看到在使用地点之一的实例。管道坐标动作编排一个完整的应用程序版本可追踪和可逆的。现在可以使用Elastigroup由现货这些行动之一,有效的扩展和管理的新部署。
在CI / CD和云成本优化见面
你是新来的,Elastigroup使您能够可靠地运行工作负载在亚马逊EC2实例,Azure现货和GCP的抢占式vm实例。这有助于你实现成本节约90%计算花费,通常大多数的云账单。
我们现有的与AWS CodeDeploy集成使您能够执行蓝色/绿色部署现场实例,CodePipeline自动化整个过程使用一个单独的API调用。

为了避免混淆不同实例之间开始在不同的应用程序和环境,我们生成一个独特的标签或UUID,分配给新推出的“绿色”实例。我们可以自动定位的新实例部署我们的应用程序(参见步骤11中CodeDeploy UserGuide这是如何实现的),一旦成功部署,绿党取代蓝军。
这是巧妙地包装和CI / CD的方式管理,与一个AWS Lambda函数作为在AWS CodePipeline阶段。
开始
定义CodePipeline工作流之前,你需要先设置CodeDeploy Elastigroup集成以及Lambda函数。
与Elastigroup CodeDeploy集成
一旦你CodeDeploy应用程序设置和准备好了,我们想要确保CodeDeploy与Elastigroup集成。
这将使您能够启动和管理新的现货实例可以运行您的应用程序(s)。
这里有一步一步的指示的集成。
AWSλ为应用程序部署自动化
我们将使用AWS Lambda函数(为此我们开发了-GitHub库)来自动化和编排应用程序部署的整个过程,使用CodeDeploy Elastigroup各自的api。
作为我们的功能集成了。io和AWS服务我们需要给予其必要的我权限。
要创建Lambda函数,遵循这些步骤:
创建有关我们的Lambda函数将使用我的角色
- 打开AWS服务我。
- 创建一个新的政策,切换到“JSON”选项卡。
- 复制和粘贴的策略定义JSON内容LambdaPolicyDefinition.json在GitHub回购。
审查和名字的政策。 - 将新创建的策略附加到一个角色。
创建Lambda函数
- 打开AWSλ服务。
- 创建一个新的Lambda函数。
- 名字的作用和选择一个运行时Python 3.7或更新的版本。
- 附上之前创建的权限部分我的角色。
- 创建函数。
- 打开上述GitHub库,下载“lambda_package。邮政”文件。
- 在“功能代码”部分,在“代码条目类型”下,选择“上传一个. zip文件”。
提供“lambda_package。从第十步zip”文件。 - 处理程序条款改为“bluegreen.lambda_handler”。
- 保存更改。
现在我们有我们的AWS CodePipeline Lambda函数随时可以部署。
开始与AWS CodePipeline过程
AWS CodePipeline在需要时将触发蓝色/绿色的部署。
我们为Lambda函数添加一个专用的步骤,从CodePipeline使用UserParameters提要正确的参数。
更多信息请见:调用一个AWS管道CodePipeline - CodePipeline Lambda函数
为了使用Lambda函数作为一个阶段,我们可以使用我们现有的管道或创建一个新的。
然后我们将添加一个舞台,一个新的行动小组来封装我们Lambda函数的行动。
在创建我们的AWSλ行动,确保选择之前创建的Lambda函数,并提供我们的函数使用的参数“UserParamteres”条款。
下面是截图的Lambda函数和内配置CodePipeline作为一个行动。

UserParameters应提供一个JSON字符串的形式像下面的例子。
{“API_TOKEN”:“123 abcde4567fghi890”,“ACCOUNT_ID”:“- 1234 abcd行动”,“GROUP_ID”:“sig - 1234 abcd”、“APP_NAME”:“CodeDeploy-Application”、“DEPLOYMENT_GROUP”:“CodeDeploy-DeploymentGroup”、“超时”:600年,“S3_BUCKET”:“aws-codedeploy-bucket”、“S3_KEY”:“样品/最近/ SampleApp_Linux。zip”、“S3_BUNDLE”:“zip”}
为每个参数及其使用的详细解释,请参考下表:
| UserParameter | 描述 |
| API_TOKEN | 身份验证标记位置的API |
| ACCOUNT_ID | 现货账户ID |
| GROUP_ID | 现货Elastigroup ID |
| APP_NAME | 在CodeDeploy应用程序的名称 |
| DEPLOYMENT_GROUP | 在CodeDeploy部署组的名称 |
| 超时 | 超时秒的部署过程 |
| S3_BUCKET * | S3 Bucket名称CodeDeploy应用程序修改 |
| S3_KEY * | 关键的S3文件CodeDeploy应用程序修改 |
| S3_BUNDLE * | 文件格式:焦油| tgz |邮政| YAML | JSON |
| GITHUB_REPO * | 名字的GitHub库CodeDeploy应用程序修改 |
| COMMIT_ID * | 提交的ID在GitHub CodeDeploy应用程序修改 |
⚠️为您的应用程序修改部署,你应该从S3或者GitHub提供源头。
这一切看起来如何行动
一旦所有的先决条件的整合CodeDeploy Elastigroup和创建Lambda函数完成,这是完整的流程是什么样子:
步骤1
CodePipeline发射Lambda函数与相应的参数来启动蓝色/绿色的部署。
我们现在应该看到:

步骤2
一旦我们从CodePipeline Lambda函数推出了,它意味着你的部署过程已经启动。你将有一个监测日志流,允许您按照Lambda函数的过程。
下面是一个例子,一个完全完成日志:

步骤3
Elastigroup将认识到创建了新的部署,你可以遵循从“CodeDeploy B / G”标签的Elastigroup组。

Elastigroup将确保你有新推出的EC2实例。这些实例将作为你的绿色的实例。
自动化的一部分将用独特的标签,你可以看到下面的标签键“GreenIdentifier”和他们独特的标签值。

我们也可以按照流程从Elastigroup“实例”选项卡。

步骤4
目前已经完成了你的新实例启动过程和处于就绪状态,CodeDeploy将尝试部署新应用程序从一个AWS S3 Bucket或修订GitHub库,基于源提供的UserParameters AWS Lambda函数,新推出的绿色实例,最终完成蓝色/绿色部署。

CI / CD /绿、蓝部署和极端的成本优化都在一个地方
CloudOps可以被定义为最佳实践、过程和工具对于CI / CD,云中的成本管理和安全性。
能够为我们的客户提供完全自动化的手段他们的蓝色/绿色的部署,在CI / CD包装过程,而可靠地利用戏剧性的储蓄,现货实例反映了我们关注CloudOps卓越,而我们也希望你能从中受益。
很快再见到你更多的文章类似的“现实世界”的用例的云,DevOps相关技术!