{"id":2136,"date":"2021-08-23T21:30:00","date_gmt":"2021-08-23T13:30:00","guid":{"rendered":"https:\/\/9incloud.com\/?p=2136"},"modified":"2023-11-12T17:08:42","modified_gmt":"2023-11-12T09:08:42","slug":"cdk-blue-green-canary-deployment","status":"publish","type":"post","link":"https:\/\/9incloud.com\/aws\/cdk\/cdk-blue-green-canary-deployment","title":{"rendered":"\u4f7f\u7528 AWS CDK \u5be6\u4f5c CodeDeploy Blue\/Green\u3001Canary \u90e8\u7f72"},"content":{"rendered":"\n
\u539f\u7406\u548c\u6d41\u7a0b\u7684\u90e8\u5206\u5728\u9032\u968e\u6301\u7e8c\u90e8\u7f72 \u2013 \u4f7f\u7528 Blue\/Green\u3001Canary \u964d\u4f4e\u767c\u7248\u98a8\u96aa<\/a>\u5df2\u8aaa\u660e\u904e\uff0c\u9019\u7bc7\u4f86\u8aaa\u660e\u4f7f\u7528 AWS CDK \u7684\u5be6\u4f5c\u65b9\u5f0f<\/p>\n\n\n\n \u00a0<\/p>\n \u6b64\u7bc7\u6700\u4e3b\u8981\u4ecb\u7d39 ECS on Fargate \u4e2d\u4f7f\u7528 CodePipeline \u6574\u5408 CodeDeploy \u7684\u65b9\u5f0f\u4f86\u5be6\u73fe Blue\/Green or Canary \u7684\u90e8\u7f72\u65b9\u5f0f<\/p>\n AWS CodePipeline \u53ef\u4ee5\u6574\u5408 CodeDeploy \u4e00\u8d77\u4f7f\u7528\uff0c\u81ea\u5bb6\u7522\u54c1\u7684\u6574\u5408\u652f\u63f4\u4e00\u5b9a\u662f\u6bd4\u8f03\u597d\u4e5f\u6bd4\u8f03\u65b9\u4fbf\uff0c\u6240\u4ee5\u5728 AWS CodePipeline \u7684\u6d41\u7a0b\u4e2d\uff0cSource \u968e\u6bb5\u662f\u5f9e GitHub \u800c\u4f86\uff0c\u800c Build \u968e\u6bb5\u6703\u4f7f\u7528 AWS CodeBuild (\u65b0\u7248\u672c\u7a0b\u5f0f\u78bc push \u5230 ECR \u7528\uff0c\u4ee5\u53ca\u6e96\u5099\u76f8\u95dc CodeArtifact \u7d66 CodeDeploy)\uff0c\u800c Deploy \u968e\u6bb5\u5c31\u662f\u6574\u5408 AWS CodeDeploy \u4f86\u5be6\u73fe Blue\/Green Deployment<\/p>\n<\/div>\n\n\n\n \u00a0<\/p>\n \u8981\u5efa\u7acb\u4ee5\u4e0a\u9019\u4e9b Resources \u53ef\u4ee5\u53c3\u8003 RestAPINetwork Stack<\/a> \u548c EcsFargate Stack<\/a><\/p>\n \u6e96\u5099\u597d\u9019\u4e9b Resources \u5f8c\uff0c\u5c31\u53ef\u4ee5\u9032\u5165\u672c\u7bc7\u7684\u91cd\u9ede\uff0c\u4f7f\u7528 CodePipeline \u6574\u5408 CodeDeploy \u5be6\u73fe Blue\/Green Deployment\uff0c\u800c\u518d\u4f86\u8981\u8aaa\u660e\u7684\u90e8\u5206\uff0c\u5b8c\u6574\u7684\u7a0b\u5f0f\u78bc\u90fd\u5728 Pipeline Stack<\/a>\uff0c\u518d\u4f86\u4e3b\u8981\u4e5f\u6703\u91dd\u5c0d\u9019\u500b Stack \u4e2d\u7684 CodeDeploy \u90e8\u5206\u4f86\u505a\u8aaa\u660e\uff0c\u82e5\u5c0d CodePipeline \u4e0d\u719f\u7684\u8a71\uff0c\u53ef\u4ee5\u5148\u53c3\u8003 \u9019\u7bc7<\/a><\/p>\n<\/div>\n\n\n\n \u00a0<\/p>\n \u9019\u908a\u5047\u8a2d\u5df2\u6e96\u5099\u597d\u5728\u6e96\u5099\u4e8b\u9805\u7684\u76f8\u95dc Resources\uff0c\u518d\u4f86\u5c31\u662f\u642d\u5efa CodePipeline \u548c CodeDeploy\uff0c\u4e26\u4e14\u5728 GitHub \u4e3b branch(main) push \u65b0\u7684 commit \u5f8c\uff0c\u5c31\u53ef\u4ee5\u89f8\u767c CodePipeline \u5230 CodeDeploy \u9032\u884c\u90e8\u7f72\u6d41\u7a0b<\/p>\n \u00a0<\/p>\n\u6982\u8ff0<\/h3>\n
\u6e96\u5099\u4e8b\u9805<\/h3>\n
\n
CDK \u5be6\u4f5c AWS CodePipeline \u548c CodeDeploy<\/h3>\n
Source Stage<\/h5>\n<\/div>\n\n\n\n