NGINX Service Mesh è disponibile

NGINX Service Mesh è disponibile

Siamo lieti di presentare la versione preliminare NGINX Service Mesh (NSM), una service mesh leggera che utilizza un data plane basato su NGINX Plus per gestire il traffico dei contenitori in ambienti Kubernetes.

NSM è disponibile gratuitamente scaricarlo qui. Speriamo che tu voglia provarlo per ambienti di sviluppo e test — e attendiamo il tuo feedback. su GitHub.

L'implementazione della metodologia dei microservizi comporta difficoltà con l'aumento delle dimensioni delle consegne e la loro complessità. La comunicazione tra i servizi diventa più complicata, i problemi di debugging diventano più difficili e un numero crescente di servizi richiede più risorse per la gestione.

NSM affronta queste problematiche offrendoti innanzitutto:

  • Sicurezza, che è ora più importante che mai. Una violazione dei dati può costare all'azienda milioni di dollari ogni anno in perdita di entrate e reputazione. NSM garantisce la crittografia di tutte le connessioni tramite mTLS — quindi i dati sensibili che potrebbero essere rubati dagli hacker in rete non esistono. Il controllo degli accessi ti consente di definire politiche su come i servizi comunicheranno tra loro.
  • Gestione del traffico. Quando distribuisci una nuova versione dell'applicazione, potresti voler iniziare limitando il traffico in entrata nel caso si verifichi un errore. Grazie alla gestione intelligente del traffico dei contenitori di NSM, puoi impostare una politica di limitazione del traffico per i nuovi servizi, che aumenterà progressivamente il traffico nel tempo. Altre funzionalità, come la limitazione della velocità e i circuit breaker, ti offrono il pieno controllo sulla gestione del traffico per tutti i tuoi servizi.
  • Visualizzazione. Gestire migliaia di servizi può essere un incubo dal punto di vista del debugging e della visualizzazione. NSM ti aiuta a gestire questa situazione con un dashboard integrato in Grafana, dove sono visualizzate tutte le metriche disponibili in NGINX Plus. Inoltre, l'implementazione di Open Tracing consente di monitorare in dettaglio le transazioni.
  • Consegne ibride, se la tua azienda, come la maggior parte delle altre, non utilizza un'infrastruttura completamente basata su Kubernetes. NSM garantisce che le vecchie applicazioni non vengano trascurate. Grazie al NGINX Kubernetes Ingress Controller integrato, i servizi legacy potranno comunicare con i servizi mesh e viceversa.

NSM fornisce anche sicurezza delle applicazioni in ambienti a fiducia zero, applicando in modo trasparente la crittografia e l'autenticazione del traffico dei container. Inoltre, offre la possibilità di monitorare e analizzare le transazioni, aiutando a avviare rapidamente e con precisione le distribuzioni e a risolvere i problemi. Inoltre, viene fornito un controllo dettagliato del traffico, consentendo ai team DevOps di distribuire e ottimizzare parti delle applicazioni, dando al contempo la possibilità agli sviluppatori di creare e connettere facilmente le loro applicazioni distribuite.

Come funziona NGINX Service Mesh?

NSM è composto da un data plane unificato per il traffico orizzontale (servizio a servizio) e un NGINX Plus Ingress Controller integrato per il traffico verticale, gestiti da un unico control plane.

Il control plane è specificamente progettato e ottimizzato per il data plane di NGINX Plus, definendo le regole di gestione del traffico distribuite tra i sidecar di NGINX Plus.

In NSM, i proxy sidecar sono impostati per ogni servizio nella mesh. Interagiscono con le seguenti soluzioni open source:

  • Grafana, visualizzazione delle metriche di Prometheus, il pannello integrato di NSM ti aiuta nel lavoro;
  • Kubernetes Ingress Controllers, per gestire il traffico in entrata e in uscita nella mesh;
  • SPIRE, CA per la gestione, distribuzione e aggiornamento dei certificati nella mesh;
  • NATS, un sistema di messaggistica scalabile, ad esempio aggiornamenti delle rotte, dal control plane ai sidecar;
  • Open Tracing, debug distribuito (supporta Zipkin e Jaeger);
  • Prometheus, raccolta e memorizzazione delle metriche dai sidecar di NGINX Plus, come il numero di richieste, connessioni e SSL handshakes.

Funzioni e componenti

NGINX Plus come data plane comprende proxy sidecar (traffico orizzontale) e Ingress controller (traffico verticale), intercettando e gestendo il traffico tra i container.

Le funzioni includono:

  • Autenticazione reciproca TLS (mTLS);
  • Bilanciamento del carico;
  • Resilienza;
  • Limitazione della velocità;
  • Circuit breaking;
  • Distribuzioni blu-verdi e canarino;
  • Controllo degli accessi.

Avvio di NGINX Service Mesh

Per avviare NSM è necessario:

  • accesso all'ambiente Kubernetes. NGINX Service Mesh è supportato su molte piattaforme Kubernetes, inclusi Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere e cluster Kubernetes standard distribuiti su server "bare metal";
  • Strumento kubectl, installato sulla macchina da cui verrà installato NSM;
  • Accesso ai pacchetti delle versioni NGINX Service Mesh. Il pacchetto contiene le immagini NSM necessarie per il deployment in un registro privato per contenitori, accessibile nel cluster Kubernetes. Il pacchetto include anche nginx-meshctl, necessario per il deployment di NSM.

Per eseguire il deployment di NSM con le impostazioni predefinite, esegui il seguente comando. Durante il deployment vengono visualizzati messaggi sull'avvenuta installazione dei componenti e, infine, un messaggio che indica che NSM è in esecuzione in uno spazio dei nomi separato (prima dovrai scaricare e caricarlo nel registro, nota del traduttore):

$ DOCKER_REGISTRY=tuo-registro-Docker ; 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}"
Creato lo spazio dei nomi "nginx-mesh".
Creata la SpiffeID CRD.
In attesa che i pod Spire siano in esecuzione... fatto.
Spire installato.
Server NATS installato.
Create le CRD delle politiche di traffico.
API Mesh installata.
Server API Metrics installato.
Server Prometheus nginx-mesh\/prometheus-server installato.
Grafana nginx-mesh\/grafana installata.
Server di tracing nginx-mesh\/zipkin installato.
Tutte le risorse create. Collaudo della connessione al Server API Service Mesh...

Connesso con successo all'API NGINX Service Mesh.
NGINX Service Mesh è in esecuzione.

Per ulteriori parametri, inclusi settaggi avanzati, esegui questo comando:

$ nginx-meshctl deploy –h

Per verificare che il control plane funzioni correttamente nello spazio dei nomi nginx-mesh, puoi farlo in questo modo:

$ kubectl get pods –n nginx-mesh
NOME                                 PRONTO   STATO    RIAVVII   ETÀ
grafana-6cc6958cd9-dccj6             1\/1     Esecuzione   0          2d19h
mesh-api-6b95576c46-8npkb            1\/1     Esecuzione   0          2d19h
nats-server-6d5c57f894-225qn         1\/1     Esecuzione   0          2d19h
prometheus-server-65c95b788b-zkt95   1\/1     Esecuzione   0          2d19h
smi-metrics-5986dfb8d5-q6gfj         1\/1     Esecuzione   0          2d19h
spire-agent-5cf87                    1\/1     Esecuzione   0          2d19h
spire-agent-rr2tt                    1\/1     Esecuzione   0          2d19h
spire-agent-vwjbv                    1\/1     Esecuzione   0          2d19h
spire-server-0                       2\/2     Esecuzione   0          2d19h
zipkin-6f7cbf5467-ns6wc              1\/1     Esecuzione   0          2d19h

A seconda delle impostazioni di deployment che stabiliscono politiche di iniezione manuale o automatica, i proxy NGINX sidecar verranno aggiunti alle applicazioni di default. Per disabilitare l'aggiunta automatica, leggi qui

Ad esempio, se distribuiamo un'applicazione sleep nello spazio dei nomi default, e poi controlliamo il Pod — vedremo due contenitori in esecuzione, l'applicazione sleep e il sidecar ad essa associato:

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NOME                     PRONTO   STATO    RIAVVIA   ETÀ
sleep-674f75ff4d-gxjf2   2\/2     Esecuzione   0          5h23m

Possiamo anche monitorare l'applicazione sleep nella console di NGINX Plus, eseguendo questo comando per ottenere accesso al sidecar dalla tua macchina locale:

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

Successivamente, basta accedere qui nel browser. Puoi anche connetterti a Prometheus per monitorare l'applicazione sleep.

Puoi utilizzare risorse Kubernetes dedicate per configurare le politiche di traffico, ad esempio il controllo degli accessi, i limiti di velocità e il circuit breaking; per fare ciò, consulta la documentazione

Conclusione

NGINX Service Mesh è disponibile per il download gratuito su portale F5. Provalo in azione nei tuoi ambienti di sviluppo e test e faccelo sapere sui risultati.

Per provare NGINX Plus Ingress Controller, attiva il periodo di prova gratuito di 30 giorni, oppure contattaci per discutere le tue opzioni d'uso.

Traduzione a cura di Pavel Demkovich, ingegnere dell'azienda Southbridge. Amministrazione di sistema per 15.000 ₽ al mese. E come divisione separata — centro di formazione Slerm, pratica e nient'altro che pratica.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster