Usare Bridge per Kubernetes con un esempio

Questo esempio illustra come usare Bridge to Kubernetes per sviluppare una versione di microservizio di una semplice applicazione TODO in qualsiasi cluster Kubernetes. Questo esempio, che usa Visual Studio Code, è stato adattato dal codice fornito da TodoMVC. In questo esempio si usa MiniKube per ospitare l'applicazione, ma questi passaggi devono funzionare con qualsiasi cluster Kubernetes.

L'esempio di applicazione TODO è costituito da un front-end e da un back-end che fornisce l'archiviazione permanente. Questo esempio esteso aggiunge un componente statistiche e suddivide l'applicazione in diversi microservizi, in particolare:

  • Il front-end chiama l'API di database per rendere persistenti e aggiornare gli elementi TODO;
  • Il servizio database-api si basa su un database Mongo per rendere persistenti gli elementi TODO;
  • Il front-end scrive gli eventi di aggiunta, completamento ed eliminazione in una coda RabbitMQ;
  • Un ruolo di lavoro statistiche riceve gli eventi dalla coda RabbitMQ e aggiorna una cache Redis;
  • Un'API statistiche espone le statistiche memorizzate nella cache per il front-end da visualizzare.

In tutto, questa applicazione TODO estesa è composta da sei componenti correlati.

Prerequisiti

Installare MiniKube

È possibile usare qualsiasi provider Kubernetes con Bridge to Kubernetes. In questo articolo si usa MiniKube. MiniKube è un provider Kubernetes leggero che consente di ospitare Kubernetes nel computer locale. Seguire le istruzioni di installazione per installare MiniKube in Windows 10, Linux o macOS.

Per ottenere risultati ottimali in Windows 10, è consigliabile usare la gestione delle macchine virtuali Hyper-V e creare un commutatore virtuale.

Dopo l'installazione, avviare MiniKube, specificare di usare Hyper-V e specificare il nome del commutatore virtuale primario. Questo comando deve essere eseguito da un prompt dei comandi con privilegi Amministrazione istrator.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

Distribuire l'applicazione

Clonare il repository Bridge in Kubernetes e aprire una finestra di comando con la cartella di lavoro corrente in todo-app.

Creare uno spazio dei nomi per l'esempio.

kubectl create namespace todo-app

Applicare quindi il manifesto della distribuzione:

kubectl apply -n todo-app -f deployment.yaml

Si tratta di una distribuzione semplice che espone il front-end usando un servizio di tipo LoadBalancer. Attendere che tutti i pod siano in esecuzione e che l'indirizzo IP esterno del frontend servizio diventi disponibile.

Se si esegue il test con MiniKube, è necessario usare minikube tunnel per risolvere un indirizzo IP esterno.

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

Passare all'applicazione usando l'indirizzo IP esterno e la porta locale (il primo numero nella colonna PORT(S).

http://{external-ip}:{local-port}

Testare l'app in esecuzione nel browser. Quando si aggiungono, completano ed eliminano gli elementi todo, si noti che la pagina delle statistiche viene aggiornata con le metriche previste.

Eseguire il debug del servizio stats-api

È ora possibile usare l'estensione Bridge to Kubernetes per illustrare come il traffico dal cluster Kubernetes può essere reindirizzato a una versione in esecuzione locale dell'api stats.

cd stats-api/

Aprire il codice sorgente per stats-api in VS Code.

code .

Dopo l'avvio di VS Code, aprire il riquadro Kubernetes dalla barra laterale sinistra di VS Code e quindi selezionare lo spazio dei nomi todo-app nel cluster MiniKube. Fare clic con il pulsante destro del mouse sul nodo todo-app e scegliere Usa spazio dei nomi.

Seleziona spazio dei nomi

Installare le dipendenze eseguendo npm install in una finestra del terminale (CTRL + ~).

npm install

Posizionare quindi un punto di interruzione nella riga 17 di server.js.

Aprire il riquadro comandi (CTRL+MAIUSC+P o CMD+MAIUSC+P in un Mac) e digitare Bridge to Kubernetes. Selezionare l'opzione Bridge to Kubernetes: Configure (Bridge to Kubernetes: Configure ).

Bridge to Kubernetes: Configure command (Bridge to Kubernetes: Configure command) (Bridge to Kubernetes: Configure

Viene richiesto di configurare il servizio da sostituire, la porta da inoltrare dal computer di sviluppo e l'attività di avvio da usare.

Scegliere il stats-api servizio.

Selezionare il servizio a cui connettersi

Dopo aver selezionato il servizio, viene richiesto di immettere la porta TCP per l'applicazione locale. Per questo esempio, immettere 3001.

Immettere il numero di porta

Scegliere Esegui script: sviluppo come attività di avvio.

Scegliere l'attività di avvio del debugger

È possibile eseguire isolato o non isolato. Se si esegue isolato, solo le richieste vengono instradate al processo locale; altri sviluppatori possono usare il cluster senza essere interessati. Se non si esegue isolato, tutto il traffico viene reindirizzato al processo locale. Per altre informazioni su questa opzione, vedere Uso delle funzionalità di routing per lo sviluppo in isolamento. Per questo esempio si userà un valore non isolato.

Scegliere l'isolamento

Nota

VS Code richiede di consentire a EndpointManager di eseguire con privilegi elevati e modificare il file hosts.

Il profilo di debug da Bridge a Kubernetes è stato configurato correttamente.

Selezionare l'icona Debug a sinistra e selezionare Esegui script: sviluppo con Kubernetes. Fare clic sul pulsante Start accanto a Esegui script: sviluppo con Kubernetes.

Scegliere il profilo di avvio del debug

Il computer di sviluppo è connesso quando la barra di stato di VS Code diventa arancione e l'estensione Kubernetes mostra che si è connessi. Dopo aver connesso il computer di sviluppo, il traffico inizia a reindirizzare al computer di sviluppo per l'API stats che si sta sostituendo.

Debug con Bridge in Kubernetes

Passare al punto di ingresso front-end dell'app todo-app. Per minikube si userà 127.0.0.1. Per accedere all'URL dell'endpoint locale per l'app, aprire il menu Kubernetes sulla barra di stato e scegliere la voce dell'endpoint.

Effettuare una richiesta all'API stats scegliendo il collegamento statistiche .

Esecuzione del sito Web: scegliere il collegamento di stato

Si noti che il traffico avviato inizialmente nel cluster è stato reindirizzato alla versione in esecuzione locale (all'esterno del cluster) in cui è stato attivato il punto di interruzione.

Premere play e lasciare che la richiesta continui a essere completata in modo trasparente.

Questo esempio è solo un'illustrazione di come usare Bridge to Kubernetes in cluster non del servizio Azure Kubernetes. Provalo sul tuo progetto in seguito!

Eseguire la pulizia

Per pulire gli asset prodotti da questo esempio, eseguire:

kubectl delete namespace todo-app

Passaggi successivi

È anche possibile distribuire l'app in servizio Azure Kubernetes (AKS) con Bridge in Kubernetes. Vedere Usare Bridge to Kubernetes con il servizio Azure Kubernetes