微软借助环境感知服务网络简化 AKS 服务网格管理,开启新功能指南来了!
微软借助环境感知服务网络简化 AKS 服务网格扩展与管理微软借助基于环境感知ambient的服务网络简化了 Azure Kubernetes 服务AKS的服务网格扩展和管理。以下是如何开启这一功能。如果你正在使用 Kubernetes尤其是像 AKS 这样的托管版本无需考虑底层硬件。只需构建应用程序它就能运行其容器由服务的编排器管理。至少理论上是这样。然而实现一个将代码与支持它的服务器和网络相分离的平台会带来自身的问题同时也催生了一门全新的学科。平台工程师填补了软件和硬件之间的空白负责保障安全和网络同时管理存储和其他关键服务。Kubernetes 是云原生服务生态系统的一部分该生态系统为运行和管理可扩展的分布式系统提供支持框架包括打包和部署应用程序所需的工具以及扩展 Kubernetes 自身节点和 Pod 功能的组件。这个不断发展的生态系统的关键组成部分是各种服务网格。它们提供了一种管理节点之间以及应用程序与外部网络之间连接的方式还配备了处理基本网络安全的工具。这些服务网格通常以“边车sidecar”容器的形式实现与 Kubernetes Pod 并行运行。随着应用程序的扩展这些网络代理会消耗额外的资源这意味着需要更多的配置和管理工作以确保配置保持最新并且机密信息安全无虞。Istio 引入环境感知模式作为关键的服务网格实现之一Istio 开发了一种替代的运行方式即项目所称的“环境感知模式ambient mode”。在这种模式下不再为每个 Pod 配备单独的边车而是将服务网格实现为每个节点的代理或者是支持整个 Kubernetes 命名空间的单个代理。这种方法使你能够在不增加平台复杂性的情况下开始实施服务网格从而轻松地从基本的开发 Kubernetes 实现过渡到生产环境而无需更改应用程序 Pod。之所以称为环境感知模式是因为随着应用程序的扩展无需添加新的服务网格元素。相反服务网格始终存在你的 Pod 只需加入其中并利用现有的配置即可。最终的实现既易于使用也易于理解。多年来微软一直将 Istio 作为 AKS 的一部分。Istio 是为 Azure 云原生计算平台提供支撑的一套开源工具之一。推出 Azure Kubernetes 应用网络因此微软将 Istio 的环境感知网格作为 Azure Kubernetes 应用网络的基础也就不足为奇了。这项新服务目前处于预览阶段允许应用程序开发人员为其应用程序添加托管网络服务而无需平台工程团队的支持来实施服务网格。它甚至可以帮助你从现已弃用的 ingress - nginx 迁移通过提供对推荐的 Kubernetes 网关 API 的访问而无需更多的边车并允许你在完成迁移期间使用现有的 ingress - nginx 配置。微软将 Azure Kubernetes 应用网络的预览版描述为“针对 AKS 的完全托管、基于环境感知的服务网络解决方案”。底层的数据平面和控制平面由 AKS 管理因此你只需将 AKS 集群连接到应用网络AKS 就会为你管理服务网格而无需对你的应用程序进行任何更改。与 Istio 环境感知网格的其他实现类似应用网络有两个层次一组核心的节点级应用代理负责处理应用服务的连接和安全以及一组可选的低级代理支持路由并应用网络策略在 Kubernetes 环境中充当软件定义网络。这种方法使你能够在本地开发硬件上构建和测试 Kubernetes 应用程序而无需使用应用网络功能然后将其与所需的网络配置一起部署到 AKS从而简化了开发和部署过程。它还减少了计算和开发资源方面的开发开销。使用 Azure Kubernetes 应用网络应用网络部署后会安全地连接应用程序中的服务自动管理加密连接并管理所需的证书。当你不传输机密数据且不需要相关开销时它也可以支持未加密的连接。由于该服务由 AKS 管理新的 Pod 在部署时会自动配置环境感知网格支持扩展和缩减操作。应用网络的架构与 Istio 环境感知网格非常相似。主要区别在于该服务的管理和控制平面由 Azure 管理应用程序所有者只能使用服务的数据平面为其应用程序工作负载配置操作并设置策略。Azure 对管理平面的控制实现了证书管理的自动化确保连接安全降低证书过期的风险这得益于 Azure Key Vault 内置的工具。应用网络的数据平面包含服务网格使用的代理和网关这些在服务启动时与所需的 Kubernetes 配置一起部署。操作的关键是 ztunnel它是一个代理用于拦截服务间的请求确保连接安全并将请求路由到与目标服务一起运行的另一个 ztunnel。网关负责监督在远程集群中运行的 ztunnels 之间的连接使你的服务网格能够根据需求进行扩展。在 AKS 中构建首个环境感知服务网格开始使用 Azure Kubernetes 应用网络需要 Azure CLI。如果你使用的是现有的 AKS 集群则需要启用与 Microsoft Entra 的集成并启用 OpenID Connect。由于应用网络服务处于预览阶段首先要在你的账户中注册它。这可能需要一些时间但注册完成后你可以安装用于管理和控制 AKS 集群应用网络的 AppNet CLI 扩展。现在你可以开始设置环境感知服务网格了可以创建新的集群来使用它也可以将服务网格添加到现有的 AKS 部署中。从头开始是最简单的方法因为这样可以确保你在同一个租户中运行。如果你愿意AKS 集群和应用网络可以位于同一个资源组中但这不是必需的。你可以自由使用单独的资源组进行管理。使用 appnet 命令可以轻松地从命令行创建应用网络你只需要为网络指定一个名称、一个资源组、一个位置和一个身份类型。运行创建环境感知网格的命令后等待网格配置完成然后将集群加入你的网络。这同样只需要一个资源组、成员集群的名称及其资源组和集群名称。同时你要定义网络的管理方式即你是自己管理升级还是让 Azure 为你管理。可以用同样的方式将其他集群添加到网络中。有了应用网络和成员集群后下一步是使用 Kubernetes 自身的工具为你的应用程序添加对环境感知网格的支持。微软提供了一个有用的示例展示了如何使用应用网络和 Kubernetes 网关 API 来管理入口。你需要使用 kubectl 和 istioctl 命令来启用网关并验证其操作添加服务并确保它们通过各自的 ztunnels 相互可见。使用策略保护应用程序策略可用于控制从应用程序入口到特定服务以及服务之间的访问降低安全漏洞的风险并确保你能够控制应用程序中的流量路由。这些策略可以进行严格设置以确保仅使用特定的方法例如在只读服务上仅允许 HTTP GET 操作而在需要传输数据的地方允许 POST 操作。还可以使用其他选项在网格级别强制执行 OpenID Connect 授权。并非所有的 Azure Kubernetes 集群都支持预览版该预览版仅在 Azure 的最大区域可用。目前应用网络无法与私有集群或 Windows 节点池一起使用。一旦运行就无法切换升级模式而且由于它基于 Istio你不能在集群中启用 Istio 服务网格。这些要求并非不可逾越的障碍鉴于该服务仍处于预览阶段你应该能够开始对其进行实验。AKS 应用网络是一个强大的工具有助于简化和保障在 AKS 应用程序中构建和运行跨集群网络的过程。由于它是一种环境感知服务可以根据需要进行扩展并有助于在集群之间提供安全的桥梁。通过在 Kubernetes 层面工作可以使用应用网络提供基于策略的生产网络规则使开发人员能够在不受限制的环境中构建和测试代码然后再迁移到测试和生产集群。由于应用网络使用熟悉的 Kubernetes 和 Istio 结构可以将配置构建到 Helm 图表和其他部署工具中确保配置成为构建工件的一部分并且每次推送新构建时网络配置和策略都能与代码一起交付而无需平台工程支持。