
Siamo lieti di presentare la versione preliminare (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 . Speriamo che tu possa provarlo per ambienti di sviluppo e test — e attendiamo il tuo feedback. .
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 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 –hVerifica 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 2d19hA 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
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 5h23mPossiamo 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:8886Dopo di che, basta accedere 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
Conclusione
NGINX Service Mesh è disponibile per il download gratuito su . Provalo nei tuoi ambienti di sviluppo e test e .
Per provare NGINX Plus Ingress Controller, attiva di 30 giorni, oppure per discutere le tue opzioni d'uso.
Traduzione a cura di Pavel Demkovich, ingegnere di . Amministrazione dei sistemi a 15.000 ₽ al mese. E come divisione separata — centro di formazione , pratica e niente altro che pratica.
Fonte: habr.com
