当前位置: 首页 > news >正文

aws(学习笔记第四十六课) codepipeline-build-deploy

文章目录

  • aws(学习笔记第四十六课) codepipeline-build-deploy
  • 学习内容:
    • 1. 代码链接及整体架构
      • 1.1 代码链接
      • 1.2 整体架构
        • 1.2.1 初始化阶段的`codecommit repo`以及`codebuild project`设定
        • 1.2.2 创建`vpc`,`public alb`,`alb listener`以及`fargate service`等
        • 1.2.3 创建`source`,`build`以及`deploy`等`stage`以及`deplyment group`,将部署和`alb listener`进行关联
    • 2. 代码详细分析
      • 2.1 初始化阶段代码,创建`codecommit repo`以及`codebuild project`
        • 2.1.1 创建`codecommit repo`
        • 2.1.2 创建`Elastic Container Registry (ECR) image repository`
        • 2.1.3 创建`fargate task definition`
        • 2.1.4 创建`code build project`
        • 2.1.5 对`build project`赋予权限,对`imaga repo`能够`push image`
        • 2.1.6 初始化阶段使用`lambda`进行`code build project`触发
        • 2.1.7 在初始化阶段创建`custom resource`触发上面`lambda`
      • 2.2 创建`vpc`,`public alb`,`alb listener`以及`fargate service`等
        • 2.2.1 创建`vpc`
        • 2.2.1 创建`target group green`以及`target group blue`
        • 2.2.2 创建`application loader balancer`的`security group`以及入站规则
        • 2.2.3 创建`application loader balancer`以及`listener`
        • 2.2.4 创建`fargate service`
      • 2.3 创建`source`,`build`以及`deploy`等`stage`以及`deplyment group`,将部署和`alb listener`进行关联
        • 2.3.1 创建`source stage`
        • 2.3.2 创建`build stage`
        • 2.3.3 创建`deployment group`
        • 2.3.4 创建`deploy stage`,并将`deployment_group`指向上面创建的`deployment group`
        • 2.3.5 将`source`,`build`,`deploy`组合成`pipeline`
    • 3. 执行`cdk`
      • 3.1 执行命令
      • 3.2 访问`endpoint`
      • 3.3 修改代码进行改修和自动部署
        • 3.3.1 检查`codecommit`
        • 3.3.2 创建`IAM user`进行代码`commit`
        • 3.3.3 为`IAM user finlay`指定公钥(public key)
        • 3.3.4 设定用户的`config`文件
        • 3.3.5 对代码进行clone
        • 3.3.6 对`codecommit`进行改修,并`push`
        • 3.3.7 检验修改后的页面
    • 4. cleanup

aws(学习笔记第四十六课) codepipeline-build-deploy

  • 使用codebuild
  • 尝试codedeploy

学习内容:

  • 定义codebuild
  • 使用codedeploy

1. 代码链接及整体架构

1.1 代码链接

代码连接(codepipeline-build-deploy)

1.2 整体架构

整体架构分为三个部分:

  • 初始化阶段,创建codecommit repo以及codebuild project
  • 创建vpcpublic albalb listener以及fargate service
  • 创建sourcebuild以及deploystage以及deplyment group,将部署和alb listener进行关联
1.2.1 初始化阶段的codecommit repo以及codebuild project设定

在这里插入图片描述

这里,trigger code build分为两个阶段:

  • 初期阶段,通过custom resource创建 ==> trigger lambda执行 ==> trigger code build project
  • 平时运用阶段,通过code commitpush ==> trigger code build project
1.2.2 创建vpcpublic albalb listener以及fargate service

这些组件都是真正运行服务的部分。
在这里插入图片描述

  • 首先生成一个Application Loader Balancer
  • 对这个Application Loader Balancer设定listener
  • 之后生成Target Group GreenTarget Group Blue 这里实现蓝绿部署
  • Application Loader Balancer Listener设定defaulttarget group,这里设定为Target Group Green
1.2.3 创建sourcebuild以及deploystage以及deplyment group,将部署和alb listener进行关联

在这里插入图片描述

  • 创建source stageinputcode repo
  • source stage将整个code repo生成source artifact
  • 创建build stageinputsource artifact
  • build stage对整个source artifact进行build,主要是使用buildspec.yaml
  • build stage进行完docker build之后,将生成的docker image上传到ecr
  • build stage进行完docker build之后,生成出deploy stage需要的appspec.yaml && cat taskdef.json
  • deploy stage使用appspec.yaml && cat taskdef.json对整个deployment group进行部署

2. 代码详细分析

2.1 初始化阶段代码,创建codecommit repo以及codebuild project

2.1.1 创建codecommit repo
# Creates an AWS CodeCommit repositorycode_repo = codecommit.Repository(self, "CodeRepo",repository_name="simple-app-code-repo",# Copies files from app directory to the repo as the initial commitcode=codecommit.Code.from_directory("app", "main"))

在这里插入图片描述

2.1.2 创建Elastic Container Registry (ECR) image repository
  # Creates an Elastic Container Registry (ECR) image repositoryimage_repo = ecr.Repository(self, "ImageRepo")

在这里插入图片描述

2.1.3 创建fargate task definition
        # Creates a Task Definition for the ECS Fargate servicefargate_task_def = ecs.FargateTaskDefinition(self, "FargateTaskDef")fargate_task_def.add_container("Container",container_name="web",image=ecs.ContainerImage.from_ecr_repository(image_repo),port_mappings=[{"containerPort": 80}])

这里,创建一个container(docker),并将端口映射出80
在这里插入图片描述

2.1.4 创建code build project
        # CodeBuild project that builds the Docker imagebuild_image = codebuild.Project(self, "BuildImage",build_spec=codebuild.BuildSpec.from_source_filename("buildspec.yaml"),source=codebuild.Source.code_commit(repository=code_repo,branch_or_ref="main"),environment=codebuild.BuildEnvironment(privileged=True),environment_variables={"AWS_ACCOUNT_ID": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_ACCOUNT') or ""),"REGION": codebuild.BuildEnvironmentVariable(value=os.getenv('CDK_DEFAULT_REGION') or ""),"IMAGE_TAG": codebuild.BuildEnvironmentVariable(value="latest"),"IMAGE_REPO_NAME": codebuild.BuildEnvironmentVariable(value=image_repo.repository_name),"REPOSITORY_URI": codebuild.BuildEnvironmentVariable(value=image_repo.repository_uri),"TASK_DEFINITION_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.task_definition_arn),"TASK_ROLE_ARN": codebuild.BuildEnvironmentVariable(value=fargate_task_def.
http://www.lqws.cn/news/483409.html

相关文章:

  • P99延迟:系统性能优化的关键指标
  • Python嵌套循环
  • Selenium等待机制详解:从原理到实战应用
  • 阿里云CentOS系统搭建全攻略:开启云端技术之旅
  • 群晖 NAS Docker 镜像加速配置详细教程
  • 【数据结构】七种常见排序算法
  • 多项目质量标准如何统一制定与执行
  • Python函数实战:从基础到高级应用
  • esp-idf的freertos的俩个配置项
  • RA4M2开发IOT(7)----RA4M2驱动涂鸦CBU模组
  • 通俗理解物联网中的APN
  • mp.set_start_method(“spawn“)
  • 【Android】am命令
  • 从Git历史中删除大文件的完整解决方案
  • 如何仅用AI开发完整的小程序<3>—创建小程序基础框架
  • Linux之网络的基础认识
  • windows 访问ubuntu samba配置
  • LLMs之Pretrain:《Reinforcement Pre-Training》翻译与解读
  • 微处理器原理与应用篇---常见基础知识(5)
  • Linux->进程概念(精讲)
  • 详解分布式事务框架DTM:子事务屏障
  • openapi-generator-maven-plugin自动生成HTTP远程调用客户端
  • Python中使用RK45方法求解微分方程的详细指南
  • 【闲谈】对于c++未来的看法
  • Python安装cartopy报错,解决cartopy环境配置问题
  • Redis核心数据结构实战
  • pythonday53
  • 【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】
  • 人形机器人 / 外骨骼布线难?LiquidWire可拉伸互连 + 应变传感器,让机器人 “有线但不受限”
  • C++/Qt课程设计实战指南:基础篇-1.Qt开发环境配置