本文是以下系列博文中的一篇:
- 在 Kubernetes 中部署应用交付服务(第 1 部分)(本文)解释了为什么因分治而重复使用的应用服务反而可以提高整体效率:因为 NetOps 和 DevOps 团队有不同的要求,所以他们会选择最适合他们特定需求的工具。
- 在 Kubernetes 中部署应用交付服务(第 2 部分) 以 WAF 为例,就应用交付服务在 Kubernetes 环境中的部署位置提供了指导。您可以根据自己的需求,以基于每个 Service 或基于每个 POD 的方式,将 WAF 部署在 Kubernetes 环境的“前门” 或 Ingress Controller上。
如果要说伴随 Kubernetes 和云原生架构的增长而产生的最大改变,那就是 DevOps 团队和应用所有者能够更直接地控制应用的部署、管理和交付方式。
现代应用依赖一套日益成熟的配套“应用交付服务”以确保其在生产环境中成功运行。应用与其配套服务之间的界限已经模糊,DevOps 工程师渐渐发现他们需要自己左右或管理这些服务。
我们通过几个具体的例子了解一下:
- 灰度和蓝绿部署 —— DevOps 团队将应用推进到生产环境中,有时每天会推送多次。他们积极使用负载均衡器或应用交付控制器 (ADC) 的流量导向功能,先使用少量流量验证新的应用实例,然后再将所有流量从旧实例切换到新实例。
- DevSecOps 流水线 —— DevOps 团队直接将安全策略构建到 CI/CD 流水线中,例如 Web 应用防火墙 (WAF) 规则集。这些策略被当作又一个应用工件来处理,被自动部署到测试、预生产及生产环境中。虽然 SecOps 团队可以定义安全策略,但 DevOps 执行在生产环境中的实际部署。
这些例子都与我们所说的“应用交付服务”有关 —— 不属于应用的功能性需求,但却是确保应用成功运行不可或缺的重要能力。这些功能可能是缓存、负载均衡、身份验证、WAF 和拒绝服务(DoS)措施,目的是提供出色的可扩展性、性能加速或安全防护。
NetOps 和 DevOps 都关注应用交付服务
DevOps 的兴起一点没有削弱 NetOps 团队的作用,后者仍然负责整个平台及其所需的应用交付服务的运营。NetOps 需要控制这些全局性的服务,这一点仍然至关重要。事实上,当 NetOps 和 DevOps 都关注应用交付服务(例如 ADC 或 WAF)时,我们经常会发现应用交付服务的分而治之。这不是效率低下,而是反映了各方在使用该服务时的不同需求和目标:
- NetOps 和 SecOps 负责企业基础架构的整体安全性、性能和可用性。衡量其目标的标准是可靠性、正常运行时间、延迟状况以及建立安全边界的能力。他们使用的工具通常是多租户的(管理多个应用和多个业务线的流量)、以基础架构为中心的且持久使用的。同样的,他们使用的监控和警报工具也是以基础架构为中心的。
- DevOps 和 DevSecOps 负责其相关业务线需要运营的每个应用。衡量其目标的标准在于能否快速迭代、轻松将新服务推向市场,并能响应不断变化的业务需求。系统出现故障很正常——对他们来说,可靠性和正常运行时间是第二位的,最重要的是要快速排除故障并解决不可避免且不可预见的生产问题。他们使用的工具往往是基于软件(通常是开源)的,很容易通过配置文件和 API 实现自动化,并根据需要迅速部署和扩展。
有时分而治之反而会提高运营效率
为什么功能重复不会导致效率低下?简单地说,因为 NetOps 和 DevOps 都需要使用某些功能,但他们的目标、指标和运营方式却截然不同。因期望 DevOps 和 NetOps 共享一个共同的 ADC(比如说)而造成冲突并导致各自效率低下的案例数不胜数。
NetOps 和运营团队最关心的往往是位于基础架构的前门、更接近客户的全局服务。DevOps 和应用团队最关心的则是部署位置更接近应用代码的、针对特定应用的服务。而他们的关注点通常会在中间重合。
您可以根据每个团队的需求为其提供合适的工具,从而提高运营效率。例如,经过多年的产品开发,F5 的 BIGIP ADC 基础架构已经能够有效满足 NetOps 的需求。NGINX 的软件 ADC 可轻松通过 CI/CD 流水线部署和自动化,能够有效满足 DevOps 用户的需求。
审慎安排每个应用交付服务的所有权和责任归属是提升运营效率的核心。例如,当部署两层 ADC 或负载均衡器时:
- NetOps 能够管理所有网络流量、应用安全策略、优化路由,并监控基础架构的健康和性能。稳定且妥善管理的配置可最大限度地减少变化带来的风险,并最大可能地增加正常运行时间。通过将应用交付服务部署在数据中心的前门,NetOps 可创建一个安全的托管边界,让所有流量必须流经此处进行检查。
- DevOps 团队可完全控制按应用部署的 ADC,根据应用和运营流程自由优化和调整 ADC 配置。他们可以调整必要的参数,以缓存和加速应用,或优化健康检查、超时和错误处理。他们还可以安全地进行蓝绿部署及其他部署,而不必担心同一基础架构上的其他无关服务运行中断。
通过将 ADC 功能放置在两个不同的位置(基础架构的前门和靠近应用的位置),企业可实现专门化和精准控制,从而更高效地部署和运营业务所依赖的各项服务。
Kubernetes 突显了智能定位应用交付服务的必要性
作为以 DevOps 为中心的数字化转型计划的一部分,企业正在快速采用 Kubernetes。Kubernetes 为 DevOps 工程师提供了一个可轻松自动化、运行时保持一致且高度可扩展的应用平台。
许多传统上位于数据中心前门的应用交付服务都可以在 Kubernetes 中部署或实现自动化。这进一步突显了在生产环境中 DevOps 团队在应用运营管理方面所扮演的角色,并为重要应用的部署方式和位置提供了更多选项。
在本系列博文的第二篇 ,我们将介绍一些服务部署的成熟实践,比如在 Kubernetes 环境中运行的应用 WAF 的部署。我们将探讨不同选择的利弊以及最重要的挑选标准,以帮助您做出最佳决策。
想要在 Kubernetes 环境中将 NGINX Plus Ingress Controller 用作负载均衡器?想要通过 NGINX App Protect 保护您的应用?立即下载 30 天免费试用版 ,或与我们联系以讨论你的用例。