阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

结合 AWS 服务与 Kubernetes 的持续集成

  • 2019-10-18
  • 本文字数:1817 字

    阅读完需:约 6 分钟

结合 AWS 服务与 Kubernetes 的持续集成

用户可以结合 AWS 和 Kubernetes 去创建一个完全托管,可持续部署的容器应用。这种结合充分利用开源 Kubernetes 平台的容器编排能力以及 AWS 开发者工具的代码管理,编译打包和持续集成的能力


本篇文章描述了如何去创建一个可持续部署容器应用。其使用 AWS CodeCommit , AWS CodePipeline , AWS CodeBuild , 和 AWS Lambda 将容器应用部署到 Kubernetes 集群中去。在这个环境中,开发者可以专注于代码开发而无需考虑如何部署,同时这种方式总是可以保障最新的代码被部署到环境中去

什么是持续部署?

有许多的文章和会议已经发表过持续部署的实践案例, 而本文将持续部署归纳为以下几点:


  • 代码可以频繁地被部署到生产环境

  • 任何代码修改将触发低风险发布。同时也可以轻松回滚

  • 全自动化部署,仅需少量人工操作

如何使用 AWS 和 Kubernetes 去实现持续部署?

你可以以最小的人工操作为代价,用 AWS 服务自动将代码从代码仓库取出然后部署到 Kubernetes 生产集群。为了达成这个目的,你可以创建一个 pipeline,在条件满足时该 pipeline 将自动构建并且部署已提交的代码。


你可以使用下面这些服务,去创建一个 pipeline


  • AWS CodePipeline . AWS CodePipeline 是一个自动化交付服务,它模块化,可视化,自动化了软件的部署流程。在 pipeline 中可以定义若干步骤,例如从代码管理仓库中拉取代码,将代码构建成为可发布包,测试发布包,将其部署到生产环节。只有成功通过上述步骤的代码才会予以部署。同时,你可以针对 pipeline 增添一些额外的流程,例如人工批准:只有被批准的修改才会被部署到生产环节。

  • AWS CodeCommit . AWS CodeCommit 是一个安全,可扩展,托管的私有 Git 代码仓库服务。你可以将私有代码或其他文件存储在云上,同时配置 pipeline 自动获取仓库中的改动。

  • AWS CodeBuild . AWS CodeBuild 是一个 aws 上的构建服务,用来编译代码,运行单元测试和生成部署包. 同时你可以在部署之前使用 AWS CodeBuild 来构建和测试部署包。

  • AWS Lambda. AWS Lambda 是一种计算服务,该服务可以让你运行代码的同时而无需部署或者管理服务器。你可以在 pipeline 中触发 Lambda 函数来准备构建和为 Kubernetes 测试部署包。

  • Kubernetes . Kubernetes 是一个开源的自动化部署,扩容和管理容器应用的框架。 它为运行,部署和管理可扩展的容器提供了便利的平台。

持续部署到 Kubernetes 的举例:

下面这个例子,说明了如何使用 AWS 开发者工具持续将应用部署到 Kubernetes 集群



  1. 开发者将代码提交到 AWS CodeCommit 同时创建一个 pull request 来审核针对生产环境代码的修改。 当 pull request 合并到 master 分支后,AWS CodePipeline 会自动检测到代码分支上的修改,并通过 pipeline 启动针对代码修改的处理。

  2. AWS CodeBuild 将代码修改以及相关依赖包构建成为 Docker 镜像。 同时你也可以配置 pipeline 的其他步骤来测试代码或生成包。

  3. 在构建及测试步骤完成之后,Docker 镜像将被推送到 Amazon ECR

  4. AWS CodePipeline 触发 AWS Lambda 函数,该函数使用到 Kubernetes Python 客户端来对 Kubernetes 进行操作。 Lambda 函数将 Kubernetes deployment 配置文件中 Docker Image tag 替换为刚被推送到 ECR 中的镜像

  5. 在 Kubernetes deployment 的参数修改完之后,AWS Lambda 将调用 Kubernetes API 去重新部署 Kubernetes deployment 以完成 deployment 中 docker 镜像的更新

  6. Kubernetes 将使用会滚动升级 pods 中的应用,使得所有 pod 都使用 ECR 中的相应 docker 镜像。至此为止,Pipeline 成功响应了 CodeCommit 上 master 代码分支的修改。同时该 pipeline 很容易扩展,你可以在代码被部署到生产环节之前,增加测试环节或者增加部署到预生产环境的环节


下面展示了一个支持该流程的 AWS CodePipeline 的例子:


结论:

我们非常高兴你能使用这些 pipeline 更为轻松的在 Kuberntes 上开发和部署容器应用。你可以在 CodeSuite – Continuous Deployment Reference Architecture for Kubernetes上找到更多相关的 AWS CloudFormation 模版。该仓库详细的描述了如何创建 pipeline 并使用它去部署应用。 如果有更多的问题,意见,反馈,请及时让我们知道。


作者介绍:


张恒


AWS 中国区专业服务咨询顾问,拥有多年互联网开发经验,精通虚拟化及容器技术。
复制代码


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/continuous-deployment-to-kubernetes-using-aws-codepipeline-aws-codecommit-aws-codebuild-amazon-ecr-and-aws-lambda/


2019-10-18 08:00823
用户头像

发布了 1835 篇内容, 共 92.1 次阅读, 收获喜欢 73 次。

关注

评论

发布
暂无评论
发现更多内容

区块链公链开发

西安链酷科技

区块链 软件开发 去中心化 交易所 dapp开发

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

威廉META

用友iuap数据中台又获奖了! 用友

用友BIP

数据驱动

通过 Python 脚本支持 OC 代码重构实践(一):模块调用关系分析

百度Geek说

Python 自动化 重构 脚本 企业号10月PK榜

【Linux】进程间的通信之共享内存

百度搜索:蓝易云

Linux 云服务器 ipc Inter Communication

Photoshop 2024 for Mac v25.1.0Beta 最新PS测试版多语言一键安装ACR 15.5.1 + Neural Filters + Ai创成式填充

晴雯哥

Experience Design for Mac(XD)UI/UX开发工具

展初云

交互设计 Mac软件 adobe xd XD

极狐GitLab 致敬中国 1000万程序员

极狐GitLab

1024 极狐GitLab 致敬

室内LED显示屏和户外LED显示屏亮度标准

Dylan

屏幕亮度 LED显示屏 led显示屏厂家

Mac电脑文件批量重命名软件 Renamer 最新中文版

mac大玩家j

Mac软件 重命名工具 文件重命名

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

石头财经

手把手带你打一场时间序列比赛—数据探索

打工人!

机器学习 时间序列预测

Java常见的锁及同步机制

echoes

IDC:用友再蝉联中国SaaS市场多项年度第一

用友BIP

企业服务

区块链积分商城系统开发

西安链酷科技

去中心化 dapp开发 #区块链

数划云与明道云达成产品战略生态合作

数划云

支持M1/M2 Jump Desktop 8 Mac 远程桌面控制软件v8.10.4永久激活版

晴雯哥

CNCC 2023 | 五位重磅大咖齐聚沈阳,共同探讨「大模型与推荐系统」

小红书技术REDtech

人工智能 AI 算法 #推荐系统 #大模型

ubuntu系统从源码编译安装gcc7.3.0编译器?

百度搜索:蓝易云

Linux ubuntu 运维 云服务器 GCC

3D模型金属度怎么调?

3D建模设计

材质 纹理 金属度

简单好用的批量重命名软件:A Better Finder Rename 12 直装激活版

胖墩儿不胖y

Mac软件 重命名工具 重命名软件 文件重命名

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

鳄鱼视界

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

BlockChain先知

我们距离“裸眼3D自由”,还有多远?

脑极体

XR

Python 数组和列表:创建、访问、添加和删除数组元素

小万哥

Python 程序员 软件 后端 开发

Linux绝对路径和相对路径

智趣匠

从昏暗到明亮—改善照明环境,提升编程效率

颜淡慕潇

程序员 1024程序员节 明基BenQ ScreenBarBar

Java基础面试题【Spring】二

派大星

Java 面试题 java 技术提升

Bettertouchtool 4 for Mac触控板增强软件

展初云

Mac软件 触控板增强 Bettertouchtool

Parallels Desktop 19.1.0 最佳Mac虚拟机解决方案

晴雯哥

国际原油价格大波动,航司如何精准降低航油成本?

用友BIP

降本节能

结合 AWS 服务与 Kubernetes 的持续集成_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章