为什么容器业务流程很重要?
- 7 分钟
在本单元中,你可以跟随 Tailspin 团队了解他们如何探索和实施管理层的新指令策略。 团队将探讨 Kubernetes 如何协助过渡到微服务体系结构。
未来更小
在 Tailspin,一切都变得越来越好。 在最近的一次管理层外部会议上, Andy 向管理层展示了他团队最近在 Azure DevOps 中取得的成功, 并得到了高度评价。 Andy 还演示了团队最近使用 Docker 容器的概念证明项目。 这些演示引发了一系列关于组织技术未来的高效对话。 第二天,安迪回到与太空游戏网络团队分享这一消息。
安 迪: 昨天我的场外演讲进展非常顺利。 管理层对我们到目前为止所做的工作印象深刻,并发布了一项特别任务。
提姆: 哦, 哦。 我有足够长的距离看到一个陷阱,就像从一英里外看到一样。
安 迪: 不,这对我们来说是一个很好的机会。 管理喜欢我们的 Docker 容器演示,并希望我们探索采用微服务体系结构。
Amita:微服务? 你喜欢手机和手表上的应用程序吗?
Andy:否,微服务是典型的应用,如 Web 应用。 主要区别在于,我们重构任何作为自治服务更好地维护和托管的组件,而不是构建和部署单个整体应用。 然后,我们构建这些服务,使其在各自领域做好工作,并独立部署以运行。
蒂姆:我不太确定我能接受这个说法。 我已在环境中处理了如此多的服务。 我不知道我是否想承担更多的责任。
安迪:这是一个可以理解的问题。 幸运的是,在给定环境中管理大量容器时,有一些很好的工具。 我们被要求为使用 Kubernetes 协调的 Web 应用推出多容器解决方案。 他们还想知道它将如何影响我们的 DevOps 流程。
Mara:我一直在学习 Kubernetes。 Azure 通过 Azure Kubernetes 服务对它有很好的支持,我知道 Azure DevOps 中提供了流水线支持。
Amita:这个过程听起来很复杂。 它如何影响测试?
马拉:这不应该是一个重大的变化。 Kubernetes 提供了一种部署到不同命名空间的方法。 这使我们可以对部署进行分区,以便我们可以拥有专用于测试与生产环境的完整环境。 由于它们都在同一群集中运行并使用相同的容器,因此测试体验应与我们期望在生产中看到的效果相符。
Amita:跟踪哪些环境在哪些地方会很难?
Mara:否,可以使用 Azure DevOps 环境完成所有这些作。 你可以通过门户了解每个服务在哪以及是如何到达那里的。 它都是通过管道自动完成的,因此无需手动跟踪。 我目前唯一关心的是,它对于开发体验有哪些影响。
安迪:好消息是影响很小。 假设我们设置了用于生成 Docker 容器的项目,只需部署到 Kubernetes 即可获取一些描述服务及其部署的清单文件。
Mara:你考虑过我们将重构什么作为第二个容器吗? 我知道有几个团队要求我们通过 Web API 提供我们的排行榜。
安迪:我领先于你一步。 我昨晚分叉了 Docker 项目,并将排行榜数据功能重构为自己的微服务。 这给我们留下了一个用于网站的容器,另一个容器用于排行榜 API。 这两个容器都配置为有自己的公共终结点,我们可以与任何想要使用网站或 API 的用户共享,而不管其应用使用的技术堆栈如何。 如果任一负载显著增长,我们可以单独缩放其容器。
马拉:这个项目听起来真棒! 那么我们开始着手更新发布流程吧。
什么是 Kubernetes?
Kubernetes 是一个开源容器业务流程平台,可自动部署、缩放和管理容器化应用程序。 它提供了一个框架,用于以声明性、响应式方式运行分布式系统,并且可以跨多个主机运行容器,从而有效利用资源和提高可靠性。
Tailspin 团队为此方案选择了 Kubernetes,因为它满足其所有需求:
多容器部署的复杂性:Kubernetes 首先设计为自动化部署和维护容器部署的过程。
跨环境和阶段的一致性:就像容器确保它们包含的应用的一致部署一样,Kubernetes 可确保群集管理的容器的一致部署。
Azure DevOps 支持:Azure DevOps 为使用 Kubernetes 提供一流的支持。
易于开发:Kubernetes 对源项目的影响与添加 Docker 支持的影响相当,这一点最小且仅限于声明性配置。
采用 Kubernetes 极大地简化了采用使用多个 Docker 容器的微服务体系结构的过程。