LFCA: Naučite se osnovnih konceptov uporabe vsebnikov – 22. del


Sčasoma, ko je povpraševanje po hitrem testiranju in uvajanju aplikacij naraščalo skupaj s hitrejšimi poslovnimi cikli, so bile organizacije prisiljene k inovacijam, da bi sledile hitremu poslovnemu okolju.

Prizadevanje za posodobitev aplikacij in izgradnjo novih za ustvarjanje agilnih delovnih tokov je privedlo do koncepta uporabe vsebnikov. Tehnologija zabojnikov je skoraj tako stara kot virtualizacija. Vendar pa kontejnerji niso vznemirili veliko navdušenja, dokler se leta 2013 na sceno ni pojavil Docker in vzbudil noro zanimanje med razvijalci in drugimi IT strokovnjaki.

Trenutno so vsi velikanski tehnološki subjekti, kot so Google, Amazon, Microsoft in Red Hat, če jih omenimo le nekaj, skočili na vabo.

Zakaj kontejnerji?

Eden od izzivov, s katerimi se soočajo razvijalci, je razlika v računalniških okoljih v vsaki fazi razvoja programske opreme. Težave se pojavijo, ko se programsko okolje razlikuje od stopnje do stopnje.

Aplikacija se lahko na primer brezhibno izvaja v preskusnem okolju z uporabo Pythona 3.6. Vendar se aplikacija obnaša čudno, vrne nekaj napak ali se v celoti zruši, ko je prenesena v produkcijsko okolje s Python 3.9.

Kontejnerji so prišli na prizorišče, da bi se soočili s tem izzivom in zagotovili, da aplikacije delujejo zanesljivo, ko se premikajo iz enega računalniškega okolja v drugo v vsaki fazi razvoja programske opreme – od osebnega računalnika razvijalcev pa vse do proizvodnega okolja. In ne samo okolje programske opreme lahko povzroči takšne nedoslednosti, temveč tudi razlike v varnostnih politikah.

Kaj so kontejnerji?

Vsebnik je izolirana programska enota, ki vso binarno kodo, knjižnice, izvedljive datoteke, odvisnosti in konfiguracijske datoteke pakira v en sam paket na način, da bo aplikacija nemoteno delovala, ko bo prenesena iz enega računalniškega okolja v drugo. Ne vsebuje slike operacijskega sistema, zaradi česar je lahek in lahko prenosljiv.

Slika vsebnika je samostojen, lahek in izvedljiv paket, ki združuje vse, kar je potrebno za izvajanje aplikacije. Med izvajanjem se slika vsebnika spremeni v vsebnik. V primeru Dockerja na primer slika Docker postane vsebnik Docker, ko se izvede v Docker Engine. Docker je okolje izvajanja, ki se uporablja za gradnjo kontejnerskih aplikacij.

Vsebniki delujejo v popolni izolaciji od osnovnega operacijskega sistema, vsebniške aplikacije pa bodo vedno delovale dosledno, ne glede na računalniško okolje ali infrastrukturo. Iz tega razloga lahko razvijalec razvije aplikacijo iz udobja tega prenosnika in jo zlahka namesti na strežnik.

Doslednost in zanesljivost izvajanja vsebnikov dajeta razvijalcem mir, saj vedo, da bodo njihove aplikacije delovale po pričakovanjih, ne glede na to, kje so nameščene.

Kako se vsebniki razlikujejo od navideznih strojev?

Skupna stvar, ki si jo delijo vsebniki in navidezni stroji, je, da delujejo v virtualiziranem okolju. Kontejnerizacija je v nekem smislu oblika virtualizirane tehnologije. Vendar se vsebniki od virtualnih strojev razlikujejo na več načinov.

Navidezni stroj, ki ga na kratko imenujemo tudi virtualni primerek ali VM, je emulacija fizičnega strežnika ali osebnega računalnika. Virtualizacija je tehnologija, ki omogoča ustvarjanje virtualnih strojev. Koncept virtualizacije sega v zgodnja sedemdeseta leta prejšnjega stoletja in je postavil temelje za prvo generacijo tehnologije v oblaku.

Pri virtualizaciji se sloj abstrakcije ustvari na vrhu golega strežnika ali računalniške strojne opreme. To omogoča, da se viri strojne opreme enega strežnika delijo na več virtualnih strojih.

Programska oprema, ki se uporablja za izdelavo sloja abstrakcije, se imenuje hipervizor. Hipervizor abstrahira virtualni stroj in gostujoči OS od dejanske gole kovine ali računalniške strojne opreme. Tako se navidezni stroj nahaja na vrhu hipervizorja, ki omogoča dostop do virov strojne opreme zahvaljujoč sloju abstrakcije.

Navidezni stroji izvajajo celoten operacijski sistem (gostujoči OS), ki je neodvisen od osnovnega operacijskega sistema (gostiteljski OS), na katerem je nameščen hipervizor. Gostujoči OS nato nudi platformo za gradnjo, testiranje in uvajanje aplikacij poleg njihovih knjižnic in binarnih datotek.

[ Morda vam bo všeč tudi: Kako namestiti KVM na CentOS/RHEL 8 ]

Obstajata dve vrsti hipervizorjev:

Ta hipervizor je nameščen neposredno na fizičnem strežniku ali osnovni strojni opremi. Med hipervizorjem in računalniško strojno opremo ni operacijskega sistema, od tod tudi ime oznake goli kovinski hipervizor. Zagotavlja odlično podporo, saj viri niso v skupni rabi z gostiteljskim operacijskim sistemom.

Hipervizorji tipa 1 se zaradi svoje učinkovitosti večinoma uporabljajo v podjetniških okoljih. Proizvajalci hipervizorja tipa 1 vključujejo VMware Esxi in KVM.

To velja tudi za gostujoči hipervizor. Nameščen je na vrhu gostiteljskega operacijskega sistema in si deli osnovne vire strojne opreme z gostiteljskim OS.

Hipervizorji tipa 2 so idealni za majhna računalniška okolja in se večinoma uporabljajo za testiranje operacijskih sistemov in raziskave. Proizvajalci hipervizorjev tipa 2 vključujejo VMware Workstation Pro.

Navidezni stroji so ponavadi ogromni (lahko zavzamejo več GB), se počasi zaženejo in ustavijo ter požrejo veliko sistemskih virov, kar vodi do prekinitev in počasnega delovanja zaradi omejenih virov. Kot tak se virtualni stroj šteje za obsežnega in je povezan z visokimi režijskimi stroški.

Kontejnerji

Za razliko od navideznega stroja vsebnik ne potrebuje hipervizorja. Vsebnik je nameščen na fizičnem strežniku in njegovem operacijskem sistemu ter si med drugim, kot so knjižnice in binarne datoteke, deli isto jedro kot OS. V istem sistemu lahko deluje več vsebnikov, pri čemer vsak od ostalih izvaja svoj nabor aplikacij in procesov. Priljubljene kontejnerske platforme vključujejo Docker in Podman.

Za razliko od virtualnih strojev, vsebniki delujejo popolnoma izolirano od osnovnega operacijskega sistema. Vsebniki so izjemno lahki – le nekaj megabajtov – zavzamejo manj prostora in so prijazni do virov. Enostavno jih je zagnati in ustaviti ter zmorejo več aplikacij kot virtualni stroj.

Vsebniki zagotavljajo priročen način načrtovanja, testiranja in uvajanja aplikacij iz vašega osebnega računalnika v produkcijsko okolje, pa naj bo to na mestu ali v oblaku. Tukaj je nekaj prednosti uporabe kontejnerskih aplikacij.

Pred zabojniki smo imeli staromodni monolitni model, kjer bi bila celotna aplikacija, sestavljena iz frontend in backend komponent, združena v en sam paket. Vsebniki omogočajo razdelitev aplikacije na več posameznih komponent, ki lahko komunicirajo med seboj.

Na ta način lahko razvojne skupine sodelujejo pri različnih delih aplikacije, pod pogojem, da niso narejene večje spremembe glede tega, kako aplikacije medsebojno delujejo.

Na tem temelji koncept mikrostoritev.

Več modularnosti pomeni večjo produktivnost, saj lahko razvijalci delajo na posameznih komponentah aplikacije in odpravljajo napake veliko hitreje kot prej.

V primerjavi z navideznimi stroji in drugimi običajnimi računalniškimi okolji vsebniki uporabljajo manj sistemskih virov, saj ne vključujejo operacijskega sistema. To preprečuje nepotrebne izdatke za nabavo dragih strežnikov za izdelavo in testiranje aplikacij.

Zaradi majhnega odtisa je kontejnerske aplikacije enostavno namestiti v več računalniških okolij/operacijskih sistemov.

Vsebniki omogočajo hitro uvajanje in skaliranje aplikacij. Zagotavljajo tudi prepotrebno prilagodljivost za uvajanje aplikacij v več programskih okoljih.

Kako vsebniki koristijo ekipam DevOps?

Kontejnerji igrajo ključno vlogo pri DevOps in nemogoče si je predstavljati, kako bi bilo stanje brez kontejnerskih aplikacij. Torej, kaj vsebniki prinašajo na mizo?

Prvič, vsebniki podpirajo arhitekturo mikrostoritev, ki omogočajo neodvisno razvoj, uvajanje in prilagajanje gradnikov celotne aplikacije. Kot že omenjeno, to omogoča večje sodelovanje in hitro uvajanje aplikacij.

Kontejnerizacija igra tudi pomembno vlogo pri olajšanju cevovodov CI/CD z zagotavljanjem nadzorovanega in doslednega okolja za gradnjo aplikacij. Vse knjižnice in odvisnosti so skupaj s kodo pakirane v eno enoto za hitrejšo in enostavnejšo uporabo. Preizkušena aplikacija bo natančna programska oprema, ki bo nameščena v proizvodnji.

Poleg tega vsebniki izboljšajo uvedbo popravkov in posodobitev, ko je aplikacija razdeljena na več mikrostoritev, vsaka v ločenem vsebniku. Posamezne vsebnike je mogoče pregledati, popraviti in znova zagnati, ne da bi prekinili preostanek aplikacije.

Vsaka organizacija, ki želi doseči zrelost v DevOps, bi morala razmisliti o izkoriščanju moči vsebnikov za agilno in brezhibno uvajanje. Izziv je v znanju, kako jih konfigurirati, zavarovati in brezhibno namestiti v več okoljih.