Come iniziare con DevSpace e sviluppare rapidamente app Kubernetes

0
141

DevSpace è uno strumento open source che aiuta gli sviluppatori a implementare rapidamente il cloud-native applicazioni ai cluster Kubernetes. Astrae gran parte della complessità tradizionale di Kubernetes in modo che tu possa tornare a scrivere codice.

DevSpace è indipendente dalla piattaforma e funziona con cluster che vanno dalla tua macchina locale ai servizi pubblici gestiti più diffusi. Lo strumento è una CLI che automatizza le operazioni utilizzando le API Kubernetes. Non è necessario installare nulla all'interno del cluster per utilizzare DevSpace.

Modern Development Practices for Kubernetes

DevSpace porta molti aspetti della moderna esperienza di programmazione delle app nelle distribuzioni basate su Kubernetes. Ti consente di eseguire il tuo ambiente di sviluppo sul tuo cluster con il supporto per il ricaricamento automatico a caldo. Quando un file locale cambia, DevSpace aggiorna automaticamente i tuoi contenitori con il nuovo contenuto.

Il port forwarding integrato significa che puoi utilizzare localhost per accedere alla tua distribuzione. Non è necessario aprire porte o configurare ingressi HTTP sui cluster di sviluppo, offrendo un'esperienza di sviluppo migliorata e una maggiore sicurezza.

< img src="http://www.cloudsavvyit.com/pagespeed_static/1.JiBnMqyl6S.gif" />DevSpace

DevSpace aiuta anche il debug. Supporta l'impostazione di punti di interruzione utilizzando uno strumento Remote Debugger, offrendo l'ispezione in tempo reale delle applicazioni containerizzate nel cloud. È anche facile visualizzare i log di un container o avviare una sessione di terminale senza eseguire ingombranti comandi Kubectl.

Pubblicità

Un'interfaccia web in esecuzione su localhost ti consente di monitorare e interagire con l'applicazione in esecuzione. Puoi uscire del tutto dal tuo terminale se preferisci un'esperienza più visiva.

Installazione di DevSpace

DevSpace è distribuito come binario autonomo che funziona su sistemi Windows, Mac e Linux. Sono disponibili diverse opzioni di installazione. Ecco il comando consigliato per scaricare DevSpace per Linux e aggiungere la CLI al tuo percorso:

dev sudo install devspace /usr/local/bin

In alternativa puoi usare npm, il gestore di pacchetti Node, per installa e aggiorna DevSpace:

npm install -g devspace

Questo comando ti darà un devspace funzionante nel tuo percorso, a condizione che tu abbia già installato npm.

DevSpace usa il tuo attivo “KUBE_CONTEXT” allo stesso modo di altri strumenti dell'ecosistema come Kubectl e Helm. Imposta KUBECONFIG su un file di configurazione compatibile con Kubectl definendo la tua connessione al cluster:

export KUBECONFIG=/path/to/kubeconfig.yaml # Usa $KUBECONFIG devspace deploy

Creazione di un progetto

Il primo passo nella creazione con DevSpace è inizializzare il tuo directory del progetto. Questo creerà un file devspace.yaml che contiene la configurazione DevSpace per il tuo repository.

devspace init Advertisement

Ti verrà chiesto di selezionare la routine di distribuzione che prevedi di utilizzare. DevSpace può funzionare con Kubectl, Helm o Kustomize quando avvii la tua applicazione nel tuo cluster.

L'opzione QUICKSTART suggerita è un grafico speciale che ti consente di definire i componenti della tua applicazione, come il server web frontend, il server API backend e il database, invece di fornire grafici Helm o manifest Kubectl creati manualmente. Usalo se stai costruendo un sistema con una struttura convenzionale e non vuoi perdere tempo a creare le tue risorse Kubernetes.

Segui le istruzioni per fornire a DevSpace il percorso del tuo Dockerfile. Dovrai fornire l'autenticazione del registro e alcune informazioni di base sulla tua immagine, come la porta su cui è in ascolto. DevSpace produrrà automaticamente una configurazione pronta per l'uso che ti consentirà di eseguire la distribuzione di devspace per far funzionare la tua app su Kubernetes.

Se non utilizzi l'opzione di avvio rapido, dovrai fornire il percorso ai grafici Helm o ai manifest Kubernetes. Segui le istruzioni per creare una configurazione iniziale. Una volta usciti dalla procedura guidata di configurazione, puoi continuare ad aggiungere immagini e distribuzioni extra modificando manualmente il tuo file devspace.yaml.

Aggiungere un'immagine

< p>I progetti DevSpace vengono creati da una o più immagini contenitore. Per registrare un'immagine nel tuo progetto, aggiungila sotto la chiave images nel tuo devspace.yamlfile:

images: app: image: example.com/example/image:latest dockerfile: ./Dockerfile build: disabilitato: true < p>Il campo immagine definisce il nome del tag immagine. Il campo dockerfile è facoltativo; quando impostato, dovrebbe fare riferimento al percorso del Dockerfile dell'immagine nel progetto. Le immagini con Dockerfiles verranno create automaticamente dai comandi devspace build e devspace deploy, a meno che build.disabled non sia true nella configurazione dell'immagine.

Annuncio

Le immagini sono costruite in parallelo per accelerare le prestazioni. Il flag –build-sequential forza la creazione delle immagini singolarmente nell'ordine in cui sono invece specificate. DevSpace invierà automaticamente ogni immagine al rispettivo registro al termine di una build.

Le immagini non vengono ricostruite automaticamente a meno che DevSpace non rilevi una modifica nel loro Dockerfile o nei file nel loro contesto di build. Puoi forzare una ricostruzione di tutte le immagini configurate con il flag –force-build.

Aggiunta di una distribuzione

La seconda parte di uno spazio di sviluppo .yaml sono le tue distribuzioni. Questi definiscono le risorse che verranno create all'interno del tuo cluster.

implementazioni: – nome: "schema timone" helm: chart: name: example/example-app values: VARIABLE_OVERRIDE: "new-value" – nome: "manifesti kubectl" kubectl: manifests: – .kube/manifests

Questo file definisce due distribuzioni separate, una che utilizza Helm e l'altra Kubectl. Quando esegui devspace deploy, sia il grafico Helm che i tuoi manifest Kubectl verranno installati nel tuo cluster.

La ripetizione del comando deploy aggiornerà le tue distribuzioni. DevSpace ridistribuisce solo i componenti che sono stati modificati a meno che non venga utilizzato il flag –force-deploy.

Poiché DevSpace funziona tra i cluster, promuovere la distribuzione dallo sviluppo alla produzione è un caso di modificare la variabile di ambiente KUBECONFIG e ri- in esecuzione devspace deploy. Questo ti offre un unico meccanismo coerente per la gestione di più implementazioni indipendenti del tuo sistema.

Uso dei profili

DevSpace supporta i profili che ti consentono di modificare le sezioni devspace.yaml per ciascuno dei tuoi ambienti. Ogni profilo denominato può sostituire, unire e modificare i campi all'interno del file di configurazione.

I profili stessi sono definiti anche nel tuo devspace.yaml:

immagini: api-server: immagine: esempio.com/api-server:latest web-server: image: example.com/web-server:latest debug: image: example.com/debug-tool:latest # … profili omessi: – nome: patch di produzione: – op: rimuovi percorso: images.debug Annuncio

I profili vengono attivati ​​passando il flag -p o –profile ai comandi DevSpace. Ecco come avviare una distribuzione utilizzando il profilo di produzione definito sopra. La distribuzione non includerà l'immagine di debug poiché viene rimossa da una delle patch del profilo.

devspace deploy –profile production

Uso della ricarica a caldo

La funzionalità di ricarica a caldo è abilitata impostando la sincronizzazione dei file:

dev: sync: – imageSelector: example.com/api-server:latest localSubPath: ./api/containerPath : /var/www/html requirePaths: – vendor/

Aggiungi la chiave dev come campo di primo livello nel tuo devspace.yaml, quindi usa la sincronizzazione per configurare il ricaricamento a caldo in base all'immagine. imageSelector abbina i tag immagine a cui applicare la regola di ricarica a caldo. I file di localSubPath nella directory di lavoro verranno sincronizzati con containerPath nelle istanze di container distribuite.

Avvia una sessione di ricarica a caldo eseguendo devspace dev o devspace sync. Il primo comando avvia tutte le funzionalità dell'ambiente di sviluppo di DevSpace, incluso il port forwarding e lo streaming dei log in tempo reale.

Il ricaricamento a caldo sostituisce automaticamente i file nei contenitori esistenti. È simile all'utilizzo dei volumi Docker e dei montaggi di associazione quando si lavora con istanze di container locali. In alcuni scenari, potresti voler avviare una nuova distribuzione di DevSpace quando il tuo filesystem cambia. Ciò si ottiene tramite l'opzione di ricarica automatica separata:

immagini: api: immagine: esempio.com/api-server:ultime implementazioni: – nome: api-deployment # … omesso dev: autoReload: percorsi: – ./kernel/* immagini: – esempio.com/api-server :latest deployments: – api-deployment Advertisement

Questo esempio ridistribuirà api-deployment ogni volta che i file nella directory del kernel locale cambiano. Questo è l'ideale quando modifichi file che devono essere eseguiti attraverso un processo di compilazione per renderli utili ai tuoi contenitori.

Port Forwarding

Il port forwarding è configurato tramite il campo dev.ports nel tuo devspace.yaml. È supportato anche l'inoltro inverso, che consente agli indirizzi localhost nei contenitori di mappare le porte sul computer locale.

dev: porte: – imageSelector: example.com/api-server:latest forward: – port: 8080 remotePort: 80 reverseForward : – port: 9000 remote: 9000

Questo esempio imposta un inoltro da localhost:8080 sulla tua macchina alla porta 80 nei contenitori che eseguono l'immagine example.com/api-server. C'è anche un reverse forward che indirizza il traffico in-container a localhost:9000 indietro alla porta 9000 sul tuo computer.

Altre funzionalità

Oltre alle funzionalità trattate qui, DevSpace offre anche supporto per diversi altri gruppi di funzionalità che consentono di monitorare le distribuzioni, interagire con i contenitori e configurare flussi di lavoro di sviluppo avanzati:

  • Lancio automatico di terminali consente di avviare una sessione di shell remota ogni volta che si esegue devspace dev.
  • L'apertura automatica dell'URL avvia i siti Web e le app Web nel browser quando si accede alla modalità di sviluppo.
  • Registrazione configurabiledefinisce quali contenitori devono apparire nel flusso di log della modalità dev.
  • Comandi personalizzati fungono da scorciatoie per azioni comuni, aiutando i nuovi membri del team a interagire con le tue implementazioni senza dover apprendere lunghi processi in Kubectl.
  • I ganci eseguono comandi durante il processo di distribuzione, consentendoti di configurare manualmente i contenitori o registrare nuove distribuzioni in un servizio di monitoraggio centralizzato.
  • Il interfaccia utenteviene eseguito automaticamente in modalità di sviluppo con devspace dev e può essere aperto nel browser utilizzando devspace ui.

DevSpace offre anche plugin che possono aggiungere ancora più funzionalità al sistema. L'API del plug-in supporta l'installazione da URL remoti o script locali e facilita nuovi comandi, hook e variabili. Lo sviluppo del proprio plug-in fornisce un modo per standardizzare l'utilizzo di DevSpace su più progetti indipendenti.

Distribuzioni in pipeline CI/CD

DevSpace può gestire le distribuzioni di produzione come parte della pipeline CI/CD. Fornisce un'immagine Docker ufficiale e supporta l'uso non interattivo se si includono selettori espliciti come -l per etichetta nei comandi.

Annuncio

Una distribuzione all'interno di una pipeline CI potrebbe essere simile a questa:< /p> echo $KUBECONFIG_CI_VARIABLE > /path/to/kubeconfig export KUBECONFIG=/path/to/kubeconfig devspace deploy –profile production –timeout 60 –wait –skip-build

Questo distribuirà la tua applicazione usando il profilo DevSpace di produzione. Il flag –skip-build indica a DevSpace di non creare le tue immagini. Le build di solito dovrebbero essere gestite come una fase separata all'inizio della pipeline.

Il flag –wait forza DevSpace ad attendere la disponibilità del conteggio Pod specificato nel tuo devspace.yaml, invece di terminare immediatamente dopo aver eseguito il comando. Questo è più appropriato per un ambiente CI in cui si desidera confermare che il carico di lavoro è attivo. Consentire a DevSpace di uscire senza attendere potrebbe significare che la tua pipeline viene contrassegnata come riuscita anche se c'è un problema di distribuzione.

Conclusione

DevSpace sta guadagnando terreno come strumento di distribuzione Kubernetes orientato allo sviluppatore che fornisce utili astrazioni per le operazioni chiave. Riduce la quantità di YAML necessaria per avviare i container in un cluster, sostituendolo con semplici chiavi di configurazione e comandi del terminale che definiscono, costruiscono e avviano le immagini.

DevSpace

Come strumento indipendente dalla piattaforma e dall'ambiente, DevSpace consente agli sviluppatori preoccuparsi meno delle caratteristiche uniche dei singoli cluster. Indipendentemente dall'obiettivo di distribuzione, l'esperienza complessiva è simile alla creazione di un sistema tradizionale sul computer locale. Ciò aiuta ad ammorbidire la curva di apprendimento di Kubernetes mappando i concetti a pratiche di sviluppo più universalmente comprese.