NGINX Service Mesh disponibile

NGINX Service Mesh disponibile

Siamo lieti di presentarvi una versione in anteprima Rete di servizi NGINX (NSM), un mesh di servizi leggero in bundle che utilizza un piano dati basato su NGINX Plus per gestire il traffico dei container negli ambienti Kubernetes.

NSM è gratuito скачать здесь. Ci auguriamo che lo proverai per ambienti di sviluppo e test e attendiamo con ansia il tuo feedback su GitHub.

L’implementazione della metodologia dei microservizi è irta di difficoltà man mano che cresce la portata della fornitura, così come la sua complessità. La comunicazione tra i servizi diventa più complessa, i problemi di debug diventano più difficili e sempre più servizi richiedono più risorse per la gestione.

NSM risolve questi problemi fornendoti:

  • sicurezza, che ora è più importante che mai. Una violazione dei dati può costare a un’azienda milioni di dollari ogni anno in termini di perdita di entrate e reputazione. NSM garantisce che tutte le connessioni siano crittografate utilizzando mTLS, quindi non ci sono dati sensibili che possono essere rubati dagli hacker sulla rete. Il controllo degli accessi consente di impostare policy relative al modo in cui i servizi comunicano con altri servizi.
  • Gestione del traffico. Quando si spedisce una nuova versione di un'applicazione, è possibile iniziare limitando il traffico in entrata in caso di errore. Con la gestione intelligente del traffico dei container di NSM, puoi impostare una politica di limitazione del traffico per i nuovi servizi che aumenterà il traffico nel tempo. Altre funzionalità, come la limitazione della velocità e gli interruttori automatici, ti danno il pieno controllo sul flusso di traffico di tutti i tuoi servizi.
  • Visualizzazione. La gestione di migliaia di servizi può essere un incubo per il debug e la visualizzazione. NSM aiuta ad affrontare questa situazione con una dashboard Grafana integrata che mostra tutte le funzionalità disponibili in NGINX Plus. E anche l'Open Tracing implementato consente di monitorare le transazioni in dettaglio.
  • Consegne ibride, se la tua azienda, come la maggior parte delle altre, non utilizza un'infrastruttura interamente basata su Kubernetes. NSM garantisce che le applicazioni legacy non vengano lasciate incustodite. Con l'aiuto del controller di ingresso NGINX Kubernetes implementato, i servizi legacy saranno in grado di comunicare con i servizi mesh e viceversa.

NSM garantisce inoltre la sicurezza delle applicazioni in ambienti Zero Trust applicando in modo trasparente la crittografia e l'autenticazione al traffico dei container. Fornisce inoltre visibilità e analisi delle transazioni, aiutandoti ad avviare implementazioni in modo rapido e accurato e a risolvere i problemi. Fornisce inoltre un controllo granulare del traffico, consentendo ai team DevOps di distribuire e ottimizzare parti delle applicazioni e consentendo allo stesso tempo agli sviluppatori di creare e connettere facilmente le proprie applicazioni distribuite.

Come funziona la rete di servizi NGINX?

NSM è costituito da un piano dati unificato per il traffico orizzontale (da servizio a servizio) e da un controller di ingresso NGINX Plus integrato per il traffico verticale, gestito da un unico piano di controllo.

Il piano di controllo è specificamente progettato e ottimizzato per il piano dati NGINX Plus e definisce le regole di controllo del traffico distribuite sui sidecar NGINX Plus.

In NSM, i proxy sidecar vengono installati per ciascun servizio nel mesh. Si interfacciano con le seguenti soluzioni open source:

  • Grafana, visualizzazione dei parametri Prometheus, pannello NSM integrato ti aiuta nel tuo lavoro;
  • Kubernetes Ingress Controllers, per la gestione del traffico in entrata e in uscita nel mesh;
  • SPIRE, CA per la gestione, distribuzione e aggiornamento dei certificati nella mesh;
  • NATS, un sistema scalabile per l'invio di messaggi, come aggiornamenti di percorso, dall'aereo di controllo ai sidecar;
  • Open Tracing, debug distribuito (supportato da Zipkin e Jaeger);
  • Prometheus raccoglie e memorizza le caratteristiche dei sidecar NGINX Plus, come il numero di richieste, connessioni e handshake SSL.

Funzioni e componenti

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

Le caratteristiche includono:

  • Autenticazione TLS reciproca (mTLS);
  • Bilancio del carico;
  • Tolleranza ai guasti;
  • Limite di velocità;
  • Interruzione del circuito;
  • Distribuzioni blu-verdi e canarini;
  • Controllo di accesso.

Avvio della rete di servizi NGINX

Per eseguire 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 normali cluster Kubernetes distribuiti su server hardware;
  • Strumento kubectl, installato sulla macchina da cui verrà installato NSM;
  • Accesso ai pacchetti di rilascio di NGINX Service Mesh. Il pacchetto contiene le immagini NSM necessarie per il caricamento in un registro privato per i contenitori disponibili nel cluster Kubernetes. La confezione contiene anche nginx-meshctl, necessario per distribuire NSM.

Per distribuire NSM con le impostazioni predefinite, esegui il comando seguente. Durante la distribuzione, vengono visualizzati messaggi che indicano la corretta installazione dei componenti e, infine, un messaggio che indica che NSM è in esecuzione in uno spazio dei nomi separato (è necessario prima scaricare e inserirlo nel registro, ca. traduttore):

$ 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.

Per ulteriori opzioni, incluse le impostazioni avanzate, esegui questo comando:

$ nginx-meshctl deploy –h

Verifica che il piano di controllo funzioni correttamente nello spazio dei nomi nginx-mesh, Puoi farlo:

$ 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

A seconda delle impostazioni di distribuzione che definiscono le policy di injection manuale o automatica, i proxy sidecar NGINX verranno aggiunti alle applicazioni per impostazione predefinita. Per disabilitare l'aggiunta automatica, leggi qui

Ad esempio, se distribuiamo l'applicazione sonno nello spazio dei nomi difetto, quindi controlla il Pod: vedremo due contenitori in esecuzione, l'applicazione sonno e il sidecar associato:

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

Possiamo anche monitorare l'applicazione sonno nel pannello NGINX Plus, eseguendo questo comando per accedere al sidecar dal tuo computer locale:

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

Allora entriamo e basta qui nel browser. È inoltre possibile connettersi a Prometheus per monitorare l'applicazione sonno.

Puoi utilizzare le singole risorse Kubernetes per configurare le policy del traffico, come il controllo degli accessi, la limitazione della velocità e l'interruzione del circuito, a questo scopo vedi documentazione

conclusione

NGINX Service Mesh è disponibile per il download gratuito all'indirizzo portale F5. Provalo nei tuoi ambienti di sviluppo e test e scrivici sui risultati.

Per provare NGINX Plus Ingress Controller, attiva periodo di prova gratuito per 30 giorni, o contattaci per discutere i tuoi casi d'uso.

Traduzione di Pavel Demkovich, ingegnere dell'azienda Southbridge. Amministrazione del sistema per RUB 15 al mese. E come divisione separata, un centro di formazione Slurm, pratica e nient'altro che pratica.

Fonte: habr.com

Aggiungi un commento