服务网格
欢迎进入 ServiceMesh 时代
采用微服务架构带来了许多好处,包括增强的自主性、灵活性和模块化。 但是,将单层整体应用程序解耦为更小的服务的过程引入了新的障碍:
- 您如何知道正在运行什么?
- 您如何推出新版本的服务?
- 如何保护和监控所有这些容器?
为了应对这些挑战,您可以使用服务网格:帮助您跨分布式应用程序编排、保护和收集遥测数据的软件。 服务网格通常通过每个微服务旁边的一组网络代理透明地监督和监控应用程序的所有流量。 采用服务网格可以让您的应用程序与网络解耦,进而使您的运营和开发团队能够独立工作。
Google 与 IBM、Lyft 等公司一起于 2016 年推出了 Istio,作为开源服务网格解决方案。 Istio 基于高性能 Envoy 代理构建,为 Kubernetes 中运行的微服务提供可配置的覆盖。 它支持服务之间的端到端加密、精细流量和授权策略以及统一指标,所有这些都无需对应用程序代码进行任何更改。
Istio 的架构基于 Google 内部使用多年的可信服务网格软件。 就像我们将 Kubernetes 引入世界一样,我们希望将这项令人兴奋的技术提供给尽可能多的用户。 为此,我们最近宣布在 GKE 上推出 Istio 测试版,这是我们寻求提供可一键部署的托管、成熟服务网格的重要里程碑。 您还从我们那里听说了我们对跨越云和本地的服务网格的愿景。
在 2019 年伊始,我们认为应该退后一步,深入探讨如何在生产中立即使用 Istio。 这是关于 Istio 和服务网格的实用博客系列的第一篇文章,我们将涵盖各种用户视角,从开发人员和集群操作员到安全管理员和 SRE。 通过真实的用例,我们将阐明服务网格的 what
和 how
,但最重要的是,Istio 如何帮助您为客户提供即时的业务价值。
首先,让我们探讨一下为什么 Istio 在云原生生态系统中其他持续转变的背景下很重要:从基础设施中抽象、自动化和混合云环境。
自动化一切
现代软件世界发展迅速。 越来越多的组织正在寻找自动化从源代码到发布的开发过程的方法,以便满足业务需求并提高竞争环境中的速度。 持续交付是一种基于管道的自动化应用程序部署方法,代表了 DevOps 最佳实践的关键支柱。
Istio 的声明式、基于 CRD 的配置模型与持续交付系统无缝集成,允许您将 Istio 资源合并到部署管道中。 例如,您可以将管道配置为自动部署 Istio VirtualServices 来管理金丝雀部署的流量。 这样做可以让您在零手动干预的情况下利用 Istio 的强大功能(从精细流量管理到动态混沌测试)。 凭借其声明性配置模型,Istio 还可以与现代 GitOps 工作流程配合使用,其中源代码控制充当基础设施和应用程序配置的中心事实来源。
Serverless 使用 Istio
与此同时,无服务器计算将源代码转换为仅在调用时执行的运行工作负载。 采用无服务器模式可以帮助组织降低基础设施成本,同时允许开发人员专注于编写功能和提供业务价值。
无服务器平台运行良好,因为它们解耦了代码和基础设施。 但大多数时候,组织不仅运行无服务器工作负载,还拥有有状态应用程序,包括 Kubernetes 基础设施上的微服务应用程序。 为了解决这个问题,开源社区中出现了一些基于 Kubernetes 的开源无服务器平台。 这些平台允许 Kubernetes 用户将无服务器功能和传统 Kubernetes 应用程序部署到同一集群上。
去年,我们发布了 Knative,这是一个新项目,它提供了一组通用的构建块,用于在 Kubernetes 上运行无服务器应用程序。 Knative 包括用于服务请求、处理事件触发器以及从源代码构建容器化函数的组件。 Knative Serving 基于 Istio 构建,并将 Istio 的遥测聚合和默认安全性引入无服务器功能。
Knative 的目标是成为基于 Kubernetes 的无服务器平台的标准。 此外,以与处理传统容器相同的方式将无服务器功能视为服务的能力将有助于在无服务器和 Kubernetes 世界之间提供急需的一致性。 这种标准化将允许您在所有工作负载中使用相同的 Istio 流量规则、授权策略和指标管道。
构建一次,随处运行
随着 Kubernetes 的成熟,用户越来越多地采用更复杂的集群配置。 今天,您可能有多个集群,而不是一个。 这些集群可能跨越混合环境,无论是在公共云、多个云还是本地。 您可能还拥有必须与虚拟机中运行的单层应用程序或要管理和保护的服务端点或跨集群启动的功能进行通信的微服务。
在降低延迟、安全性和节省成本的需求的推动下,多云时代即将到来,这就需要跨越云和本地环境的工具。
Istio 多集群是随 1.0 版本一起发布的一项功能,允许您使用单个 Istio 控制平面来管理跨集群服务网格,因此即使在复杂的多集群网格拓扑中,您也可以利用 Istio 的功能。 借助 Istio 多集群,您可以跨集群使用相同的安全角色、聚合指标并将流量路由到新版本的应用程序。 多集群的故事在 1.1 中变得更加容易,因为新的 Galley 组件有助于同步集群之间的服务注册表。
如未另行说明,那么本页面中的内容已根据 知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。内容随着时间推移,可能会过期,会定时更新或移除一些旧的内容。
最后更新时间 (CST):2023-09-01
阅读更多
访问本博文的相关主题 服务网格 以获取更多的精彩内容。