NGINX Service Mesh (NSM) -服務網格簡介

此版本 NGINX Service Mesh (NSM) 是一個高度集成的輕量級的服務網格的開發版本,它利用 NGINX Plus 支持的數據平面來管理 Kubernetes 環境中的容器流量。NSM 能夠免費 下載。很是但願廣大開發者們能在開發和測試環境中嘗試一下,期待大家在 GitHub 倉庫留下對 NSM 的反饋。html

隨着部署規模的擴大而且變得愈來愈複雜,微服務的落地也變得頗有挑戰。服務之間的通訊錯綜複雜,在系統中調試問題可能會更加困難,而且服務增多意味着須要管理更多的資源。nginx

NSM 經過使用戶集中配置來解決以上挑戰:git

  • 安全——現在安全比以往任什麼時候候都更加劇要,數據泄露每一年可能使組織損失數百萬美圓的收入和聲譽。NSM 確保全部通訊均通過 mTLS 加密,所以網絡上沒有敏感數據可被黑客竊取。經過訪問控制能夠定義策略來控制哪些服務能夠相互通訊。
  • 流量管理——在部署應用程序的一個新版本時,用戶可能但願先限制新版本應用程序接收的流量,以防可能存在 bug。使用 NSM 智能容器流量管理,用戶能夠指定限制流量到新服務的策略,並隨着時間的推移逐漸增長流量。限流和斷路器等功能使用戶能夠徹底控制流經服務的流量。
  • 可視化——管理數千個服務對於調試和可見性多是一個噩夢。NSM 經過內置的 Grafana 儀表板在 NGINX Plus 中顯示可用的全套指標來幫助用戶解除這個噩夢。此外,Open Tracing 的集成實現了細粒度的事務跟蹤。
  • 混合部署——若是用戶的企業像大多數企業同樣,整個基礎架構不徹底在 Kubernetes 中運行。NSM 確保不會遺漏運行在 Kubernetes 之外的應用程序。經過 NGINX Kubernetes Ingress Controller 集成,它們務能夠與網格服務通訊,反之亦然。

NSM 經過將加密和身份驗證無縫應用於容器流量來確保零信任環境中的應用程序安全。它具備對進出流量的可觀察性和洞察力,來幫助用戶快速準確地部署和解決問題。它還提供了細粒度的流量控制,使 DevOps 團隊能夠部署和優化應用程序組件,同時使 Dev 團隊能夠構建並輕鬆鏈接其分佈式應用程序。github

什麼是 NGINX 服務網格?

NSM 有一個用於東西向(服務到服務)流量的統一數據平面,以及一個本地集成的用於南北向流量的 NGINX Plus 入口控制器,它由單獨的一個控制平面進行管理。api

控制平面是爲 NGINX Plus 數據平面設計和優化的,並定義了分配給 NGINX Plus sidecar 容器的流量管理規則。瀏覽器

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  \--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}"Creatednamespace"nginx-mesh".CreatedSpiffeID CRD.WaitingforSpire pods to be running...done.DeployedSpire.Deployed NATS server.Created traffic policy CRDs.DeployedMesh API.DeployedMetrics API Server.DeployedPrometheusServer nginx-mesh/prometheus-server.DeployedGrafana nginx-mesh/grafana.Deployed tracing server nginx-mesh/zipkin.All resources created.Testing the connection to the ServiceMesh API Server...Connected to the NGINX ServiceMesh API successfully.NGINX ServiceMeshis running.

對於其餘命令選項,包括非默認設置,請運行:

$ nginx-meshctl deploy –h

要驗證 NSM 控制平面在 nginx-mesh 命名空間中是否正常運行,請運行:

$ kubectl get pods –n nginx-meshNAME                                 READY   STATUS    RESTARTS   AGEgrafana-6cc6958cd9-dccj6             1/1Running02d19hmesh-api-6b95576c46-8npkb1/1Running02d19hnats-server-6d5c57f894-225qn1/1Running02d19hprometheus-server-65c95b788b-zkt95   1/1Running02d19hsmi-metrics-5986dfb8d5-q6gfj         1/1Running02d19hspire-agent-5cf871/1Running02d19hspire-agent-rr2tt                    1/1Running02d19hspire-agent-vwjbv                    1/1Running02d19hspire-server-02/2Running02d19hzipkin-6f7cbf5467-ns6wc              1/1Running02d19h

根據設置手動或自動注入策略的部署選項,默認狀況下,NGINX sidecar 代理會注入已部署的應用程序中。要了解如何禁用自動注入,請參閱咱們的 文檔。例如,若是咱們將 sleep 應用程序部署在默認名稱空間中,而後檢查 Pod,咱們會看到兩個容器正在運行—— sleep 應用程序和關聯的 NGINX Plus sidecar 容器:

$ kubectl apply –f sleep.yaml$ kubectl get pods –n defaultNAME                     READY   STATUS    RESTARTS   AGEsleep-674f75ff4d-gxjf2   2/2Running05h23m

您還能夠經過運行如下命令以將 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

相關文章
相關標籤/搜索