Blog

CROZ Ljetni akcelerator: Prvo inženjersko iskustvo

By March 2, 2021 April 26th, 2023 No Comments

U nekom sam trenutku svog života odlučio da ne želim biti programer. Repetitivni kod počeo me previše zamarati. Srećom, u pozadini te zamorne priče cijeli je jedan drugi aspekt IT-a – podrška za sav taj kod koji se svakodnevno izbacuje. Stoga sam krenuo u potragu za poslom na kojem bih radio s onim što vrti kod, umjesto da radim na kodu. Baš u pravo vrijeme, CROZ je tražio praktikante na, između ostalog, poziciji sistemskog inženjera.

Nekoliko tjedana kasnije poslao sam prijavu, uputio se na vjerojatno najopušteniji intervju u svom životu i upao sam na Ljetni akcelerator! Prije početka prakse, očekivao sam da ćemo od mentora dobiti malo kabela, par kliješta i izolir trake, ali ispostavilo se da nisam mogao više biti u krivu.

Projekt na kojem smo radili bio je toliko moderan da nismo znali ništa o njemu – OpenShift! Kad su nam ga predstavljali, naši su mentori održali motivacijski govor koji je glasio otprilike ovako: „Mi donekle znamo kako ovo funkcionira, učit ćemo zajedno s vama“. I tako smo, podosta zbunjeni, ali motivirani i željni učenja, započeli svoju ljetnu praksu. Na početku smo odradili dvotjednu edukaciju na kojoj smo prošli pozamašan broj tehnologija. Nakon edukacije bili smo spremni prionuti na zadatak – sastavljanje NextCloud instance u OpenShiftu.

Iz moje perspektive – security dijela cijele stvari – prvo što je trebalo napraviti bilo je svima omogućiti pristup platformi OpenShift. Trebalo mi je nekoliko dana da se snađem i postavim svoju prvu u dugom nizu LDAP konekcija. Vidjevši kako se to radi, skupio sam i više nego dovoljno vještina da postavljam LDAP konekcije iznova i iznova.

Kad smo svakome posložili uvjete za rad, došlo je vrijeme da svatko postavi svoju instancu Nextclouda kako bismo vidjeli što je to i kako djeluje. To je pak dovelo do mnogo frustriranih preokretanja očima jer nismo znali da OpenShift ima određene hirove koji nisu prisutni na Kubernetesu/Dockeru za koje su bile izgrađene izvorne kontejner slike. Na primjer, OpenShift ne dopušta da se zadani portovi poput 80, 443 i bilo čega drugog ispod 1024 koriste u kontejnerima, što i dan danas smatram jednim od najprofinjenijih hirova. I tako sam se uputio na put mijenjanja kontejnera koji ne želi biti promijenjen.

Ono što sam naučio na tom putu vjerojatno nikada neću zaboraviti. Prva stvar bila je kako Docker gradi slike, ili, točnije, kako funkcioniraju Dockerfiles. Samo po sebi prilično je jednostavno, ali ipak je potrebno malo igranja da biste vidjeli što možete, a što ne možete učiniti. Krajnji rezultat bila je Dockerova slika s malo prilagodbe Apache serveru i postavljanje zadanih portova na veću vrijednost kako bi je mogli koristiti neprivilegirani korisnici. Kasnije je to preraslo u sliku na Quay.io-u s vlastitim okidačem koji je povezan s GitHubom kako bi mi olakšao cijeli postupak ažuriranja. Na to sam zaista ponosan.

Da se ne lažemo, trebalo mi je malo više od par minuta guglanja da riješim ovaj problem. Trebalo mi je bar tjedan dana da pohvatam portove. Naravno, mogao sam promijeniti OpenShift security tako da dopustim privilegirano pokretanje kontejnera, ali moje je rješenje ispalo elegantnije. U cijelom procesu deploymenta, čini mi se da je ovo bo jedan od najkompliciranijih dijelova.

Nakon što sam napokon napravio funkcionalnu verziju Nextcloud kontejnera, podijelio sam je s ostalima jer su oni u međuvremenu bili zauzeti svojim dijelom projekta. Sljedeće je bilo pokretanje baze podataka. S tim dijelom, zahvaljujući OpenShiftu, nismo imali nikakvih poteškoća; trebalo je samo napraviti nekoliko klikova na web konzoli. Nakon toga, upoznao sam se s Keycloakom i upravljanje identitetima te sam dobio uputu da pokrenem instancu kako bi je korisnik mogao koristiti kao SSO funkcionalnost. Za to mi je trebao LDAP, s postavkama na Nextcloudu i s Keycloakom. Keycloak je moćan, ali, kao i sve ostalo, jednostavan alat za upravljanje autentifikacijom korisnika. Korisnicima koji su se prijavili dodan je 2FA. Javljale su se neke greške prilikom pokretanja LDAP konekcije, ali sve su to riješili naši mentori.

Zatim je došlo vrijeme za poliranje cijelog projekta – mock useri, stress testing, pronalaženje najboljih pluginova za Nextcloud, promjena baze podataka iz skromnog MySQL-a u veći i jači PostgreSQL i uvođenje nekih prilagodbi u Keycloak.

Nakon tri mjeseca učenja i probijanja kroz tutoriale, priručnike i upute, objedinili smo sve svoje instance, složili auto-deployment putem Helm chartsa i operatora, implementirali bilježenje i nadgledanje s ELK stackom i ispolirali sjajnu Nextcloud instancu kako bi sve bilo spremno za Student Show Off.

Naš se projekt svima svidio, a mi smo ga spremni u potpunosti pripremiti za produkciju kako bi naš novi sustav mogao zamijeniti stari sustav razmjene dokumenata.

Što se tiče mog prvog iskustva u izgradnji klaster sustava, moram reći da je bilo nevjerojatno uzbudljivo i zabavno. Gledajući unatrag, CROZ-ov Ljetni akcelerator zaslužan je za dobar dio mojih sadašnjih znanja i vještina.

Petar

sistem DevOps inženjer