BLOG | NGINX

全新开源的现代应用参考架构

NGINX-Part-of-F5-horiz-black-type-RGB
Damian Curry 缩略图
Damian Curry
Published August 24, 2021
Elijah Zupancic 缩略图
Elijah Zupancic
Published August 24, 2021

过去几年,NGINX 一直在讨论打造真正的现代自适应(即可移植、云原生、弹性、可扩展和易于更新)的应用的必要性。最近出现了两个新兴概念,大大方便了现代应用的创建和交付。第一个概念是“平台运营”,在该模式中,企业级平台团队将管理、维护、连接及保护开发团队和 DevOps 团队完成工作所需的所有工具。第二个是“左移”,是指在应用开发生命周期的早期阶段集成生产级安全性、网络和监控功能。开发人员最终将对原本由 ITOps 负责的功能承担更多责任,但与此同时也会在实施这些功能方面拥有更多选择和自主性。

虽然这些听起来很不错,但真正实施起来却困难重重。一方面,越来越多的应用以高度分布的方式部署在容器化环境中并使用 Kubernetes 编排引擎(各种类型的 Kubernetes 编排引擎数量不断增长)。公司还希望将应用部署在多个环境中,且不会被各个云之间以及云与本地环境之间的差异所干扰。

现代应用的“黄金镜像”

像之前一样,我们的客户和社区不断请求我们帮助他们解决面临的挑战,他们想将所有优势尽收囊中。然而,将安全防护、网络、可观察性和性能监控、应用扩展等所有特性结合在一起并不容易。即使平台能够集成所有这些特性,但要完全满足生产环境要求还需要更多的工作。他们想知道:“为什么现代应用没有让我们可以从单个存储库启动的‘黄金镜像’?”

这个问题问得好。我们把它看作是自己的挑战,并积极思考解决方法。首先,我们把这个问题具体化。我们认为客户和社区的意思是:“你们能否帮助我们将不同的软件产品集成为一个更紧密的整体,调整堆栈以确定合适的配置和设置,并帮助我们减少工作和问题?你们能否简化不同云环境中应用的管理,且不必因底层服务和功能的不同而进行重大配置变更?”

我们认为,能够真正解决这些问题的解决方案将能惠及整个社区,而不仅仅是我们的几百家企业合作伙伴和所有主要云厂商,这是真正的互利共赢。理想情况下,这不应是一款随随便便得出的解决方案,而应该是稳定可靠、经过测试且可以部署到 Kubernetes 环境中运行的实时生产应用中的代码。坦白说,我们希望任何人都能直接从 GitHub 搬运我们的解决方案。

话不多说,今天我们将在 NGINX Sprint 2.0 大会上宣布推出我们的解决方案:现代应用参考架构的第一次迭代,这是现代应用的开源架构和部署模型。希望大家喜欢它,随便用、随便搬,要是能修改或拆分它进行改进或定制就更好了!本文介绍了我们构建的产品及其工作原理。

NGINX-Modern-Apps-Ref-Arch-2021_marketecture
NGINX 现代应用参考架构

定义现代自适应应用

首先,我们来定义理想的现代自适应应用。它可能是由微服务组成的容器化应用 —— 并且可能遵循云原生设计原则(松散耦合、易于扩展、独立于基础架构),但这不是必要条件。现代应用架构的一大设计原则是,专门为利用基础架构抽象的优势而设计。这个定义虽然简单,但却十分重要,因为它为所有参考架构建立了基本模板。

现代应用架构的关键支柱包括可移植性、可扩展性、弹性和敏捷性。

  • 可移植性 —— 可以轻松将应用部署到多种类型的设备、基础架构、公有云中以及本地。
  • 可扩展性 —— 应用可以快速无缝地扩展或缩减,以适应世界各地需求的骤变。
  • 弹性 —— 应用可以顺利故障转移到不同的可用区域、云或数据中心中新启动的集群或虚拟环境。
  • 敏捷性 —— 应用可以通过自动化 CI/CD 流水线快速更新;在现代应用环境中,这也意味着更快的代码编写速度和更频繁的代码推送。

如何部署代码

如要安装和部署示例应用,您只需发出一个命令来调用 startup 脚本,之后以下 Pulumi 项目将按照指示的顺序执行。每个项目名称都映射到相对于存储库根目录的目录名称。如欲了解详细信息,请查看 README

vpc - Defines and installs VPC and subnets to use with EKS  └─eks - Deploys EKS
    └─ecr - Configures ECR for use in EKS cluster
      └─kic-image-build - Builds new NGINX Ingress Controller image
        └─kic-image-push - Pushes image built in previous step to ECR
          └─kic-helm-chart - Deploys NGINX Ingress Controller to EKS cluster
            └─logstore - Deploys Elastic log store to EKS cluster
              └─logagent - Deploys Elastic (filebeat) logging agent to EKS cluster
               └─certmgr - Deploys cert-manager.io Helm chart to EKS cluster
                 └─anthos - Deploys Bank of Anthos application to EKS cluster

版本 2 拥有更高集成度和灵活性

我们认识到,我们的第一个版本可能无法为您的 Kubernetes 环境提供所需的所有集成。平台运营的灵魂就是智能(但不是无限)选择。为了让平台运营、DevOps 和开发者团队能够更轻松地试用并采用我们的全新参考平台,我们计划在近期进行大量功能改进,包括:

我们希望我们的平台可以为其他参考平台提供一个框架,并成为构建各种不同类型的现代应用的首选。Kubernetes 是一种强大的机制,既可以用于构建现代应用,也可以支持平台运营和左移文化,因此我们的参考架构的可扩展性和可插拔性越高,效果就越好。我们很期待听到社区的朋友们对我们平台的看法以及您的成功案例。

开始使用参考架构

欢迎下载并试用我们的参考平台。如果您有任何想法或者对我们未来版本的开发有任何建议,请告诉我们。欢迎您发出 Pull 请求。非常期望与您携手开发下一代现代自适应且“可搬运”的应用,供社区和所有开发人员使用。


"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."