NGINX Service Mesh (NSM)

Wesley13
• 阅读 358

NGINX Service Mesh (NSM)

此版本 NGINX Service Mesh (NSM) 是一个高度集成的轻量级的服务网格的开发版本,它利用 NGINX Plus 支持的数据平面来管理 Kubernetes 环境中的容器流量。NSM 可以免费 下载。非常希望广大开发者们能在开发和测试环境中尝试一下,期待你们在 GitHub 仓库留下对 NSM 的反馈。

随着部署规模的扩大并且变得越来越复杂,微服务的落地也变得很有挑战。服务之间的通信错综复杂,在系统中调试问题可能会更加困难,并且服务增多意味着需要管理更多的资源。

NSM 通过使用户集中配置来解决以上挑战:

  • 安全——如今安全比以往任何时候都更加重要,数据泄露每年可能使组织损失数百万美元的收入和声誉。NSM 确保所有通信均经过 mTLS 加密,因此网络上没有敏感数据可被黑客窃取。通过访问控制可以定义策略来控制哪些服务可以相互通信。
  • 流量管理——在部署应用程序的一个新版本时,用户可能希望先限制新版本应用程序接收的流量,以防可能存在 bug。使用 NSM 智能容器流量管理,用户可以指定限制流量到新服务的策略,并随着时间的推移逐渐增加流量。限流和断路器等功能使用户可以完全控制流经服务的流量。
  • 可视化——管理数千个服务对于调试和可见性可能是一个噩梦。NSM 通过内置的 Grafana 仪表板在 NGINX Plus 中显示可用的全套指标来帮助用户解除这个噩梦。此外,Open Tracing 的集成实现了细粒度的事务跟踪。
  • 混合部署——如果用户的企业像大多数企业一样,整个基础架构不完全在 Kubernetes 中运行。NSM 确保不会遗漏运行在 Kubernetes 以外的应用程序。通过 NGINX Kubernetes Ingress Controller 集成,它们务可以与网格服务通信,反之亦然。

NSM 通过将加密和身份验证无缝应用于容器流量来确保零信任环境中的应用程序安全。它具有对进出流量的可观察性和洞察力,来帮助用户快速准确地部署和解决问题。它还提供了细粒度的流量控制,使 DevOps 团队可以部署和优化应用程序组件,同时使 Dev 团队可以构建并轻松连接其分布式应用程序。

什么是 NGINX 服务网格?

NSM 有一个用于东西向(服务到服务)流量的统一数据平面,以及一个本地集成的用于南北向流量的 NGINX Plus 入口控制器,它由单独的一个控制平面进行管理。

控制平面是为 NGINX Plus 数据平面设计和优化的,并定义了分配给 NGINX Plus sidecar 容器的流量管理规则。

NGINX Service Mesh (NSM)

NGINX 服务网格架构图

通过 NSM,sidecar 容器代理与网格中的每个服务一同部署,它们与以下开源解决方案集成:

  • Grafana —— Prometheus 指标的可视化;内置的 NSM 仪表板可帮助您入门•
  • Kubernetes Ingress controllers ——管理网格的入口和出口流量•
  • SPIRE ——证书颁发机构,用于管理,分发和轮换网格的证书•
  • NATS ——可伸缩的消息传递平面,用于从控制平面向 sidecar 容器传递消息,例如路由更新•
  • Open Tracing ——分布式跟踪(同时支持 Zipkin 和 Jaeger)•
  • Prometheus ——从 NGINX Plus sidecar 容器中收集和存储指标,例如请求数,连接数和 SSL 握手数。

功能和组件

NGINX Plus 作为数据平面跨越了 sidecar 代理(东西方流量)和入口控制器(南北流量),同时拦截和管理服务容器之间的流量。功能包括:

  • TLS (mTLS) 身份验证•
  • 负载均衡•
  • 高可用性•
  • 限速•
  • 熔断•
  • 蓝绿和金丝雀部署•
  • 访问控制

NGINX 服务网格入门

要开始使用 NSM,您首先需要:

•有一个可以访问的 Kubernetes 环境。NGINX Service Mesh 可以支持多个 Kubernetes 平台,包括 Amazon Kubernetes 弹性容器服务 (EKS),Azure Kubernetes 服务 (AKS),Google Kubernetes 引擎 (GKE),VMware vSphere 和独立的裸机群集。•在要安装 NSM 的机器上安装 kubectl 命令行程序。•下载 NGINX Service Mesh 发布包。该软件包包括 NSM 镜像,需要将镜像上传到 Kubernetes 集群可访问的私有容器仓库中。该软件包还包括用于部署 NSM 的 nginx-meshctl 二进制文件。

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

$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0; \

对于其他命令选项,包括非默认设置,请运行:

$ nginx-meshctl deploy –h

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

$ kubectl get pods –n nginx-mesh

根据设置手动或自动注入策略的部署选项,默认情况下,NGINX sidecar 代理会注入已部署的应用程序中。要了解如何禁用自动注入,请参阅我们的 文档。例如,如果我们将 sleep 应用程序部署在默认名称空间中,然后检查 Pod,我们会看到两个容器正在运行—— sleep 应用程序和关联的 NGINX Plus sidecar 容器:

$ kubectl apply –f sleep.yaml 

您还可以通过运行以下命令以将 sidecar 暴露到本地,从而使用 本地 NGINX Plus 仪表板 监视 sleep 应用程序:

$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886

然后在浏览器中导航到 http://localhost:8080/dashboard.html 您还可以连接到 Prometheus 服务器以监视 sleep 应用程序。

您可以在 Kubernetes 中使用自定义资源来配置流量策略,例如访问控制,速率限制和熔断。有关更多信息,请参见 文档。

总结

NGINX Service Mesh 可从 F5 portal 免费下载。请在您的开发和测试环境中试用,然后在 GitHub 上提交您的反馈。要试用 NGINX Plus Ingress Controller,请立即开始 30 天免费试用,或与我们联系以讨论您的应用用例。

引用链接

[1] NGINX Plus: https://www.nginx.com/products/nginx/
[2] 下载: https://downloads.f5.com/
[3] 文档: https://docs.nginx.com/nginx-service-mesh/usage/inject-sidecar-proxy/
[4] 本地 NGINX Plus 仪表板: https://www.nginx.com/products/nginx/live-activity-monitoring
[5] 文档: https://docs.nginx.com/nginx-service-mesh/
[6] F5 portal: https://login.f5.com/resource/login.jsp?ctx=719748
[7] GitHub: https://github.com/nginxinc/nginx-service-mesh/issues

点赞
收藏
评论区
推荐文章
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
技术小男生 技术小男生
5个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
天翼云高可用虚拟IP(HAVIP)实践
(一)产品概述天翼云高可用虚拟IP(HighAvailabilityVirtualIPAddress,简称HAVIP)是一种可用独立创建和删除的私有网络IP地址资源。通过在VIPCIDR中申请一个私有网络IP地址,然后与高可用软件(如高可用软件Keepalived)配合使用,可用在VPC中搭建高可用的主备集群服务,提高VPC中服务的可用性。限制和说明
一个关于SDWAN单臂部署方案验证的实验
假设有这样一张网络,其中RTA和PCA表示某公司的A分支,通过中国电信CT路由器接入互联网ISP;RTB和PCB表示某公司的B分支,通过中国联通CU路由器接入互联网ISP。DNS(8.8.8.8)表示某互联网应用。为实现A分支私网192.168.2.0/24和B分支私网192.168.3.0/24的互通,现计划使用某厂商的SDWAN方案进打通两个内网,像下图
高性能API网关Kong介绍
本文关键词:高性能、API网关、Kong、微服务1.Introduction是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(Allinone)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管
SPDK对接Ceph性能优化
关键词:SPDK、NVMeOF、Ceph、CPU负载均衡SPDK是intel公司主导开发的一套存储高性能开发套件,提供了一组工具和库,用于编写高性能、可扩展和用户态存储应用。它通过使用一些关键技术实现了高性能:1.将所有必需的驱动程序移到用户空间,以避免系统调用并且支持零拷贝访问2.IO的完成通过轮询硬件而不是依赖中断,以降低时延3.使用消息传递,以避免IO
3A网络 3A网络
5个月前
理解 virt、res、shr 之间的关系(linux 系统篇)
理解virt、res、shr之间的关系(linux系统篇)前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过t
3A网络 3A网络
5个月前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
开发一个不需要重写成HiveQL的大数据SQL引擎学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。各种知识表象看杂乱无章,若只是学习
初识DevOps
基本概念和延伸的思考DevOps,是Development(开发)和Operations(运维)组成的复合词,一般译为“开发运维一体化”。看到这个概念,首先会产生几个问题:开发是什么,哪些环节是开发?运维是什么,哪些环节是运维?开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?系统故障后,运维人员发现是配置文件内容出错了就改成了正
SPDK QOS机制解析
本文关键词:intelspdkbdevqos序:intelspdk软件在存储领域应用广泛。因其可以高效管理linux系统的nvmessd盘,又支持vhostuser协议可以对接qemu虚拟机,在云计算领域通常被用来做本地盘云主机的存储管理软件。如此优秀的一款软件,有必要仔细分析其内部的实现机制,本篇文章主要介绍spdkqos机制。spdk