Nginx服务网

2020-10-23 05:39:34

我们很高兴推出Nginx Service Mesh(NSM)的开发版本,这是一个完全集成的轻量级服务网格,它利用由Nginx Plus提供支持的数据平面来管理Kubernetes环境中的集装箱交通。NSM可免费下载。我们希望您能在您的开发和测试环境中试用它,并期待您对GitHub的反馈。

随着部署规模的扩大和变得更加复杂,采用微服务方法也面临挑战。服务之间的通信错综复杂,调试问题可能更加困难,更多的服务意味着更多的资源需要管理。

安全问题-安全现在比以往任何时候都更加关键。数据泄露每年会给组织造成数百万美元的收入和声誉损失。NSM确保所有通信都是mTLS加密的,这样就不会有敏感数据在网络上被黑客窃取。访问控制使您能够定义有关哪些服务可以相互通信的策略。

流量管理-在部署新版本的应用程序时,您可能希望首先限制它接收的流量,以防出现错误。使用NSM智能集装箱流量管理,您可以指定将流量限制为新服务并随时间缓慢增加的策略。速率限制和断路器等功能使您可以完全控制流经您的服务的流量。

可视化-管理数以千计的服务可能是调试和可见性的噩梦。NSM通过内置的Grafana仪表板帮助控制这一点,该仪表板显示了Nginx和Plus中提供的全套指标。此外,Open Tracking集成支持细粒度事务跟踪。

混合部署:如果您的企业和大多数企业一样,那么您的整个基础架构都不是在Kubernetes中运行的。NSM确保不会遗漏旧式应用程序。通过Nginx Kubernetes Inress Controller集成,传统服务可以与网状服务通信,反之亦然。

NSM通过对容器流量无缝应用加密和身份验证来保护零信任环境中的应用程序。它提供对事务的可观察性和洞察力,以帮助组织快速准确地部署和故障排除问题。它还提供细粒度流量控制,使DevOps团队能够部署和优化应用程序组件,同时支持开发团队构建和轻松连接其分布式应用程序。

NSM由用于东西(服务到服务)流量的统一数据平面和用于南北流量的Nginx Plus入口控制器的本机集成组成,由单个控制平面管理。

控制平面针对Nginx Plus数据平面进行了设计和优化,并定义了分配给Nginx Plus侧车的流量管理规则。

使用NSM,SideCar代理与网格中的每个服务一起部署。它们与以下开源解决方案集成:

Grafana-可视化普罗米修斯指标;内置的NSM仪表板可帮助您入门。

NAT-可扩展的消息传送平面,用于将消息(如路由更新)从控制平面传送到侧车。

Prometheus SideCar-从Nginx Plus SideCar收集和存储指标,如请求数、连接数和SSL握手数。

Nginx和Plus作为数据平面跨越SideCar代理(东西流量)和入口控制器(南北流量),同时拦截和管理服务之间的集装箱流量。其特点包括:

访问Kubernetes环境。多个Kubernetes平台支持Nginx Service Mesh,包括Amazon Elastic Container Service for Kubernetes Service(EKS)、Azure Kubernetes Service(AKS)、Google Kubernetes Engine(GKE)、VMware vSphere和独立裸机集群。

访问Nginx Service Mesh发布包。该包包含需要推送到Kubernetes集群可访问的私有容器注册表的NSM镜像。该软件包还包括用于部署NSM的nginx-meshctl二进制文件。

要使用默认设置部署NSM,请运行以下命令。在部署过程中,跟踪将确认成功部署网格组件,并最终确认NSM在其自己的命名空间中运行:

$DOKER_REGISTRY=您的-DOKER-REGISTRY;Mesh_VER=0.6.0;\ ./nginx-meshctl部署\ --nginx-esh-api-image";${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}";\ --nginx-Mesh-SideCar-Image";${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}";\ --nginx-esh-init-image";${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}";\ --nginx-Mesh-Metrics-Image";${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"; 已创建命名空间";nginx-esh";。 已创建SpiffeID CRD。 等待尖顶吊舱开始运转...完成。 展开尖顶。 已部署NATS服务器。 已创建流量策略CRD。 已部署网格API。 已部署指标API服务器。 已部署Prometheus Server nginx-Mesh/Prometheus-server。 已部署grafana nginx-esh/grafana。 已部署跟踪服务器nginx-esh/zipkin。 已创建所有资源。正在测试与Service Mesh API服务器的连接... 已成功接入Nginx Service Mesh API。 Nginx服务网状网正在运行。

要验证NSM控制平面是否在nginx-esh命名空间中正常运行,请运行以下命令:

$kubectl获取Pods-n nginx-Mesh 名称就绪状态重新启动时间 Grafana-6cc6958cd9-dccj6 1/1运行0 2d19h Mesh-api-6b95576c46-8npkb 1/1运行0 2d19h NAT-SERVER-6d5c57f894-225qn 1/1运行0 2d19h Prometheus-server-65c95b788b-zkt95 1/1运行0 2d19h Smi-metrics-5986dfb8d5-q6gfj 1/1运行0 2d19h SPIRE-AGENT-5cf87 1/1运行0 2d19h SPIRE-AGENT-rr2tt 1/1运行0 2d19h SPIRE-AGENT-vwjbv 1/1运行0 2d19h SPIRE-SERVER-0 2/2运行0 2d19h Zipkin-6f7cbf5467-ns6wc 1/1运行0 2d19h。

根据设置手动或自动注入策略的部署选项,默认情况下会将Nginx SideCar代理注入到已部署的应用程序中。要了解如何禁用自动注入,请参阅我们的文档。

例如,如果我们在默认命名空间中部署睡眠应用程序,然后检查Pod,我们会看到有两个容器正在运行-睡眠应用程序和关联的Nginx Plus SideCar:

$kubectl应用-f sleep.yaml $kubectl获取Pods-n默认值 名称就绪状态重新启动时间 睡眠-674f75ff4d-gxjf2 2/2运行时间为05h23m。

您还可以通过运行此命令将SideCar暴露给您的本地计算机,从而使用本机Nginx:Plus仪表板监视睡眠应用程序:

然后在浏览器中导航到http://localhost:8080/dashboard.html。您还可以连接到普罗米修斯服务器来监控睡眠应用程序。

您可以使用Kubernetes中的自定义资源配置访问控制、限速、断路等流量策略。有关详细信息,请参阅文档。

Nginx Service Mesh可在F5门户网站免费下载。请在您的开发和测试环境中试用它,并在GitHub上提交您的反馈。

要试用Nginx Plus入口控制器,请立即开始30天的免费试用,或联系我们讨论您的使用案例。