使用CodePipeline蓝/绿云部署和成本优化

对于AWS客户,CodePipeline自动化CI / CD是一个流行的选择过程和增长,我们看到在使用地点之一的实例。管道坐标动作编排一个完整的应用程序版本可追踪和可逆的。现在可以使用Elastigroup由现货这些行动之一,有效的扩展和管理的新部署。

在CI / CD和云成本优化见面

你是新来的,Elastigroup使您能够可靠地运行工作负载在亚马逊EC2实例,Azure现货和GCP的抢占式vm实例。这有助于你实现成本节约90%计算花费,通常大多数的云账单。

我们现有的与AWS CodeDeploy集成使您能够执行蓝色/绿色部署现场实例,CodePipeline自动化整个过程使用一个单独的API调用。

CodePipeline蓝/绿云部署和成本优化图

为了避免混淆不同实例之间开始在不同的应用程序和环境,我们生成一个独特的标签或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函数将使用我的角色

  1. 打开AWS服务我。
  2. 创建一个新的政策,切换到“JSON”选项卡。
  3. 复制和粘贴的策略定义JSON内容LambdaPolicyDefinition.json在GitHub回购。
    审查和名字的政策。
  4. 将新创建的策略附加到一个角色。

创建Lambda函数

  1. 打开AWSλ服务。
  2. 创建一个新的Lambda函数。
  3. 名字的作用和选择一个运行时Python 3.7或更新的版本。
  4. 附上之前创建的权限部分我的角色。
  5. 创建函数。
  6. 打开上述GitHub库,下载“lambda_package。邮政”文件。
  7. 在“功能代码”部分,在“代码条目类型”下,选择“上传一个. zip文件”。
    提供“lambda_package。从第十步zip”文件。
  8. 处理程序条款改为“bluegreen.lambda_handler”。
  9. 保存更改。

现在我们有我们的AWS CodePipeline Lambda函数随时可以部署。

开始与AWS CodePipeline过程

AWS CodePipeline在需要时将触发蓝色/绿色的部署。

我们为Lambda函数添加一个专用的步骤,从CodePipeline使用UserParameters提要正确的参数。

更多信息请见:调用一个AWS管道CodePipeline - CodePipeline Lambda函数

为了使用Lambda函数作为一个阶段,我们可以使用我们现有的管道或创建一个新的。

然后我们将添加一个舞台,一个新的行动小组来封装我们Lambda函数的行动。

在创建我们的AWSλ行动,确保选择之前创建的Lambda函数,并提供我们的函数使用的参数“UserParamteres”条款。

下面是截图的Lambda函数和内配置CodePipeline作为一个行动。

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函数的过程。

下面是一个例子,一个完全完成日志:

CloudWatch日志的Lambda函数

步骤3

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

蓝色/绿色codedeploy进展

Elastigroup将确保你有新推出的EC2实例。这些实例将作为你的绿色的实例。

自动化的一部分将用独特的标签,你可以看到下面的标签键“GreenIdentifier”和他们独特的标签值。

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

步骤4

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

CodeDeploy将部署新应用程序从一个AWS S3 Bucket或修订GitHub库

CI / CD /绿、蓝部署和极端的成本优化都在一个地方

CloudOps可以被定义为最佳实践、过程和工具对于CI / CD,云中的成本管理和安全性。

能够为我们的客户提供完全自动化的手段他们的蓝色/绿色的部署,在CI / CD包装过程,而可靠地利用戏剧性的储蓄,现货实例反映了我们关注CloudOps卓越,而我们也希望你能从中受益。

很快再见到你更多的文章类似的“现实世界”的用例的云,DevOps相关技术!