Vodič kroz DevOps na tri platforme
Ova knjiga nije nastala tako što je najpre napravljen školski plan poglavlja, a zatim prema njemu prikupljana građa. Nastala je obrnutim putem: iz učenja, rada, pitanja, pokušaja, grešaka, laboratorijskih scenarija i velikog broja beležaka koje su se postepeno povezivale u sve jasniju celinu. Njena struktura zato ne prati samo redosled kojim se tehnologije obično predstavljaju, već put kojim je bilo potrebno proći da bi se one zaista razumele.
Do februara 2025. godine završila sam niz Red Hat obuka: RH124 i RH134 za Linux administraciju, kao i DO180 i DO188 za rad sa kontejnerima, OpenShift platformom i razvojem kontejnerizovanih aplikacija. Potom sam započela CL110, posvećen Red Hat OpenStack okruženju, i o tome obavestila svoje pretpostavljene. Dobila sam potvrdu da su takve veštine organizaciji potrebne, da se postepeno kreće ka kontejnerizovanim aplikacijama i da postojeća VMware infrastruktura prirodno otvara prostor i za upoznavanje sa Tanzu platformom.
U martu 2025. godine počela sam zato sistematično da učim VMware, a zatim i Tanzu. Istovremeno sam dopunjavala ranije beleške o OpenShiftu i Podmanu. Ubrzo je postalo jasno da nijedna platforma ne može biti stvarno shvaćena ako se poznaju samo njeni interfejsi, nazivi proizvoda i karakteristične komande. Bilo je potrebno vratiti se zajedničkom temelju: kontejnerima, Kubernetes arhitekturi, API objektima, deklarativnom upravljanju, mreži, storage-u, bezbednosti i operativnim procesima. Tako je u beleške ušao i Vanilla Kubernetes — ne kao još jedan proizvod za poređenje, već kao najčistija osnova za razumevanje onoga što Tanzu i OpenShift proširuju, automatizuju, štite ili predstavljaju na drugačiji način.
U maju 2025. godine kupila sam privatni Lenovo Legion 5 Pro i na njemu počela da gradim sopstvena laboratorijska okruženja. Podešavala sam virtuelne mašine, SSH pristup, port forwarding i WireGuard, povezivala sisteme i osmišljavala scenarije koji nisu bili prepisani iz gotovih vežbi. Svaki scenario nastajao je iz pitanja: šta bi se dogodilo u realnom okruženju, kako bi se problem prepoznao, kojim redosledom bi se proveravale pretpostavke, kako bi se dokazalo da rešenje radi i kako bi se sistem vratio u prethodno stanje ako promena ne uspe?
Detaljno sam beležila početno stanje, izvršene korake, komande, rezultate, probleme na koje sam nailazila i način na koji su rešeni. Beleške su se gomilale i dugo ličile na kupus tema, primera, objašnjenja i povezanih pitanja. Međutim, taj „kupus” nije bio bez unutrašnje logike. Pojmovi su se vraćali onda kada su bili potrebni za razumevanje sledećeg postupka, a laboratorije su dolazile tek kada je postojalo dovoljno teorijske osnove da komande ne budu izvršavane mehanički.
Velika zbirka beležaka najpre je grupisana u deset programskih celina radionica IT Kermes: DevOps i srodne discipline. Početni program obuhvatio je programske pipeline-ove i automatizaciju kroz Bash, Python virtuelna okruženja i primenu matematičkih modela; Linux administraciju i mrežnu infrastrukturu; sisteme baza podataka u korporativnom okruženju; razvoj i orkestraciju mikroservisa; uporedni rad u Vanilla Kubernetes, OpenShift i Tanzu okruženjima; kao i tehnički i organizacioni IT audit.
Napredni program proširio je tu osnovu na napredni Kubernetes, metaprogramiranje, MLOps i AIOps u produkcionim sistemima, praktičnu integraciju algoritama mašinskog učenja, Site Reliability Engineering i rešavanje složenih projektnih zahteva karakterističnih za rad na globalnom tržištu. Uz ove celine razvijane su hands-on radionice za Bash i Python, Linux administraciju i mreže, Oracle PL/SQL, Git i GitHub, DevOps alate, Kubernetes, OpenShift, VMware Tanzu, YAML i JSON, metaprogramiranje, MLOps, AIOps i SRE.
Svaka od tih celina imala je sopstvene podceline i sopstveni skup beležaka. Kada su međusobne veze postale dovoljno jasne, iz njih je izdvojen ovaj vodič: knjiga usmerena na zajedničke DevOps i cloud-native temelje i njihovu primenu u tri okruženja — Vanilla Kubernetes, VMware Tanzu i Red Hat OpenShift.
Iz istog procesa nastala je i biblioteka IT tutorijali, u kojoj su tehničke beleške, radionice i praktična iskustva postepeno oblikovani u povezane obrazovne sadržaje namenjene učenju i samostalnom radu. Projekat je zatim proširen i na moja druga interesovanja — od ajurvede, aromaterapije i pametnog kuvanja, preko stranih jezika, do novih EPUB knjiga i razgovora objedinjenih u celini Ćaskanje sa Ailsom. Tako je, iz prvobitne zbirke stručnih beležaka i IT radionica, postepeno formirana Digitalna biblioteka Tashizza: prostor u kojem se susreću tehnologija, nauka, umetnost, obrazovanje, svakodnevni život i trajna radoznalost.
Vanilla Kubernetes, Tanzu i OpenShift nisu tri potpuno odvojena sveta. Njih povezuje zajednički Kubernetes temelj, ali se razlikuju način instalacije i upravljanja, upravljački slojevi, podrazumevani alati, bezbednosni modeli, integracije, korisničko iskustvo i odgovornosti koje platforma preuzima od administratora i drugih članova tehničkog tima. Zbog toga ih nije korisno učiti kao tri nepovezana skupa komandi.
Vanilla Kubernetes u ovoj knjizi ima ulogu temelja. On omogućava da se jasno vide osnovne komponente, API objekti, kontrolne petlje i odnosi između kontrolne i radne ravni. Tanzu pokazuje kako se Kubernetes uklapa u VMware infrastrukturni i enterprise ekosistem i kako se njegovo upravljanje povezuje sa virtualizacionim i infrastrukturnim slojem. OpenShift prikazuje integrisanu platformu koja Kubernetes proširuje sopstvenim administrativnim, razvojnim, bezbednosnim i operativnim mehanizmima.
Cilj poređenja nije da se proglasi jedna „najbolja” platforma. Cilj je da čitalac nauči da razlikuje otvoreni standard od proizvoda, zajednički Kubernetes koncept od platformske implementacije i tehničku mogućnost od operativnog procesa. Kada je zajednički temelj stabilan, prelazak između platformi postaje mnogo lakši, a njihove razlike smislenije i jednostavnije za procenu.
Takav pristup omogućava i drugačiji način učenja. Umesto da se za svaku platformu iznova pamti zaseban skup termina i procedura, najpre se razume problem koji treba rešiti, zatim Kubernetes mehanizam koji se nalazi u njegovoj osnovi, a potom način na koji Vanilla Kubernetes, Tanzu i OpenShift taj mehanizam izlažu, proširuju, automatizuju ili ograničavaju. Time se znanje lakše prenosi iz jednog okruženja u drugo.
Redosled gradiva prati put od šire slike ka dubini, a zatim ka operativi. Najpre se uspostavlja cloud-native i DevOps kontekst. Zatim se objašnjava kontejnerizacija, pa jezici i formati za razmenu podataka i terminologija koja u Kubernetes svetu često ima preciznije značenje nego u svakodnevnom IT govoru. Tek potom dolaze arhitektura klastera, alati i radna opterećenja.
Praktikumi se pojavljuju tek kada čitalac već ima dovoljno pojmovne osnove da razume šta komande menjaju, koji kontroler reaguje, gde se stanje čuva i kako se rezultat proverava. Posle praktičnog rada slede infrastrukturni slojevi — storage, networking i bezbednost — a zatim operacionalizacija: pristup, održavanje, monitoring, logovanje, observability, incidenti, identiteti, backup, oporavak i pouzdanost sistema. Završni tehnički deo uvodi GitOps, AI/ML i pitanja performansi kao savremeni nastavak istih temeljnih principa.
Takva struktura vodi čitaoca kroz pet povezanih nivoa: razumevanje konteksta, razumevanje Kubernetes-a, praktičan rad, produkciono upravljanje i savremenu evoluciju platforme. Pojedine teme se zato namerno pojavljuju na više mesta, ali svaki put sa drugom funkcijom. Bezbednost se, na primer, najpre prepoznaje kao princip, zatim primenjuje u laboratoriji, potom proučava kroz mehanizme platforme i najzad proverava kao deo produkcione operacionalizacije.
Poglavlje o alatima treba čitati kao mapu cloud-native ekosistema, a ne kao spisak programa koje je potrebno odjednom naučiti. Najvažnije je razumeti gde se određeni alat nalazi u životnom ciklusu sistema, koji problem rešava, sa kojim komponentama komunicira i da li pripada zajedničkom cloud-native sloju ili je karakterističan za određenu platformu. Detaljna upotreba dobija puni smisao tek u kasnijim poglavljima i konkretnim scenarijima.
Materijal je namenjen čitaocima koji žele temeljno da razumeju zajedničke DevOps i cloud-native principe, Kubernetes kao zajednički tehnološki temelj i način na koji se ti principi primenjuju u Vanilla Kubernetes, Tanzu i OpenShift okruženjima. Nije neophodno prethodno profesionalno iskustvo u administraciji klastera, ali je korisna spremnost da se pojmovi povezuju sa infrastrukturom, aplikacijama i praktičnim radom.
Koristan je sistem administratorima koji prelaze sa fizičke ili virtuelne infrastrukture na kontejnere, DevOps i platformskim inženjerima koji žele čvršću osnovu ispod automatizovanih tokova, programerima koji žele da razumeju okruženje u kojem se njihove aplikacije izvršavaju, kao i mrežnim, storage i bezbednosnim stručnjacima koji sarađuju na Kubernetes, Tanzu ili OpenShift projektima.
Materijal je namenjen i ljudima koji razmatraju ulazak u IT sektor. Cloud-native platforme povezuju Linux, mreže, DNS, storage, bezbednost, automatizaciju, aplikativnu arhitekturu, monitoring i upravljanje promenama, pa kroz ovu oblast čitalac može realnije sagledati kakve probleme rešavaju sistem administracija, DevOps, platform engineering, SRE i cloud timovi.
Posebnu vrednost može imati za administratore u nedovoljno dokumentovanim okruženjima. Kada nisu jasni vlasnici, zavisnosti, verzije, politike, granice odgovornosti ili postupci oporavka, sposobnost da se stanje prikupi, klasifikuje, dokaže i pretvori u održivu dokumentaciju postaje jednako važna kao tehničko upravljanje platformom.
Za mene je ova knjiga istovremeno uređena mapa znanja koje povezuje infrastrukturu i aplikacije. Umesto da informacije ostanu rasute između zvanične dokumentacije, laboratorijskih beleški i iskustava iz različitih platformi, organizovane su redosledom koji omogućava učenje, obnavljanje, proveru, poređenje i dalje produbljivanje.
Čitalac koji tek ulazi u ovu oblast trebalo bi da prati knjigu redom. Terminologija, arhitektura, alati i postupci grade se sloj po sloj, pa preskakanje zajedničkih temelja lako pretvara laboratoriju u niz komandi bez razumevanja. Teško je pravilno razumeti NetworkPolicy bez mrežnog modela i CNI-ja, StatefulSet bez Service-a i trajnog storage-a, GitOps bez deklarativnog upravljanja ili disaster recovery bez razumevanja etcd-a, PKI-ja i topologije kontrolne ravni.
Nije potrebno zapamtiti svaku komandu pri prvom čitanju. Važnije je razumeti odnose između komponenti i postupaka: manifest postaje API objekat, kontroler poredi željeno i stvarno stanje, scheduler bira čvor, kubelet obezbeđuje izvršavanje, Service pronalazi odgovarajuće backend-e, dok mrežni i storage dodaci ostvaruju funkcije koje Kubernetes definiše kroz odgovarajuće interfejse. Kada su ti odnosi jasni, pojedinačne komande postaju sredstvo za rad, a ne gradivo koje se mehanički pamti.
Pri prelasku sa zajedničkih Kubernetes temelja na pojedinačne platforme korisno je stalno postavljati ista pitanja: koji problem se rešava, koji Kubernetes koncept se nalazi u osnovi rešenja, šta sama platforma automatizuje, koji deo odgovornosti ostaje administratoru i kako se rezultat proverava. Na taj način razlike između Vanilla Kubernetes, Tanzu i OpenShift okruženja postaju deo jedne tehničke slike, a ne tri odvojena skupa procedura.
Svaku praktičnu vežbu treba izvoditi u kontrolisanom i bezbednom laboratorijskom okruženju. Pre promene potrebno je zabeležiti kontekst, namespace ili drugi relevantni opseg rada, verzije komponenti, početno stanje, cilj, pretpostavke i očekivani rezultat. Treba unapred odrediti način validacije i mogućnost povratka, sačuvati izlaze relevantnih komandi i tek tada izvršiti promenu.
Posle izvršenja nije dovoljno utvrditi da komanda nije prijavila grešku. Potrebno je proveriti stvarno stanje sistema: API objekte, događaje, logove, mrežnu dostupnost, stanje čvorova i workload-a, trajnost podataka, zavisnosti od infrastrukture i ponašanje aplikacije. U produkcionom radu promena se ne smatra uspešnom samo zato što je naredba završena bez greške, već tek kada postoje dokazi da je sistem dostigao očekivano stanje.
Posebno je korisno voditi sopstveni repozitorijum manifesta, konfiguracije i operativnih beleški. Treba zapisivati pretpostavke, vreme događaja, početno stanje, izvršene promene, greške, relevantne izlaze komandi, dokaze, objašnjenje uzroka problema i rezultat korekcije. Beleške o neuspelim pokušajima često su vrednije od prepisanog idealnog postupka, jer pokazuju kako sistem reaguje kada neka pretpostavka nije tačna.
Dobar tehnički zapis treba da omogući da drugi član tima razume šta je urađeno, zbog čega je promena izvedena, kakvo je stanje postojalo pre nje, kako je rezultat proveren i na koji način bi postupak mogao da se ponovi ili vrati. Dokumentacija koja može da izdrži pregled drugog člana tima vrednija je od komande koju samo njen autor ume da ponovi.
Iskusniji čitaoci mogu koristiti knjigu kao mapu i referentni vodič. Mogu se neposredno vratiti na RBAC, probe, scheduling, mrežu, storage, audit, nadogradnje, GitOps, disaster recovery, observability, platformsku automatizaciju ili druge teme koje su im potrebne, a zatim pratiti unazad zavisnosti neophodne za potpuno razumevanje konkretnog problema. I pri takvom načinu korišćenja korisno je zadržati vezu između koncepta, platforme, konfiguracije, infrastrukture i operativnog scenarija.
Najvažnija ideja ovog vodiča jeste da DevOps nije jedan alat, Kubernetes nije samo skup YAML fajlova, a platforma nije samo grafički interfejs iznad klastera. Savremeni informacioni sistem čine ljudi, procesi, aplikacije, infrastruktura, mreža, podaci, identiteti, automatizacija, merenje, dokumentacija i sposobnost oporavka. Svaka promena utiče na više slojeva i mora se razumeti u njihovom međusobnom odnosu.
Isto važi i za tri platforme koje knjiga prati. Vanilla Kubernetes omogućava da se vidi zajednički mehanizam, Tanzu povezuje taj mehanizam sa infrastrukturnim i enterprise slojem, a OpenShift pokazuje kako se iznad Kubernetes osnove mogu izgraditi dodatni administrativni, razvojni, bezbednosni i operativni mehanizmi. Razumevanje njihovih sličnosti i razlika nije cilj samo po sebi; cilj je sposobnost da se problem sagleda nezavisno od proizvoda, a zatim pronađe odgovarajući način njegovog rešavanja u konkretnom okruženju.
Od ogromnih beležaka do uređene knjige zadržana je ista osnovna namera: prvo razumeti pojmove, zatim odnose, potom postupke i najzad proveriti znanje kroz laboratoriju. Ako ovaj vodič pomogne čitaocu da ne izvršava komande naslepo, da postavlja bolja pitanja, dokumentuje dokaze, razume posledice promena i sigurnije povezuje tri platforme u jednu tehničku sliku, onda je ispunio svoju svrhu.
Ovaj materijal predstavlja slobodan i sistematično organizovan obrazovni vodič kroz DevOps i cloud-native principe, Kubernetes kao zajednički tehnološki temelj i njihovu praktičnu primenu u Vanilla Kubernetes, Tanzu i OpenShift okruženjima. Namenjen je učenju, povezivanju pojmova, laboratorijskom radu, razumevanju infrastrukturnih i aplikativnih zavisnosti i razvoju praktičnog administratorskog i platformskog načina razmišljanja.
Materijal nije zvanična dokumentacija Kubernetes projekta, VMware/Broadcom, Red Hat-a ili drugih proizvođača i projekata pomenutih u knjizi, nije program ovlašćene profesionalne obuke i nije zamena za rad pod nadzorom iskusnih stručnjaka. Njegovo čitanje samo po sebi nije garancija polaganja sertifikacionog ispita niti dovoljan osnov za samostalnu intervenciju u kritičnom produkcionom okruženju.
Kubernetes, njegove distribucije i dodaci, Tanzu, OpenShift, infrastrukturne komponente, API-ji, podržane verzije, integracije i preporučeni operativni postupci menjaju se. Za profesionalnu primenu potrebno je proveravati aktuelnu upstream dokumentaciju, dokumentaciju proizvođača i izabranih komponenti, matrice kompatibilnosti, bezbednosne preporuke, politike podrške i procedure konkretne organizacije.
Primeri, manifesti, konfiguracije, skripte, komande i laboratorijske vežbe služe učenju. Pre produkcione primene potrebno je proceniti uticaj promene, potvrditi postojanje odgovarajućeg backup-a i mogućnost oporavka, razumeti infrastrukturne, mrežne, storage, bezbednosne i aplikativne zavisnosti, obezbediti potrebna odobrenja i pripremiti kontrolisan rollback.
Poseban oprez potreban je pri promenama identiteta i autorizacije, RBAC pravila, admission i bezbednosnih politika, mrežne konfiguracije, tajni, sertifikata, storage resursa, control plane komponenti, virtuelne i fizičke infrastrukture, klasterskog stanja, backup-a, restore postupaka i nadogradnji. Destruktivne ili teško reverzibilne komande i procedure moraju se prvo proveriti nad tačno određenim ciljem u kontrolisanom laboratorijskom okruženju.
Digitalna biblioteka TASHIZZA nastaje sa ciljem da složene stručne oblasti učini preglednim, sistematičnim i razumljivim bez pojednostavljivanja njihove suštine. Svaka knjiga predstavlja uređenu celinu koja povezuje teorijske osnove, praktične primere, laboratorijske vežbe, administrativne postupke i realne scenarije iz profesionalnog okruženja.
Cilj nije da se obuhvati svaka pojedinačna funkcionalnost određene tehnologije niti da se predstavi samo skup komandi ili koraka kroz grafički interfejs. Mnogo je važnije izgraditi stabilno razumevanje načina na koji sistemi funkcionišu, kako su međusobno povezani i zbog čega se određena rešenja primenjuju u stvarnim informacionim sistemima.
Poseban značaj pridaje se razumevanju celokupne infrastrukture. Serveri, operativni sistemi, mreže, storage sistemi, baze podataka, bezbednost, backup, monitoring, automatizacija, cloud platforme i DevOps alati posmatraju se kao međusobno povezani delovi jedinstvenog informacionog sistema, a ne kao izolovane tehnologije.
Pored tehničkog znanja, naglasak je stavljen na razvijanje infrastrukturnog načina razmišljanja. Svaka promena posmatra se kroz njene uzroke, posledice, zavisnosti, bezbednosne rizike, uticaj na druge sisteme i dugoročnu održivost. Takav pristup omogućava da se pojedinačne tehnologije povežu u jednu logičnu i funkcionalnu celinu.
Praktičan rad zauzima jednako važno mesto kao i teorija. Laboratorijska okruženja, praktični tutorijali, enterprise scenariji, mini projekti i završni integracioni projekti omogućavaju da stečeno znanje bude proverljivo, primenljivo i upotrebljivo u svakodnevnom radu.
Digitalna biblioteka nije zamišljena samo kao zbir pojedinačnih knjiga, već kao povezan sistem znanja. Oblasti poput Linux-a, VMware-a, Docker-a, Kubernetes-a, OpenShift-a, Oracle-a, automatizacije, programiranja, veštačke inteligencije i drugih tehnologija međusobno se dopunjuju i zajedno grade širu sliku savremene IT infrastrukture.
Posebna pažnja posvećena je sistematičnosti, jasnoći i dugoročnoj upotrebljivosti sadržaja. Svaka knjiga organizovana je tako da čitalac može postepeno napredovati od osnovnih pojmova, preko administracije i automatizacije, do realnih enterprise scenarija, bez potrebe da prethodno poseduje veliko praktično iskustvo.
Krajnji cilj digitalne biblioteke TASHIZZA jeste da predstavlja pouzdan, pregledan i dugoročno održiv izvor znanja koji pomaže razumevanju tehnologije, razvijanju profesionalnog načina razmišljanja i sigurnijem snalaženju u savremenim informacionim sistemima.
Ovaj vodič deo je slobodne digitalne biblioteke TASHIZZA. Osim kada je uz pojedinačni materijal izričito navedeno drugačije, autorski tekstovi, objašnjenja, knjige, tutorijali, praktikumi, beleške, originalne ilustracije, slike i drugi obrazovni sadržaji za koje je autorka nosilac odgovarajućih prava objavljeni su pod licencom Creative Commons Attribution 4.0 International – CC BY 4.0.
Licenca CC BY 4.0 omogućava čitanje, preuzimanje, kopiranje, deljenje, prevođenje, prilagođavanje, dopunjavanje i dalje objavljivanje sadržaja, uključujući njegovu komercijalnu upotrebu. Prilikom takvog korišćenja potrebno je na odgovarajući način navesti autorku i izvor, postaviti vezu ka licenci i jasno označiti da li je izvorni materijal menjan. Navođenje izvora ne sme stvarati utisak da autorka podržava novu verziju, njenog izdavača ili način na koji je sadržaj upotrebljen.
Kao osnovni podatak o izvornom delu navodi se: Nataša Mihajlović, TASHIZZA, https://tashizza.com. Puni uslovi licence dostupni su na stranici Creative Commons Attribution 4.0 International i u pratećem dokumentu LICENSE.
Osim kada je izričito navedeno drugačije, originalni primeri programskog i skriptnog koda, HTML struktura i šabloni, CSS, JavaScript, Bash skripte i drugi tehnički kod za koji je autorka nosilac odgovarajućih prava objavljeni su pod MIT licencom. MIT licenca dozvoljava korišćenje, kopiranje, menjanje, povezivanje, objavljivanje, distribuciju, podlicenciranje i prodaju kopija koda, pod uslovom da se u kopijama ili značajnim delovima koda sačuvaju obaveštenje o autorskim pravima i tekst MIT licence. Autorski i obrazovni tekst unutar HTML dokumenata ostaje obuhvaćen licencom CC BY 4.0.
Slobodno korišćenje sadržaja ne znači da su nazivi proizvoda, zaštitni znakovi, logotipi i tehnologije pomenuti u vodiču vlasništvo autorke ili sajta TASHIZZA. Nazivi VMware proizvoda, Tanzu, OpenShift, Kubernetes, Oracle i drugih pomenutih proizvoda i tehnologija pripadaju njihovim odgovarajućim nosiocima prava. U ovom vodiču koriste se isključivo radi identifikacije, stručnog objašnjenja, obrazovanja i informisanja i ne podrazumevaju povezanost, sponzorstvo, odobrenje ili podršku njihovih vlasnika.
Licence TASHIZZA primenjuju se samo na originalne materijale za koje je Nataša Mihajlović nosilac odgovarajućih prava. One ne menjaju uslove koji važe za citate, fotografije, ilustracije, zaštitne znakove, delove dokumentacije, delove koda i druge sadržaje trećih lica. Takvi materijali koriste se i dalje prenose u skladu sa pravima, licencama i pravilima njihovih odgovarajućih izvora.
Cilj otvorenog pristupa jeste da uređeno znanje ne ostane zatvoreno u ličnim beleškama. Čitalac je slobodan da uči, vraća se lekcijama, koristi ih kao osnovu za sopstveno istraživanje, razvija nove verzije i doprinosi daljem širenju znanja, uz poštovanje jednostavnih i jasno navedenih uslova odgovarajuće licence.