架构概述

今天,我们将亲身体验如何使用 CodePipeline 自动构建和部署应用程序。因此,事不宜迟,让我们深入了解细节。

步骤 1:设置 CodeCommit(私有代码存储库)

  • 创建 CodeCommit 存储库。我将其命名为 DemoRepo。

CodeCommit 存储库

  • 转到安全凭证仪表板并创建“AWS CodeCommit 的 HTTP Git 凭证”。

  • 保存这些凭据并将它们存储在安全位置。

! zoz100076](https://devpress-image.s3.cn-north-1.jdcloud-oss.com/a/164adf505a_1*EdjUIPIaKjPh6MWqgNyFRg.jpg)

下载这些凭据并将其保存在安全位置。

  • 将此存储库克隆到您的本地计算机,并在要求提供凭据时使用我们在上述步骤中下载的凭据。

jwz100003 github - vineet-1/codepipeline_demo

github.com

  • 从我提供的 git repo 下载内容。

  • 将它们复制到空的 CodeCommit 存储库。

  • 添加、提交和推送它们。

  • 确保您可以在 CodeCommit 存储库中看到这些文件。

第 2 步:在 CodeBuild 中创建项目

  • 导航到 CodeBuild ➡ Build Projects ➡ Create Build project。

  • 我把它命名为DemoProject。

  • 源提供商应该是“AWS CodeCommit”。

  • Repository 应该是“DemoRepo”,Branch 应该是“master”。

! zwz 100085 zwz 100086 zwz 100084

构建项目中的源代码

  • 运行时应该是标准的

  • 图片可以是可用的最新版本。

  • 环境类型应该是Linux。

在我们构建 docker 镜像时应该启用特权标志。

  • 创建一个新的服务角色。

现在是重要的部分。仔细填写环境变量.

  • AWS_DEFAULT_REGION,值为 us-east-2(俄亥俄州)。

AWS_ACCOUNT_ID 具有您的账户 ID 的值。

IMAGE_TAG 的值为 latest

IMAGE_REPO_NAME 的值为您的 ECR 存储库名称(我们将在下一步中创建一个 ECR 存储库)。

环境变量

  • 导航到 ECR 并创建一个私有存储库。

  • 我把它命名为“testrepo”。

ECR 中的私有存储库

  • 创建项目后,尝试开始构建。

  • 你肯定会报错。

  • 为什么?我们的 CodeBuild 项目没有足够的权限将图像推送到 ECR。

  • 导航到 IAM ➡ 角色。搜索在配置 CodeBuild 时创建的角色。

  • 向此角色添加一个名为“AmazonEC2ContainerRegistryPowerUser”的新策略。

允许 CodeBuild 将映像推送到 ECR 的 IAM 策略

  • 现在再次开始构建。会成功的。

  • 要验证,可以查看 ECR 中的 testrepo。你会找到一个 Docker 镜像。

Step-3: 设置 CodePipeline

  • 导航到 CodePipeline ➡ 创建一个新管道。

  • 我把它命名为DemoPipeline。

  • 创建一个新的服务角色。

  • 接下来,在源阶段,源提供者是 AWS CodeCommit。

  • 仓库名称为DemoRepo,分支为master。

! swz 100103 swz 100104 swz 100102

源阶段

  • 接下来,在构建阶段,选择 AWS CodeBuild 作为构建提供商。

  • 我使用的是 us-east-2(俄亥俄州)地区。

  • 选择我们之前创建的DemoProject。

! swz 100106 swz 100107 swz 100105

构建阶段

  • 现在跳过部署阶段。创建管道后,我们将添加它。

  • 创建管道后,转到管道,单击编辑。

! swz 100109 swz 100110 swz 100108

添加部署阶段

在添加部署阶段之前,在 Amazon ECS 中创建一个集群并在其中创建一个服务。

请参阅我之前的帖子(第 4 步和第 5 步),以清楚地了解如何实现这一目标。

[

在无服务器基础架构上运行容器化应用程序

媒体网

](/@Vineethsai-A/running-a-containerized-application-on-serverless-infrastructure-3c3376791fa1)

  • 添加一个新阶段并将其命名为“部署”。

  • 点击添加动作组。

  • 我将Action命名为DemoDeploy。

  • 选择 Amazon ECS 作为操作提供程序(我们将在 ECS 上部署应用程序)。

  • 选择 BuildArtifact 作为输入工件。

  • 集群名称是我们之前创建的Testcluster。

  • 选择TestService作为服务名称。

第四步:测试应用

  • 要测试应用程序,请导航至 ECS ➡ TestCluster ➡ Tasks。

  • 打开一个任务并搜索该任务的公共 IPv4(确保在配置服务时,任务应该在公共子网中并启用自动分配 IPv4)并使用此公共 IP 访问 Web 应用程序。

简单的网络应用程序

  • 或者如果您想在私有子网中实现它,您可以按照我之前的帖子进行操作,其中我使用内部负载均衡器和 API 网关将应用程序公开到 Internet。

[

在无服务器基础架构上运行容器化应用程序

媒体网

](/@Vineethsai-A/running-a-containerized-application-on-serverless-infrastructure-3c3376791fa1)

第五步:清理

  • 删除 CodeCommit 存储库。

  • 删除 CodeBuild 项目。

  • 删除 CodePipeline。

  • 删除 CodePipeline 创建的 S3 Bucket 以存储构建工件。

  • 删除 Amazon ECR 中的私有存储库。

  • 删除ECS服务。即使您处于免费套餐中,您仍需要为长时间运行的任务付费。

  • 删除任何负载均衡器和目标组(如果已创建)。

费用:

  • 除 ECS 服务外,本演示中使用的其他所有服务均属于免费套餐。

  • CodeBuild 有 100 分钟/月的免费套餐。我们的构建大约需要 2-3 分钟。

  • ECR 在免费套餐下有 500 MB/月的免费存储空间。

这就对了!如果您有任何疑问或想添加任何内容,请随时通过 LinkedIn 联系我,我愿意接受建议。

这是我的LinkedIn个人资料

[

Vineeth Sai A - 系统工程师- Infosys |领英

Vineeth 是一位有抱负的解决方案架构师(AWS)、DevOps(持续交付)和公共云安全工程师......

www.linkedin.com

](https://www.linkedin.com/in/vineethsai-a/)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐