NGINX.COM

过去几年,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 请求。非常期望与您携手开发下一代现代自适应且“可搬运”的应用,供社区和所有开发人员使用。

Hero image
免费白皮书:
NGINX 企阅版全解析

助力企业用户规避开源治理风险,应对开源使用挑战

关于作者

Damian Curry

Solutions Architect

关于作者

Elijah Zupancic

Solution Architect

关于 F5 NGINX

F5, Inc. 是备受欢迎的开源软件 NGINX 背后的商业公司。我们为现代应用的开发和交付提供一整套技术。我们的联合解决方案弥合了 NetOps 和 DevOps 之间的横沟,提供从代码到用户的多云应用服务。访问 nginx-cn.net 了解更多相关信息。