可用的 NGINX 服務網格

可用的 NGINX 服務網格

我們很高興推出預覽版本 NGINX 服務網格 (NSM),一個捆綁的輕量級服務網格,它使用基於 NGINX Plus 的資料平面來管理 Kubernetes 環境中的容器流量。

NSM 是免費的 在這裡下載。 我們希望您在開發和測試環境中嘗試 - 並期待您的反饋 在 GitHub 上.

隨著交付規模的擴大及其複雜性的增加,微服務方法的實施充滿了困難。 服務之間的通訊變得更加複雜,調試問題變得更加困難,越來越多的服務需要更多的資源來管理。

NSM 透過為您提供以下解決方案來解決這些問題:

  • 安全,現在比以往任何時候都更重要。 資料外洩每年會為公司帶來數百萬美元的收入和聲譽損失。 NSM 確保所有連線均使用 mTLS 加密,因此駭客不會透過網路竊取敏感資料。 存取控制可讓您設定服務如何與其他服務通訊的策略。
  • 交通管理。 發布應用程式的新版本時,您可能需要先限制傳入的流量,以防出現錯誤。 透過NSM的智慧容器流量管理,您可以為隨著時間的推移流量會增加的新服務設定流量限制策略。 其他功能(例如速度限制和斷路器)可讓您完全控制所有服務的流量。
  • 可視化。 管理數千個服務可能是調試和視覺化的噩夢。 NSM 透過內建的 Grafana 儀表板來幫助處理這種情況,該儀表板顯示 NGINX Plus 中的所有可用功能。 而且實施的開放追蹤允許您詳細監控交易。
  • 混合交付,如果您的公司與大多數其他公司一樣,不使用完全在 Kubernetes 上運行的基礎設施。 NSM 確保遺留應用程式不會無人看管。 在實施的 NGINX Kubernetes Ingress Controller 的幫助下,遺留服務將能夠與網格服務進行通信,反之亦然。

NSM 還透過透明地對容器流量應用加密和身份驗證來確保零信任環境中的應用程式安全。 它還提供事務視覺和分析,幫助您快速且準確地啟動部署並解決問題。 它還提供精細的流量控制,允許 DevOps 團隊部署和優化部分應用程序,同時使開發人員能夠建置並輕鬆連接其分散式應用程式。

NGINX 服務網格如何運作?

NSM 由用於水平(服務到服務)流量的統一資料平面和用於垂直流量的嵌入式 NGINX Plus 入口控制器組成,由單一控制平面管理。

控制平面專為 NGINX Plus 資料平面設計和最佳化,並定義分佈在 NGINX Plus sidecar 上的流量控制規則。

在 NSM 中,為網格中的每個服務安裝了 sidecar 代理程式。 它們與以下開源解決方案互動:

  • Grafana、Prometheus參數視覺化,內建NSM面板幫助您工作;
  • Kubernetes 入口控制器,用於管理網格中的傳入和傳出流量;
  • SPIRE,CA,用於管理、分發和更新網格中的憑證;
  • NATS,可擴展的系統,用於從控制平面向 sidecar 發送訊息(例如路由更新);
  • 開放Tracing,分散式調試(支援Zipkin和Jaeger);
  • Prometheus 收集並儲存 NGINX Plus sidecar 的特徵,例如請求數、連線數和 SSL 握手數。

功能和組件

NGINX Plus 作為資料平面涵蓋 sidecar 代理(水平流量)和 Ingress 控制器(垂直),攔截和管理服務之間的容器流量。

特點包括:

  • 相互 TLS (mTLS) 身份驗證;
  • 負載平衡;
  • 容錯;
  • 限速;
  • 斷路;
  • 藍綠色和金絲雀部署;
  • 訪問控制。

啟動 NGINX 服務網格

要運行 NSM,您需要:

  • 造訪 Kubernetes 環境。 許多 Kubernetes 平台支援 NGINX Service Mesh,包括 Amazon Elastic Container Service for Kubernetes (EKS)、Azure Kubernetes Service (AKS)、Google Kubernetes Engine (GKE)、VMware vSphere 以及部署在硬體伺服器上的常規 Kubernetes 叢集;
  • 工具 kubectl,安裝在將安裝 NSM 的電腦上;
  • 存取 NGINX Service Mesh 發行包。 該套件包含上傳到 Kubernetes 叢集中可用容器的私人註冊表所需的 NSM 映像。 該包裝還包含 nginx-meshctl,需要部署 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

檢查控制平面在命名空間中是否正常運作 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 sidecars 代理程式將預設添加到應用程式中。 若要停用自動新增,請閱讀 這裡

例如,如果我們部署應用程式 睡覺 在命名空間中 默認,然後檢查 Pod - 我們將看到兩個正在運行的容器,即應用程式 睡覺 以及相關的邊車:

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

我們還可以監控應用程式 睡覺 在 NGINX Plus 面板中,執行以下命令以從本機電腦存取 sidecar:

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

然後我們就進去 這裡 在瀏覽器中。 還可以連接Prometheus來監控應用程式 睡覺.

您可以使用單一 Kubernetes 資源來設定流量策略,例如存取控制、限速、熔斷等,具體請參閱 文件

結論

NGINX Service Mesh 可免費下載: 傳送門F5。 在您的開發和測試環境中嘗試一下 寫信告訴我們結果.

若要嘗試 NGINX Plus Ingress Controller,請激活 免費試用期 30 天,或 聯繫我們 討論您的用例。

公司工程師 Pavel Demkovich 翻譯 南橋。 系統管理費每月 15 盧布。 作為一個單獨的部門 - 訓練中心 泥漿,練習,除了練習之外別無其他。

來源: www.habr.com

添加評論