使用 CodePipeline 自动容器化您的应用程序
架构概述 今天,我们将亲身体验如何使用 CodePipeline 自动构建和部署应用程序。因此,事不宜迟,让我们深入了解细节。 步骤 1:设置 CodeCommit(私有代码存储库) 创建 CodeCommit 存储库。我将其命名为 DemoRepo。 CodeCommit 存储库 转到安全凭证仪表板并创建“AWS CodeCommit 的 HTTP Git 凭证”。 保存这些凭据并将它们存储在
架构概述
今天,我们将亲身体验如何使用 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/)
更多推荐
所有评论(0)