使用CodeDeploy进行蓝绿色容器部署
mbeacom.cdk-blue-green-container-deployment的Python项目详细描述
@mbeacom/cdk蓝绿集装箱部署
Blue green container deployment with CodeDeploy
安装
类型脚本/JavaScript:
npm i @mbeacom/cdk-blue-green-container-deployment
Python:
^{pr2}$如何使用
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826fromaws_cdk.coreimportConstruct,Stack,StackPropsfromaws_cdk.aws_codecommitimportRepositoryfromaws_cdk.aws_codepipelineimportPipeline,Artifactfromaws_cdk.aws_ec2importVpc,Portfromaws_cdk.aws_ecsimportClusterfromaws_cdk.aws_elasticloadbalancingv2importApplicationLoadBalancer,ApplicationTargetGroup,TargetTypefromaws_cdk.aws_codepipeline_actionsimportCodeBuildAction,CodeCommitSourceAction,CodeDeployEcsDeployActionfrommbeacom.cdk_container_registryimportImageRepositoryfrommbeacom.cdk_blue_green_container_deploymentimportEcsService,DummyTaskDefinition,EcsDeploymentGroup,PushImageProjectclassBlueGreenContainerDeploymentStack(Stack):def__init__(self,scope,id,*,description=None,env=None,stackName=None,tags=None,synthesizer=None,terminationProtection=None,analyticsReporting=None):super().__init__(scope,id,description=description,env=env,stackName=stackName,tags=tags,synthesizer=synthesizer,terminationProtection=terminationProtection,analyticsReporting=analyticsReporting)vpc=Vpc(self,"Vpc",max_azs=2)cluster=Cluster(self,"Cluster",vpc=vpc,cluster_name="blue-green-cluster")load_balancer=ApplicationLoadBalancer(self,"LoadBalancer",vpc=vpc,internet_facing=True)prod_listener=load_balancer.add_listener("ProfListener",port=80)test_listener=load_balancer.add_listener("TestListener",port=8080)prod_target_group=ApplicationTargetGroup(self,"ProdTargetGroup",port=80,target_type=TargetType.IP,vpc=vpc)prod_listener.add_target_groups("AddProdTg",target_groups=[prod_target_group])test_target_group=ApplicationTargetGroup(self,"TestTargetGroup",port=8080,target_type=TargetType.IP,vpc=vpc)test_listener.add_target_groups("AddTestTg",target_groups=[test_target_group])# Will be replaced by CodeDeploy in CodePipelinetask_definition=DummyTaskDefinition(self,"DummyTaskDefinition",image="nginx",family="blue-green")ecs_service=EcsService(self,"EcsService",cluster=cluster,service_name="blue-green-service",desired_count=2,task_definition=task_definition,prod_target_group=prod_target_group)ecs_service.connections.allow_from(load_balancer,Port.tcp(80))ecs_service.connections.allow_from(load_balancer,Port.tcp(8080))deployment_group=EcsDeploymentGroup(self,"DeploymentGroup",application_name="blue-green-application",deployment_group_name="blue-green-deployment-group",ecs_services=[ecs_service],target_group_names=[prod_target_group.target_group_name,test_target_group.target_group_name],prod_traffic_listener=prod_listener,test_traffic_listener=test_listener,termination_wait_time_in_minutes=100)# @see https://github.com/mbeacom/cdk-constructs/tree/master/examples/blue-green-container-deployment-example/blue-green-repositoryrepository=Repository(self,"CodeRepository",repository_name="blue-green-repository")image_repository=ImageRepository(self,"ImageRepository",{"force_delete":True})source_artifact=Artifact()source_action=CodeCommitSourceAction(action_name="CodeCommit",repository=repository,output=source_artifact)image_artifact=Artifact("ImageArtifact")manifest_artifact=Artifact("ManifestArtifact")push_image_project=PushImageProject(self,"PushImageProject",image_repository=image_repository,task_definition=task_definition)build_action=CodeBuildAction(action_name="PushImage",project=push_image_project,input=source_artifact,outputs=[image_artifact,manifest_artifact])deploy_action=CodeDeployEcsDeployAction(action_name="CodeDeploy",task_definition_template_input=manifest_artifact,app_spec_template_input=manifest_artifact,container_image_inputs=[CodeDeployEcsContainerImageInput(input=image_artifact,task_definition_placeholder="IMAGE1_NAME")],deployment_group=deployment_group)Pipeline(self,"Pipeline",pipeline_name="blue-green-pipeline",stages=[StageProps(stage_name="Source",actions=[source_action]),StageProps(stage_name="Build",actions=[build_action]),StageProps(stage_name="Deploy",actions=[deploy_action])])
API参考
见API.md。在
示例
请参阅更完整的examples。在
许可证
- 项目
标签: