Hur man kommer igång med DevSpace och snabbt utvecklar Kubernetes-appar

0
141

DevSpace är ett verktyg med öppen källkod som hjälper utvecklare att snabbt distribuera molnbaserad applikationer till Kubernetes-kluster. Det abstraherar bort mycket av den traditionella Kubernetes-komplexiteten så att du kan återgå till att skriva kod.

DevSpace är plattformsoberoende och arbetar med kluster som sträcker sig från din lokala dator till populära hanterade offentliga tjänster. Verktyget är en CLI som automatiserar operationer med hjälp av Kubernetes API:er. Du behöver inte installera något i ditt kluster för att använda DevSpace.

Moderna utvecklingsmetoder för Kubernetes

DevSpace tar med många aspekter av den moderna appprogrammeringsupplevelsen till Kubernetes-baserade distributioner. Det låter dig köra din utvecklingsmiljö på ditt kluster med stöd för automatisk het omladdning. När en lokal fil ändras uppdaterar DevSpace automatiskt dina behållare med det nya innehållet.

Inbyggd portvidarebefordran innebär att du kan använda localhost för att komma åt din distribution. Du behöver inte öppna portar eller ställa in HTTP-ingresser på utvecklingskluster, vilket erbjuder en förbättrad utvecklarupplevelse och större säkerhet.

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

DevSpace hjälper också till med felsökning. Den stöder inställning av brytpunkter med hjälp av ett fjärrfelsökningsverktyg, som erbjuder live-inspektion av containeriserade applikationer i molnet. Det är också lätt att se en containers loggar eller starta en terminalsession utan att köra otympliga Kubectl-kommandon.

Annons

Ett webbgränssnitt som körs på localhost låter dig övervaka och interagera med din applikation som körs. Du kan fly din terminal helt om du föredrar en mer visuell upplevelse.

Installera DevSpace

DevSpace distribueras som en fristående binär som fungerar på Windows-, Mac- och Linux-system. Flera installationsalternativ finns tillgängliga. Här är det rekommenderade kommandot för att ladda ner DevSpace för Linux och lägga till CLI till din sökväg:

dev sudo install devspace /usr/local/bin

Alternativt kan du använda npm, Node-pakethanteraren, för att installera och uppdatera DevSpace:

npm install -g devspace

Det här kommandot ger dig ett fungerande devspace i din sökväg, förutsatt att du redan har installerat npm.

DevSpace använder din aktiv “KUBE_CONTEXT” på samma sätt som andra ekosystemverktyg som Kubectl och Helm. Ställ in KUBECONFIG till en Kubectl-kompatibel konfigurationsfil som definierar din klusteranslutning:

export KUBECONFIG=/path/to/kubeconfig.yaml # Använder $KUBECONFIG devspace deploy

Skapa ett projekt

Det första steget i att bygga med DevSpace är att initiera din projektkatalog. Detta kommer att skapa en devspace.yaml-fil som innehåller DevSpace-konfigurationen för ditt arkiv.

devspace init Annons

Du kommer att bli ombedd att välja den distributionsrutin du planerar att använda. DevSpace kan fungera med Kubectl, Helm eller Kustomize när du startar din app i ditt kluster.

Det föreslagna QUICKSTART-alternativet är ett speciellt diagram som låter dig definiera komponenter i din applikation, såsom din frontend webbserver, backend API-server och databas, istället för att tillhandahålla manuellt skapade Helm-diagram eller Kubectl-manifest. Använd det här om du bygger ett system med en konventionell struktur och inte vill lägga tid på att skapa dina egna Kubernetes-resurser.

Följ anvisningarna för att förse DevSpace med sökvägen till din Dockerfile. Du måste tillhandahålla registerautentisering och lite grundläggande information om din bild, till exempel porten den lyssnar på. DevSpace producerar automatiskt en färdig att använda konfiguration som låter dig köra devspace deploy för att få din app live på Kubernetes.

Om du inte använder snabbstartsalternativet måste du ange sökvägen till dina Helm-diagram eller Kubernetes-manifest. Följ anvisningarna för att skapa en första konfiguration. När du kommer ur installationsguiden kan du fortsätta lägga till extra bilder och distributioner genom att manuellt redigera filen devspace.yaml.

Lägga till en bild

< p>DevSpace-projekt byggs från en eller flera containerbilder. För att registrera en bild i ditt projekt, lägg till den under bildnyckeln i din devspace.yamlfile:

images: app: image: example.com/example/image:senaste dockerfile: ./Dockerfile build: disabled: true < p>Bildfältet definierar bildetikettens namn. Dockerfilfältet är valfritt; när den är inställd bör den referera till sökvägen till bildens Dockerfile i ditt projekt. Bilder med Dockerfiler kommer att byggas automatiskt av kommandona devspace build och devspace deploy, om inte build.disabled är sant i bildens konfiguration.

Annons

Bilder byggs parallellt för att påskynda prestanda. Flaggan –build-sekventiell tvingar bilder att byggas var för sig i den ordning de är specificerade istället. DevSpace kommer automatiskt att skicka varje bild till sitt respektive register efter att en build är klar.

Bilder byggs inte om automatiskt om inte DevSpace upptäcker en ändring antingen i deras Dockerfile eller filerna i deras build-kontext. Du kan tvinga fram en ombyggnad av alla konfigurerade bilder med flaggan –force-build.

Lägga till en distribution

Den andra delen av ett devspace .yaml är dina distributioner. Dessa definierar resurserna som kommer att skapas i ditt kluster.

distributioner: – namn: "rordiagram" roder: diagram: namn: exempel/exempel-app-värden: VARIABLE_OVERRIDE: "nytt-värde" – namn: "kubectl manifests" kubectl: manifests: – .kube/manifests

Denna fil definierar två separata distributioner, en använder Helm och den andra Kubectl. När du kör devspace deploy kommer både Helm-diagrammet och dina Kubectl-manifest att installeras i ditt kluster.

Om du upprepar distributionskommandot uppdateras dina distributioner. DevSpace omdistribuerar endast de komponenter som ändrats om inte flaggan –force-deploy används.

Eftersom DevSpace fungerar över kluster, är det att främja din distribution från utveckling till produktion ett fall av att ändra din KUBECONFIG-miljövariabel och om- kör devspace deploy. Detta ger dig en enda konsekvent mekanism för att hantera flera oberoende distributioner av ditt system.

Använda profiler

DevSpace stöder profiler som låter dig ändra devspace.yaml-sektioner för var och en av dina miljöer. Varje namngiven profil kan ersätta, slå samman och ändra fält i din konfigurationsfil.

Själva profiler är också definierade i din devspace.yaml:

images: api-server: image: example.com/api-server: senaste webbserver: bild: exempel.com/webbserver: senaste felsökning: bild: exempel.com/debug-verktyg: senaste # … utelämnade profiler: – namn: produktionskorrigeringar: – op: ta bort sökväg: images.debug Annons

Profiler aktiveras genom att skicka flaggan -p eller –profile till DevSpace-kommandon. Så här startar du en distribution med hjälp av produktionsprofilen som definieras ovan. Implementeringen kommer inte att inkludera felsökningsbilden eftersom den har tagits bort av en av profilens patchar.

devspace deploy –profile production

Använda Hot Reload

Hot Reload-funktionen aktiveras genom att ställa in filsynkronisering:

dev: sync: – imageSelector: example.com/api-server:latest localSubPath: ./api/containerPath : /var/www/html excludePaths: – leverantör/

Lägg till dev-nyckeln som ett toppnivåfält i din devspace.yaml och använd sedan sync för att konfigurera hot reload per bild. ImageSelector matchar bildtaggar för att tillämpa hot reload-regeln på. Filer från localSubPath i din arbetskatalog kommer att synkroniseras med containerPath i distribuerade containerinstanser.

Starta en het omladdningssession genom att köra devspace dev eller devspace sync. Det tidigare kommandot startar alla DevSpaces utvecklarmiljöfunktioner, inklusive portvidarebefordran och liveloggströmning.

Hot reload är standard för att ersätta filer i befintliga behållare. Det liknar att använda Docker-volymer och bindningsmonteringar när man arbetar med lokala containerinstanser. I vissa scenarier kanske du vill starta en ny DevSpace-distribution när ditt filsystem ändras. Detta uppnås via det separata alternativet autoReload:

images: api: image: example.com/api-server:senaste installationerna: – namn: api-deployment # … utelämnad dev: autoReload: sökvägar: – ./kernel/* bilder: – example.com/api-server :senaste distributionerna: – api-deployment Annons

Det här exemplet kommer att omdistribuera api-deployment när filer i din lokala kärnkatalog ändras. Detta är idealiskt när du ändrar filer som måste köras genom en byggprocess för att göra dem användbara för dina behållare.

Port Forwarding

Vidarebefordran av portar konfigureras via fältet dev.ports i din devspace.yaml. Omvänd vidarebefordran stöds också, vilket låter localhost-adresser i dina behållare mappa till portar på din lokala dator.

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

Det här exemplet ställer in en forward från localhost:8080 på din dator till port 80 i behållare som kör exempel.com/api-serveravbildningen. Det finns också en bakåt framåt som leder in-container-trafiken till localhost:9000 tillbaka till port 9000 på din maskin.

Övriga funktioner

Förutom de funktioner som täcks här, erbjuder DevSpace även stöd för flera andra funktionsgrupper som låter dig övervaka implementeringar, interagera med behållare och konfigurera avancerade utvecklingsarbetsflöden:

  • Automatiska terminallanseringar > låter dig starta en extern skalsession varje gång du kör devspace dev.
  • Automatisk URL-öppning startar webbplatser och webbappar i din webbläsare när du går in i utvecklingsläge.
  • Konfigurerbar loggningdefinierar vilka behållare som ska visas i utvecklarlägets loggström.
  • Anpassade kommandon fungerar som genvägar till vanliga åtgärder och hjälper nya teammedlemmar att interagera med dina implementeringar utan att behöva lära sig långa processer i Kubectl.
  • Hooks kör kommandon under distributionsprocessen, vilket låter dig konfigurera behållare manuellt eller spela in nya distributioner till en centraliserad övervakningstjänst.
  • Den användargränssnittkörs automatiskt i utvecklingsläge med devspace dev och kan öppnas i din webbläsare med hjälp av devspace ui.

DevSpace erbjuder även plugins som kan lägga till ännu mer funktionalitet till systemet. Plugin-API:et stöder installation från fjärrwebbadresser eller lokala skript och underlättar nya kommandon, krokar och variabler. Att utveckla ditt eget plugin ger ett sätt att standardisera din användning av DevSpace över flera oberoende projekt.

Implementeringar i CI/CD Pipelines

DevSpace kan hantera produktionsinstallationer som en del av din CI/CD-pipeline. Den tillhandahåller en officiell Docker-bild och stöder icke-interaktiv användning om du inkluderar explicita väljare som -l för etikett i dina kommandon.

Annons

En implementering i en CI-pipeline kan se ut så här:< /p> echo $KUBECONFIG_CI_VARIABLE > /sökväg/till/kubeconfig export KUBECONFIG=/sökväg/till/kubeconfig devspace deploy –profilproduktion –timeout 60 –wait –hoppa över

Detta kommer att distribuera din applikation med hjälp av produktionsprofilen DevSpace. –skip-build-flaggan instruerar DevSpace att inte bygga dina bilder. Bygger bör vanligtvis hanteras som ett separat steg tidigare i din pipeline.

–wait-flaggan tvingar DevSpace att vänta på tillgängligheten av Pod-antalet som anges i din devspace.yaml, istället för att avslutas direkt efter att du kört kommandot. Detta är mer lämpligt för en CI-miljö där du vill ha bekräftelse på att din arbetsbelastning är aktiv. Om du tillåter att DevSpace avslutas utan att vänta kan det innebära att din pipeline markeras som framgångsrik även om det finns ett distributionsproblem.

Slutsats

DevSpace vinner dragkraft som en utvecklarorienterat Kubernetes-distributionsverktyg som ger användbara abstraktioner för nyckeloperationer. Det minskar mängden YAML som behövs för att starta behållare i ett kluster, och ersätter det med enkla konfigurationsnycklar och terminalkommandon som definierar, bygger och startar bilder.

DevSpace

Som ett plattforms- och miljöagnostiskt verktyg tillåter DevSpace utvecklare att oroa sig mindre för de unika egenskaperna hos enskilda kluster. Oavsett distributionsmål, liknar den övergripande upplevelsen att bygga ett traditionellt system på din lokala dator. Detta hjälper till att mjuka upp Kubernetes inlärningskurva genom att kartlägga koncepten tillbaka till mer allmänt förstådda utvecklingsmetoder.