aws codedeploy 在ec2实例和autoscaling组上进行蓝绿部署
参考资料
- https://docs.amazonaws.cn/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html
- https://docs.amazonaws.cn/zh_cn/codedeploy/latest/userguide/applications.html
- 为 EC2/本地蓝/绿部署创建部署组(控制台)
部署ec2比较简单,只需要创建EC2/On-premises类型的codedeploy应用,之后在应用中创建部署组
-
部署组可以选择
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHhL7yb0-1680197950824)(assets/image-20230331011101362.png)]]()
-
在参考中可以找到示例程序,https://docs.amazonaws.cn/codedeploy/latest/userguide/resource-kit.html
下面主要内容为部署过程中的注意事项
启动4台ec2实例
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-897xgRzO-1680197950827)(assets/image-20230331011536661.png)]](https://i-blog.csdnimg.cn/blog_migrate/2d00b791501946430d6cf813b1eab213.png)
但凡是蓝绿部署,就必然要提供两组资源,下面的配置使用部署中的实例替换部署组中的实例
创建部署组,在部署组中指定green实例
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltJNyDyC-1680197950828)(assets/image-20230331012051093.png)]](https://i-blog.csdnimg.cn/blog_migrate/57c11880aa7aa927d51ba5ca65bb39cf.png)
在部署中指定blue实例
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zyDcMenq-1680197950830)(assets/image-20230331012034706.png)]](https://i-blog.csdnimg.cn/blog_migrate/c85ad99c35dd518f2842c00d7002c953.png)
创建部署,由于我们提供了blue组,因此创建资源的步骤直接被跳过
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mFFcN5ok-1680197950832)(assets/image-20230331012746054.png)]](https://i-blog.csdnimg.cn/blog_migrate/3e2767d7ef9ec0e93b6afbf79ce42ff6.png)
可以查看具体实例的部署事件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krhjVV53-1680197950833)(assets/image-20230331012302322.png)]](https://i-blog.csdnimg.cn/blog_migrate/43e1da1b28761db62d48522967cf9bb0.png)
使用asg模板的额外权限问题
已经为codedeploy服务角色附加了AWSCodeDeployRole托管策略,但是仍旧出现以下没有权限的错误
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j1CGzhNo-1680197950834)(assets/image-20230331000203757.png)]](https://i-blog.csdnimg.cn/blog_migrate/6d34c5fb083bae55bac3c35bf3860e2e.png)
在cloudtrail中同样能够看到错误的调用记录(CreateAutoScalingGroup和RunInstances),检查文档后发现
如果创建具有启动模板的 Auto Scaling 组,则必须添加以下权限:
ec2:RunInstancesec2:CreateTagsiam:PassRole
部署位置已经存在
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buAulbRF-1680197950835)(assets/image-20230331003418887.png)]](https://i-blog.csdnimg.cn/blog_migrate/d25a23543d9cd04e1a6906fec6021e9d.png)
需要手动修改部署的覆盖配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Go0UAyCY-1680197950837)(assets/image-20230331011255068.png)]](https://i-blog.csdnimg.cn/blog_migrate/d9109143163bb15a73594e66a2bf44d2.png)
部署过程
asg会创建额外数量的实例来完成部署
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-77D3qJCZ-1680197950838)(assets/image-20230331004632672.png)]](https://i-blog.csdnimg.cn/blog_migrate/1fd738205ac57ad5df54866c8d82087a.png)
每个具体的部署都可以视为一个ec2实例的部署,我们在之前的文章中已经讨论过常见的单一实例部署错误的排查
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXuvB5MU-1680197950839)(assets/image-20230331004706162.png)]](https://i-blog.csdnimg.cn/blog_migrate/3983c342e79380c71f9a9b7711329b90.png)
蓝绿部署生命周期
ec2进行蓝绿部署的生命周期示意图如下

替代实例的生命周期
C:\Users\ASUS\Nutstore\1\embedded\每日任务\assets\image-20230331004846505.png
旧实例的生命周期
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYj3xmfu-1680197950842)(assets/image-20230331004949551.png)]](https://i-blog.csdnimg.cn/blog_migrate/60cca359fac3a088c34d7d0b0e52632a.png)
之后需要手动进行旧实例的terminate操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2evPipW7-1680197950843)(assets/image-20230331010149842.png)]](https://i-blog.csdnimg.cn/blog_migrate/444f8ded749ee95fb7ab19953b7d5557.png)
注意到原来的asg被删除,创建了新的asg作为替代,此时不要手动terminate实例,否则会导致asg删除失败
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAdU32nu-1680197950844)(assets/image-20230331010535002.png)]](https://i-blog.csdnimg.cn/blog_migrate/fce4645e7b66b57dff7593680c9f1a3f.png)

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHhL7yb0-1680197950824)(assets/image-20230331011101362.png)]](https://i-blog.csdnimg.cn/blog_migrate/01363d97ad6ac7fdf2b50f85921eae3a.png)
浙公网安备 33010602011771号