
DevSpace este un instrument open-source care îi ajută pe dezvoltatori să implementeze rapid aplicații native din cloud în clusterele Kubernetes. Abstrage o mare parte din complexitatea tradițională Kubernetes, astfel încât să puteți reveni la scrierea codului.
DevSpace este independent de platformă și funcționează cu clustere, de la mașina dvs. locală la serviciile publice gestionate populare. Instrumentul este un CLI care automatizează operațiunile folosind API-urile Kubernetes. Nu trebuie să instalați nimic în cluster pentru a utiliza DevSpace.
Practici moderne de dezvoltare pentru Kubernetes
DevSpace aduce multe aspecte ale experienței moderne de programare a aplicațiilor pentru implementările bazate pe Kubernetes. Vă permite să rulați mediul de dezvoltare pe cluster cu suport pentru reîncărcarea automată la cald. Când un fișier local se modifică, DevSpace vă actualizează automat containerele cu noul conținut.
Redirecționarea portului încorporată înseamnă că puteți utiliza localhost pentru a vă accesa implementarea. Nu trebuie să deschideți porturi sau să configurați intrări HTTP pe clustere de dezvoltare, oferind o experiență îmbunătățită pentru dezvoltatori și o securitate mai mare.

DevSpace ajută și la depanare. Acceptă setarea punctelor de întrerupere folosind un instrument Remote Debugger, oferind inspecție live a aplicațiilor containerizate în cloud. De asemenea, este ușor să vizualizați jurnalele unui container sau să începeți o sesiune de terminal fără a rula comenzi Kubectl greoaie.
O interfață web care rulează localhost vă permite să monitorizați și să interacționați cu aplicația care rulează. Puteți scăpa de terminalul dvs. dacă preferați o experiență mai vizuală.
Instalarea DevSpace
DevSpace este distribuit ca un binar autonom care funcționează pe sistemele Windows, Mac și Linux. Sunt disponibile mai multe opțiuni de instalare. Iată comanda recomandată pentru a descărca DevSpace pentru Linux și pentru a adăuga CLI în calea dvs.:
dev sudo install devspace /usr/local/bin
Alternativ, puteți utiliza npm, managerul de pachete Node, pentru a instala și actualiza DevSpace:
npm install -g devspace
Această comandă vă va oferi o funcționare devspace în calea dvs., cu condiția să aveți deja instalat npm.
DevSpace folosește „activ”KUBE_CONTEXT” în același mod ca și alte instrumente ecosistemice precum Kubectl și Helm. A stabilit KUBECONFIG la un fișier de configurare compatibil Kubectl care definește conexiunea la cluster:
export KUBECONFIG=/path/to/kubeconfig.yaml # Uses $KUBECONFIG devspace deploy
Crearea unui proiect
Primul pas în construirea cu DevSpace este să inițializați directorul de proiect. Aceasta va crea un devspace.yaml fișier care conține configurația DevSpace pentru depozitul dvs.
devspace init
Vi se va solicita să selectați rutina de implementare pe care intenționați să o utilizați. DevSpace poate funcționa cu Kubectl, Helm sau Kustomize atunci când lansați aplicația în cluster.

Cel sugerat QUICKSTART opțiunea este o diagramă specială care vă permite să definiți componente ale aplicației dvs., cum ar fi serverul web frontend, serverul API backend și baza de date, în loc să furnizați diagrame Helm sau manifeste Kubectl create manual. Utilizați acest lucru dacă construiți un sistem cu o structură convențională și nu doriți să petreceți timp creând propriile resurse Kubernetes.
Urmați instrucțiunile pentru a furniza DevSpace calea către fișierul dvs. Docker. Va trebui să furnizați autentificarea de registry și câteva informații de bază despre imaginea dvs., cum ar fi portul pe care ascultă. DevSpace va produce automat o configurație gata de utilizare care vă permite să rulați devspace deploy pentru a vă pune aplicația live pe Kubernetes.
Dacă nu utilizați opțiunea de pornire rapidă, va trebui să furnizați calea către diagramele Helm sau manifestele Kubernetes. Urmați instrucțiunile pentru a construi o configurație inițială. Odată ce ați ieșit din asistentul de configurare, puteți continua să adăugați imagini și implementări suplimentare, editând manual devspace.yaml fişier.
Adăugarea unei imagini
Proiectele DevSpace sunt construite din una sau mai multe imagini container. Pentru a înregistra o imagine în proiectul dvs., adăugați-o sub images cheia dvs devspace.yamlfişier:
images: app: image: example.com/example/image:latest dockerfile: ./Dockerfile build: disabled: true
The image câmpul definește numele etichetei imaginii. The dockerfile câmpul este opțional; când este setat, ar trebui să facă referire la calea către fișierul Docker al imaginii din proiectul dvs. Imaginile cu Dockerfiles vor fi create automat de către devspace build și devspace deploy comenzi, cu excepția cazului în care build.disabled este true în configurația imaginii.
Imaginile sunt construite în paralel pentru a accelera performanța. The --build-sequential flag obligă imaginile să fie construite individual, în ordinea în care sunt specificate. DevSpace va împinge automat fiecare imagine în registrul respectiv după ce se finalizează construcția.
Imaginile nu sunt reconstruite automat decât dacă DevSpace detectează o modificare fie în fișierul Dockerfile, fie în fișierele din contextul lor de construcție. Puteți forța o reconstrucție a tuturor imaginilor configurate cu ajutorul --force-build steag.
Adăugarea unei implementări
A doua bucată din a devspace.yaml este al tau deployments. Acestea definesc resursele care vor fi create în clusterul dumneavoastră.
deployments: - name: "helm chart" helm: chart: name: example/example-app values: VARIABLE_OVERRIDE: "new-value" - name: "kubectl manifests" kubectl: manifests: - .kube/manifests
Acest fișier definește două implementări separate, una folosind Helm și cealaltă Kubectl. Când alergi devspace deploy, atât diagrama Helm, cât și manifestele Kubectl vor fi instalate în cluster.
Repetând deploy comanda vă va actualiza implementările. DevSpace redistribuie numai componentele care s-au modificat, cu excepția cazului în care --force-deploy este folosit steag.
Deoarece DevSpace funcționează în clustere, promovarea implementării dvs. de la dezvoltare la producție este un caz de schimbare a dvs. KUBECONFIG variabilă de mediu și reluare devspace deploy. Acest lucru vă oferă un singur mecanism consistent pentru gestionarea mai multor implementări independente ale sistemului dumneavoastră.
Utilizarea profilurilor
DevSpace acceptă profiluri care vă permit să modificați devspace.yaml secțiuni pentru fiecare dintre mediile dvs. Fiecare profil numit poate înlocui, îmbina și modifica câmpuri din fișierul dvs. de configurare.
Profilurile în sine sunt, de asemenea, definite în dvs devspace.yaml:
images: api-server: image: example.com/api-server:latest web-server: image: example.com/web-server:latest debug: image: example.com/debug-tool:latest # ... omitted profiles: - name: production patches: - op: remove path: images.debug
Profilurile sunt activate prin trecerea -p sau --profile marcați comenzile DevSpace. Iată cum să începeți o implementare folosind production profil definit mai sus. Implementarea nu va include debug imaginea, deoarece este eliminată de unul dintre patch-urile profilului.
devspace deploy --profile production
Folosind Hot Reload
Funcționalitatea de reîncărcare la cald este activată prin setarea sincronizării fișierelor:
dev: sync: - imageSelector: example.com/api-server:latest localSubPath: ./api/ containerPath: /var/www/html excludePaths: - vendor/
Adaugă dev cheie ca un câmp de nivel superior în dvs devspace.yaml, apoi utilizați sync pentru a configura reîncărcarea la cald pe bază de imagine. The imageSelector potrivește etichetele de imagine pentru a aplica regula de reîncărcare la cald. Fișiere de la localSubPath din directorul dvs. de lucru va fi sincronizat cu containerPath în cazurile de containere implementate.
Porniți o sesiune de reîncărcare la cald rulând devspace dev sau devspace sync. Prima comandă pornește toate caracteristicile mediului DevSpace pentru dezvoltatori, inclusiv redirecționarea portului și fluxul de jurnal în direct.
Reîncărcarea la cald este implicit înlocuirea fișierelor din containerele existente. Este similar cu utilizarea volumelor Docker și a monturilor de legare atunci când lucrați cu instanțe de containere locale. În unele scenarii, este posibil să doriți să începeți o nouă implementare DevSpace atunci când sistemul dvs. de fișiere se schimbă. Acest lucru se realizează prin intermediul separat autoReload opțiune:
images: api: image: example.com/api-server:latest deployments: - name: api-deployment # ... omitted dev: autoReload: paths: - ./kernel/* images: - example.com/api-server:latest deployments: - api-deployment
Acest exemplu va fi redistribuit api-deployment ori de câte ori fișiere în local kernel schimbarea directorului. Acest lucru este ideal atunci când modificați fișierele care trebuie rulate printr-un proces de compilare pentru a le face utile pentru containerele dvs.
Port forwarding
Redirecționarea portului este configurată prin intermediul dev.ports câmp din dvs devspace.yaml. Redirecționarea inversă este, de asemenea, acceptată, permițând localhost adresele din containerele dvs. se mapează la porturile de pe mașina dvs. locală.
dev: ports: - imageSelector: example.com/api-server:latest forward: - port: 8080 remotePort: 80 reverseForward: - port: 9000 remote: 9000
Acest exemplu setează un forward de la localhost:8080 pe mașina dvs. la portul 80 în containere care rulează example.com/api-server imagine. Există, de asemenea, o inversare înainte care direcționează traficul în container localhost:9000 înapoi la portul 9000 al mașinii dvs.
Alte caracteristici
Pe lângă capabilitățile acoperite aici, DevSpace oferă și suport pentru alte câteva grupuri de caracteristici care vă permit să monitorizați implementările, să interacționați cu containerele și să configurați fluxuri de lucru avansate de dezvoltare:
- Lansări automate ale terminalelor vă permite să începeți o sesiune shell de la distanță de fiecare dată când rulați
devspace dev. - Deschidere automată a adresei URL pornește site-uri web și aplicații web în browser când intrați în modul de dezvoltare.
- Înregistrare configurabilă definește ce containere ar trebui să apară în fluxul de jurnal în modul dev.
- Comenzi personalizate acționează ca comenzi rapide către acțiuni comune, ajutând noii membri ai echipei să interacționeze cu implementările tale fără a fi nevoie să învețe procese îndelungate în Kubectl.
- Cârlige rulați comenzi în timpul procesului de implementare, permițându-vă să configurați manual containerele sau să înregistrați noi implementări la un serviciu de monitorizare centralizat.
- Interfața cu utilizatorul rulează automat în modul de dezvoltare cu
devspace devși poate fi deschis în browser folosinddevspace ui.
DevSpace oferă, de asemenea, pluginuri care pot adăuga și mai multe funcționalități sistemului. API-ul pluginului acceptă instalarea de la adrese URL la distanță sau scripturi locale și facilitează noi comenzi, cârlige și variabile. Dezvoltarea propriului plugin oferă o modalitate de a standardiza utilizarea DevSpace în mai multe proiecte independente.
Implementări în conducte CI/CD
DevSpace poate gestiona implementările de producție ca parte a conductei CI/CD. Oferă o imagine oficială Docker și acceptă utilizarea non-interactivă dacă includeți selectoare explicite, cum ar fi -l pentru etichetă în comenzile dvs.
O implementare în interiorul unei conducte CI ar putea arăta astfel:
echo $KUBECONFIG_CI_VARIABLE > /path/to/kubeconfig export KUBECONFIG=/path/to/kubeconfig devspace deploy --profile production --timeout 60 --wait --skip-build
Aceasta va implementa aplicația dvs. folosind production Profil DevSpace. The --skip-build flag indică DevSpace să nu construiască imaginile dvs. Construcțiile ar trebui de obicei tratate ca o etapă separată mai devreme în pipeline.
The --wait flag forțează DevSpace să aștepte disponibilitatea numărului de pod specificate în dvs devspace.yaml, în loc să se încheie imediat după ce executați comanda. Acest lucru este mai potrivit pentru un mediu CI în care doriți confirmarea faptului că volumul de lucru este activ. Permiterea lui DevSpace să iasă fără a aștepta ar putea însemna ca conducta dvs. să fie marcată ca reușită, chiar dacă există o problemă de implementare.
Concluzie
DevSpace câștigă teren ca instrument de implementare Kubernetes orientat către dezvoltatori, care oferă abstracții utile pentru operațiunile cheie. Reduce cantitatea de YAML necesară pentru a lansa containere într-un cluster, înlocuindu-l cu chei de configurare simple și comenzi de terminal care definesc, construiesc și pornesc imagini.

Fiind un instrument independent de platformă și mediu, DevSpace permite dezvoltatorilor să-și facă mai puține griji cu privire la caracteristicile unice ale clusterelor individuale. Indiferent de ținta de implementare, experiența generală este similară cu construirea unui sistem tradițional pe mașina dvs. locală. Acest lucru ajută la atenuarea curbei de învățare Kubernetes prin maparea conceptelor înapoi la practicile de dezvoltare înțelese mai universal.

