编辑– 这篇文章是10 篇系列文章的一部分:
您还可以下载完整的博客作为免费的电子书 -将 Kubernetes 从测试带到生产。
2020 年是我们大多数人永远不会忘记的一年。 学校、企业和公共服务的突然关闭使我们突然与社区隔绝,并对我们的安全和财务稳定产生了不确定性。 现在想象一下这件事发生在 2000 年,甚至 2010 年。 会有什么不同? 技术。 如果没有我们认为理所当然的高质量数字服务(医疗保健、流媒体视频、远程协作工具),疫情将会是截然不同的体验。 是什么让 2020 年的技术与过去几十年如此不同? 容器和微服务。
微服务架构(通常使用容器和Kubernetes )通过缩短数字体验的上市时间来促进业务增长和创新。 无论是与传统架构一起使用还是作为独立应用,这些现代应用技术都能实现卓越的可扩展性和灵活性、更快的部署,甚至节省成本。
2020 年之前,我们发现大多数客户已经开始采用微服务作为其数字化转型战略的一部分,但疫情真正加速了应用程序的现代化。 我们在 2020 年对 NGINX 用户的调查发现,60% 的受访者在生产中使用微服务,高于 2019 年的 40%,而且容器的受欢迎程度是其他现代应用技术的两倍多。
Kubernetes 是管理容器化应用的事实标准,云原生计算基金会 (CNCF) 的 2020 年调查证实了这一点,该调查发现 91% 的受访者正在使用 Kubernetes — 其中 83% 用于生产。 在采用 Kubernetes 时,许多组织已经做好了进行重大架构变革的准备,但却对大规模运行现代应用技术对组织的影响感到惊讶。 如果您正在运行 Kubernetes,那么您可能已经遇到了以下三个关键业务障碍:
CNCF 云原生交互式景观很好地说明了支持基于微服务的应用所需基础设施的复杂性。 组织需要熟练掌握各种不同的技术,其后果包括基础设施锁定、影子 IT、工具蔓延,以及负责维护基础设施的人员的陡峭的学习曲线。
与大多数组织问题一样,克服 Kubernetes 挑战的答案是技术和流程的结合。 在这篇文章的剩余部分中,我们将重点关注技术组件,但请密切关注未来有关流程和其他主题的博客。
由于 Kubernetes 是一项开源技术,因此有很多方法可以实现它。 虽然一些组织更喜欢推出自己的原始 Kubernetes,但许多组织发现 Amazon Elastic Kubernetes Service (EKS)、 Google Kubernetes Engine (GKE)、Microsoft Azure Kubernetes Service (AKS)、 Red Hat OpenShift Container Platform和Rancher等服务提供的灵活性、规范性和支持的组合很有价值。
Kubernetes 平台可以轻松启动和运行;但它们注重的是服务的广度而不是深度。 因此,虽然您可以在一个地方获得所需的所有服务,但它们不太可能提供真正大规模生产准备所需的功能集。 也就是说,他们不专注于高级网络和安全,这就是我们看到 Kubernetes 让许多客户失望的地方。
为了使 Kubernetes 达到生产级水平,你需要按以下顺序添加三个组件:
可扩展的入口出口层,用于将流量传入和传出集群
这是通过Ingress 控制器实现的,它是一种专门的负载均衡器,可以抽象出 Kubernetes 网络的复杂性并充当 Kubernetes 集群内服务与集群外部服务之间的桥梁。 当该组件包含可提高弹性(例如高级健康检查和 Prometheus 指标)、实现快速可扩展性(动态重新配置)和支持自助服务(基于角色的访问控制 [RBAC])的功能时,它就达到了生产级。
内置安全性可防范整个集群的威胁
虽然集群外部的“粗粒度”安全性可能就足够了,但集群内部却需要“细粒度”安全性。 根据集群的复杂程度,您可能需要在三个位置部署灵活的Web应用防火墙(WAF):在 Ingress 控制器上、作为每个服务代理以及作为每个 pod 代理。 这种灵活性使您能够对敏感应用程序(例如计费)应用更严格的控制,而对风险较低的应用程序应用更宽松的控制。
可扩展的东西向流量层,用于优化集群内的流量
一旦你的 Kubernetes应用的复杂性和规模超出了基本工具可以处理的程度,就需要这个第三个组件。 在此阶段,您需要一个服务网格,它是一种编排工具,可以为集群内的应用服务提供更细粒度的流量管理和安全性。 服务网格通常负责管理容器化应用之间的应用路由、提供和执行自主的服务到服务相互 TLS (mTLS) 策略,以及提供应用可用性和安全性的可见性。
选择这些组件时,请优先考虑可移植性和可见性。 与平台无关的组件可降低复杂性并提高安全性,您的团队需要学习和保护的工具更少,并且可以根据您的业务需求更轻松地转移工作负载。 可见性和监控的重要性无论怎样强调都不为过。 与 Grafana 和 Prometheus 等流行工具的集成可为您的基础设施创建统一的“单一玻璃窗格”视图,确保您的团队在客户发现问题之前就发现问题。 此外,还有其他补充技术,这些技术对于生产级 Kubernetes 来说并不是必需的,但却是现代应用程序开发不可或缺的一部分。 例如,当组织准备对传统应用程序进行现代化改造时,第一步就是使用 API 网关构建微服务。
我们的 Kubernetes 解决方案与平台无关,并包含实现生产级 Kubernetes 所需的三个组件: NGINX Ingress Controller作为入口出口层, NGINX App Protect作为 WAF, NGINX Service Mesh作为东西层。
这些解决方案可以在四个关键领域为您提供帮助,让 Kubernetes 成为您的最佳朋友:
NGINX Ingress Controller 提供30 天免费试用,其中包括 NGINX App Protect,可保护您的容器化应用程序。 我们建议添加始终免费的 NGINX Service Mesh(可在f5.com下载),以充分利用您的试用版。 今天,您可以将自己的许可证 (BYOL) 带到您选择的云中。
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”