Details

Automated and secure application deployment using GitOps and Kubernetes
ID Keserović, Džana (Author), ID Sedlar, Urban (Mentor) More about this mentor... This link opens in a new window

.pdfPDF - Presentation file, Download (3,86 MB)
MD5: 43C2EBAFAAC0E090FF1996DB52D323C1

Abstract
Deploying containerized applications to Kubernetes typically requires a lot of manual work. Teams write scripts, run commands by hand, and are uncertain whether the cluster matches their configuration. Security checks are often treated as a separate step or skipped entirely, which means vulnerabilities in code, dependencies, or Kubernetes manifests can reach production unnoticed. This thesis presents a fully automated deployment pipeline that combines GitOps with integrated security scanning. The desired state of the system is stored in git, and Argo CD, running inside the cluster, continuously keeps the cluster in sync with it. The application, a blog CMS built with React, Node.js, and PostgreSQL, is packaged as a Helm chart. A CI/CD pipeline in GitHub Actions runs three security checks before every deployment: SonarQube for static code analysis, Snyk for dependency vulnerability scanning, and KubeLinter for Kubernetes configuration validation. Only after all checks pass does the pipeline build the Docker images, push them to the registry, and update the Helm chart. Argo CD then detects the change and rolls it out automatically. The cluster also uses Keycloak and Rancher for centralized authentication and role-based access control. The result is a system where every deployment is triggered by a git commit, every version is traceable, and nothing reaches the cluster without passing security checks first.

Language:English
Keywords:Kubernetes, GitOps, Argo CD, Helm, CI/CD, security scanning, containerization, DevOps
Work type:Master's thesis/paper
Typology:2.09 - Master's Thesis
Organization:FE - Faculty of Electrical Engineering
Place of publishing:Ljubljana
Publisher:D. Keserović
Year:2026
Number of pages:1 spletni vir (1 datoteka PDF (XXVI, 102 str.))
PID:20.500.12556/RUL-183830 This link opens in a new window
UDC:004(043.3)
COBISS.SI-ID:282708483 This link opens in a new window
Publication date in RUL:19.06.2026
Views:313
Downloads:218
Metadata:XML DC-XML DC-RDF
:
Copy citation
Share:Bookmark and Share

Secondary language

Language:Slovenian
Title:Avtomatizirano in varno nameščanje aplikacij z uporabo GitOps in Kubernetesa
Abstract:
Sodobne aplikacije se vse pogosteje pakirajo v vsebnike (angl. containers) in nameščajo na gruče Kubernetes. Kubernetes omogoča avtomatizirano nameščanje, skaliranje in upravljanje vsebniških aplikacij, vendar sam proces dostave kode od razvijalca do gruče pogosto še vedno vključuje veliko ročnega dela. Ekipe pišejo skripte za nameščanje, ročno izvajajo ukaze in pogosto nimajo preprostega načina, da bi preverile, ali stanje v gruči dejansko ustreza temu, kar je zapisano v konfiguracijskih datotekah. Poleg tega se varnostni pregledi pogosto obravnavajo ločeno od procesa nameščanja ali pa se jih povsem preskoči. To pomeni, da lahko ranljivosti v izvorni kodi, zastarele odvisnosti ali napačno konfigurirani Kubernetes viri pridejo v produkcijsko okolje, ne da bi jih kdo opazil. Namen tega magistrskega dela je načrtovati in implementirati popolnoma avtomatiziran cevovod (angl. pipeline) za nameščanje vsebniške aplikacije na Kubernetes, ki sledi načelom GitOps in vključuje varnostno pregledovanje kot del delovnega procesa. Cilj je pokazati, da lahko avtomatizirano nameščanje in avtomatizirano varnostno pregledovanje delujeta skupaj, brez da bi to upočasnilo razvojni proces. Magistrsko delo najprej predstavi arhitekturo Kubernetes, vključno z glavnimi komponentami gruče: kontrolno ravnino (angl. control plane) z aplikacijskim programskim vmesnikom (angl. Application Programming Interface - API), razporejevalnikom (angl. scheduler) in krmilniki (angl. controllers), ter delovnimi vozlišči (angl. worker node), kjer tečejo aplikacijski vsebniki v enotah, imenovanih podi. Opisani so ključni koncepti, kot so imenski prostori (angl. namespace) za logično ločevanje virov, konfiguracija z objekti ConfigMap in Secret, mrežne poltike (angl. Network Policy) za nadzor prometa med podi ter mehanizmi za trajno shranjevanje podatkov. Predstavljeni so tudi načini izpostavljanja aplikacij zunanjim uporabnikom prek storitev (angl. Service) in vstopnih točk (angl. Ingress), varnostni mehanizmi za avtentikacijo in avtorizacijo uporabnikov ter strategije za postopno posodabljanje aplikacij. V nadaljevanju je predstavljen koncept GitOps, ki razširja najboljše prakse DevOps na upravljanje infrastrukture. Po principih GitOps, git repozitorij postane edini vir resnice za želeno stanje celotnega sistema. Namesto da bi cevovod za neprekinjeno integracijo in namestitev (angl. Continuous Integration / Continuous Delivery - CI/CD) od zunaj potiskal spremembe v gručo, krmilnik znotraj gruče nenehno primerja dejansko stanje z definicijami v gitu in po potrebi izvede uskladitev. Vsaka sprememba je zabeležena v zgodovini gita, kar naredi sistem sledljiv in omogoča enostavno vračanje na prejšnja stanja. Argo CD je ogrodje, ki implementira GitOps model s pristopom vlečenja (angl. pull-based). Teče kot agent znotraj Kubernetes gruče, spremlja git repozitorije in samodejno usklajuje stanje gruče z definicijami v repozitoriju. Za pakiranje Kubernetes virov se uporablja Helm, orodje za upravljanje predlog, ki omogoča definiranje vseh Kubernetes objektov, ki jih aplikacija potrebuje, z nastavljivimi vrednostmi za različna okolja. Implementacija Praktični del dela prikazuje celoten sistem na primeru trinivojske spletne aplikacije za upravljanje bloga (Blog CMS). Aplikacija je sestavljena iz React uporabniškega vmesnika, Node.js zalednega sistema z REST API-jem ter PostgreSQL podatkovne baze. Vsaka komponenta je pakirana kot ločena Docker slika in nameščena na Kubernetes gručo. Gruča je sestavljena iz glavnega vozlišča (angl. master node), delovnega vozlišča in zunanjega izrvanalca obremenitve (angl. load balancer). Za centralizirano avtentikacijo in avtorizacijo uporabnikov sta nameščena Keycloak kot ponudnik identitete (angl. Identity Provider) in Rancher kot upravljalna platforma za Kubernetes. Keycloak hrani uporabniške identitete in članstva v skupinah ter omogoča večfaktorsko avtentikacijo. Rancher preverja uporabnike prek Keycloaka in preslikava njihove skupine v Kubernetes vloge RBAC, s čimer zagotavlja enotno prijavo (angl. Single Sign-On - SSO) za celotno platformo. Aplikacija je pakirana kot Helm chart, ki definira vse potrebne Kubernetes vire: imenski prostor, konfiguracije, skrivnosti, trajne nosilce podatkov (angl. Persistent Volume), storitve, vstopne točke, mrežne politike in horizontalni avtomatski skalator podov. Konfiguracija Argo CD uporablja vzorec aplikacija-aplikacij (angl. app-of-apps), kar pomeni, da je dodajanje ali odstranjevanje namestitve tako preprosto kot dodajanje ali brisanje datoteke v formatu YAML. Cevovod CI/CD je zgrajen z GitHub Actions in pokriva celoten življenjski cikel spremembe kode. Ob vsakem potiskanju na nadzorovano vejo se samodejno zaženejo trije varnostni pregledi vzporedno: SonarQube izvede statično analizo izvorne kode za odkrivanje napak in ranljivosti, Snyk pregleda odvisnosti projekta za znane varnostne težave, KubeLinter pa preveri Helm chart glede na najboljše prakse za Kubernetes. Šele ko se vsi trije pregledi uspešno izvedejo, cevovod zgradi Docker slike, jih potisne v register in posodobi Helm chart z novimi oznakami slik. Argo CD nato zazna spremembo in samodejno izvede posodobitev v gruči. Rezultati in zaključki Končni sistem deluje tako, da razvijalec spremeni kodo aplikacije in potisne spremembe v ciljno vejo repozitorija. Cevovod zazna potisk, zažene varnostne preglede, zgradi nove Docker slike in jih potisne v Docker Hub z oznako, ki ustreza zgoščenemu (angl. Secure Hash Algorithm - SHA) zapisu spremembe. Nato posodobi datoteko values.yaml v Helm chartu z novo oznako slike in to spremembo zapiše nazaj v repozitorij. Argo CD, ki je konfiguriran prek vzorca aplikacijaaplikacij, zazna posodobljeno datoteko values.yaml, primerja novo stanje z viri, ki trenutno tečejo v gruči, in izvede uskladitev. Delo pokaže, da sta GitOps in varnost lahko tesno povezana. Z uporabo Gita kot edinega vira resnice in z avtomatizacijo varnostnih pregledov postane veliko težje nenamenoma namestiti nekaj pokvarjenega ali nevarnega.

Keywords:Kubernetes, GitOps, Argo CD, Helm, CI/CD, varnostno pregledovanje, vsebniki, DevOps, magisteriji

Similar documents

Similar works from RUL:
Similar works from other Slovenian collections:

Back