NGINX Full Version

NGINX 服务网格简介

编者按:有关 NGINX 先前服务网格解决方案 – nginMesh(现在由社区提供支持)的博文现已重定向到此处。阅读下文,以了解我们当前的解决方案 – NGINX 服务网格。

很高兴推出 NGINX 服务网格(NSM)开发版,这是一个全面集成的轻量级服务网格,利用由 NGINX Plus提供支持的数据平面管理 Kubernetes 环境中的容器流量。NSM 可免费下载。欢迎您在开发和测试环境中试用该解决方案,并期待您在 GitHub 上提交反馈

随着部署规模的扩大和复杂性的提高,组织在采用微服务方法方面面临诸多挑战。由于服务之间的通信错综复杂,故障排除可能会变得更加棘手,并且更多的服务意味着更多的资源需要管理。

NSM 能够帮助您有效解决这些问题,支持您集中配置:

NSM通过将加密和身份验证无缝应用于容器流量来确保零信任环境中的应用程序安全。它提供对事务的监控和洞察,可帮助组织快速、准确地发现和解决问题。它还提供细粒度的流量控制,支持 DevOps 团队部署和优化应用组件,同时支持 Dev 团队构建并轻松连接分布式应用。

什么是 NGINX 服务网格?

NSM 包含一个面向东西向(服务到服务) 流量的统一数据平面,以及对面向南北向流量的 NGINX Plus Ingress 控制器的原生集成功能,两者由单个控制平面进行管理。

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

借助 NSM,sidecar 代理能够与网格中的每项服务一起部署。sidecar 代理还可以与以下开源解决方案相集成:

特性和组件

NGINX Plus 作为数据平面跨越 sidecar 代理(东西向流量)和 Ingress 控制器(南北向流量),可拦截和管理服务之间的容器流量。特性包括:

NGINX 服务网格入门

在使用 NSM 之前,您需要:

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

$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ; \
 ./nginx-meshctl deploy  \
  --nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}" \
  --nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}" \
  --nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}" \
  --nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...
 
Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.

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

$ nginx-meshctl deploy –h

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

$ kubectl get pods –n nginx-mesh
NAME                                 READY   STATUS    RESTARTS   AGE
grafana-6cc6958cd9-dccj6             1/1     Running   0          2d19h
mesh-api-6b95576c46-8npkb            1/1     Running   0          2d19h
nats-server-6d5c57f894-225qn         1/1     Running   0          2d19h
prometheus-server-65c95b788b-zkt95   1/1     Running   0          2d19h
smi-metrics-5986dfb8d5-q6gfj         1/1     Running   0          2d19h
spire-agent-5cf87                    1/1     Running   0          2d19h
spire-agent-rr2tt                    1/1     Running   0          2d19h
spire-agent-vwjbv                    1/1     Running   0          2d19h
spire-server-0                       2/2     Running   0          2d19h
zipkin-6f7cbf5467-ns6wc              1/1     Running   0          2d19h

根据设置手动或自动注入策略的部署选项,NGINX sidecar代理默认情况下会注入已部署的应用程序中。如欲了解如何禁用自动注入,请查看文档

例如,如果我们将睡眠应用部署在默认的名称空间中,然后检查 Pod,则会看到两个容器正在运行,即睡眠应用和关联的 NGINX Plus sidecar:

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME                     READY   STATUS    RESTARTS   AGE
sleep-674f75ff4d-gxjf2   2/2     Running   0          5h23m

您还可以通过运行以下命令,向本地机器暴露 sidecar,从而使用 NGINX Plus 本地仪表盘监控睡眠应用:

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

然后在浏览器中导航到 http://localhost:8080/dashboard.html。您还可以连接到 Prometheus 服务器,以监控睡眠应用。

您可以使用 Kubernetes 中的自定义资源来配置流量策略,例如访问控制、速率限制和断路。如欲了解更多信息,请查看文档

总结

NGINX 服务网格可从 F5 门户免费下载。欢迎您在开发和测试环境中试用该解决方案,并在 GitHub 上提交反馈

如欲试用NGINX Plus Ingress Controller,请立即下载 30 天免费试用版与我们联系以讨论您的用例