Disponibile NGINX Service Mesh

Disponibile NGINX Service Mesh

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 container negli ambienti Kubernetes.

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

L'implementazione della metodologia dei microservizi comporta difficoltà nella scalabilità delle distribuzioni e nella loro complessità. La comunicazione tra i servizi diventa complicata, i problemi di debug si fanno più difficili e un numero crescente di servizi richiede più risorse per la gestione.

NSM affronta queste sfide fornendoti innanzitutto:

  • Sicurezza, che è ora più importante che mai. Una fuga di dati può costare all'azienda milioni di dollari all'anno in termini di perdite di entrate e reputazione. NSM garantisce la crittografia di tutte le connessioni tramite mTLS — quindi non ci sono dati sensibili che possono essere rubati dagli hacker in rete. Il controllo degli accessi ti consente di stabilire politiche su come i servizi comunicheranno tra loro.
  • Gestione del traffico. Quando si fornisce una nuova versione dell'applicazione, potresti voler iniziare limitando il traffico in entrata per evitare errori. Con la gestione intelligente del traffico dei container di NSM, puoi impostare una politica di limitazione del traffico per i nuovi servizi, che aumenterà gradualmente il traffico nel tempo. Altre funzionalità, come il limitatore di velocità e i circuit breakers, ti offrono un controllo completo sulla gestione del traffico per tutti i tuoi servizi.
  • Visualizzazione. Gestire migliaia di servizi può essere un incubo per il debug e la visualizzazione. NSM aiuta a gestire questa situazione con un pannello di controllo Grafana integrato, che visualizza tutte le metriche disponibili in NGINX Plus. Inoltre, l'integrazione di Open Tracing consente di monitorare in dettaglio le transazioni.
  • Consegne ibride, se la tua azienda, come molte altre, non utilizza un'infrastruttura completamente basata su Kubernetes. NSM garantisce che le vecchie applicazioni non vengano trascurate. Grazie all'Ingress Controller di NGINX integrato in Kubernetes, i servizi legacy possono comunicare con i servizi mesh e viceversa.

NSM garantisce anche la sicurezza delle applicazioni in ambienti a zero fiducia, 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 lanciare rapidamente e con precisione i deployment e a risolvere i problemi. Inoltre, fornisce un controllo dettagliato del traffico, consentendo ai team DevOps di implementare e ottimizzare parti delle applicazioni, mentre consente agli sviluppatori di costruire e collegare 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 da un NGINX Plus Ingress Controller integrato per il traffico verticale, gestiti da un unico control plane.

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

In NSM, i sidecar proxy vengono installati per ciascun servizio nella mesh. Questi interagiscono con le seguenti soluzioni open source:

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

Funzionalità e componenti

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

Le funzionalità includono:

  • Autenticazione mTLS;
  • Bilanciamento del carico;
  • Failover;
  • Limitazione della velocità;
  • Interruzione del circuito;
  • Deployment blue-green e canary;
  • Controllo degli accessi.

Avvio di NGINX Service Mesh

Per avviare NSM è necessario:

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

Per eseguire il deploy di NSM con le impostazioni predefinite, esegui il seguente comando. Durante il deploy verranno visualizzati messaggi di conferma sull'installazione dei componenti e, infine, un messaggio che indica che NSM è in esecuzione in uno spazio dei nomi separato (inizialmente deve essere scaricare e caricato 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".
Creato il CRD SpiffeID.
Attesa di avvio dei pod Spire... fatto.
Distribuito Spire.
Distribuito il server NATS.
Creati i CRD delle policy di traffico.
Distribuito Mesh API.
Distribuito il server API delle metriche.
Distribuito il server Prometheus nginx-mesh/prometheus-server.
Distribuito Grafana nginx-mesh/grafana.
Distribuito il server di tracciamento nginx-mesh/zipkin.
Tutte le risorse sono state create. Testando la connessione al server API di Service Mesh...

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

Per ulteriori parametri, comprese le impostazioni avanzate, esegui questo comando:

$ nginx-meshctl deploy –h

Verifica 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    RIAVVI DATE
grafana-6cc6958cd9-dccj6          1/1     In esecuzione  0          2d19h
mesh-api-6b95576c46-8npkb         1/1     In esecuzione  0          2d19h
nats-server-6d5c57f894-225qn      1/1     In esecuzione  0          2d19h
prometheus-server-65c95b788b-zkt95 1/1     In esecuzione  0          2d19h
smi-metrics-5986dfb8d5-q6gfj      1/1     In esecuzione  0          2d19h
spire-agent-5cf87                 1/1     In esecuzione  0          2d19h
spire-agent-rr2tt                 1/1     In esecuzione  0          2d19h
spire-agent-vwjbv                 1/1     In esecuzione  0          2d19h
spire-server-0                    2/2     In esecuzione  0          2d19h
zipkin-6f7cbf5467-ns6wc           1/1     In esecuzione  0          2d19h

A seconda delle opzioni di distribuzione che impostano politiche di iniezione manuale o automatica, i proxy sidecar NGINX verranno aggiunti alle applicazioni per impostazione predefinita. Per disattivare l'aggiunta automatica, leggi qui

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

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NOME                    PRONTO   STATO    RIAVVI DATE
sleep-674f75ff4d-gxjf2  2/2     In esecuzione  0          5h23m

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

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

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

Puoi utilizzare risorse Kubernetes dedicate per configurare le politiche del traffico, come il controllo degli accessi, la limitazione della velocità e il circuit breaking; per maggiori dettagli, consulta documentazione

Conclusione

NGINX Service Mesh è disponibile per il download gratuito su portale F5. Provalo 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 di Southbridge. Amministrazione dei sistemi a 15.000 ₽ al mese. E come divisione separata — centro di formazione Sleurm, pratica e niente altro che pratica.

Fonte: habr.com

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