Cloud native aplikacije i infrastrukturna platforma zahtevaju rešenja za zaštitu podataka nove generacije, koja razumeju mikroservisnu arhitekturu.
Trend raščlanjivanja monolitnih aplikacija na više manjih (mikro)servisa dao je vetar u leđa kontejnerima kao tehnologiji za razvoj, testiranje i isporuku aplikacija. Ovaj vid pakovanja i pokretanja aplikacija doneo je nove izazove u infrastrukturnom svetu i potrebu za tzv. kontejner orkestratorima – platformama za izvršavanje aplikacija u kontejnerima. U ovom segmentu rešenja defakto standard danas predstavlja Kubernetes, projekat otvorenog koda inicijalno razvijen od strane kompanije Google.
Cloud native aplikacije i infrastrukturna platforma zahtevaju rešenja za zaštitu podataka nove generacije, koja razumeju mikroservisnu arhitekturu i Kubernetes. Najveći izazov je to što aplikacije i njihove komponente više nisu spakovane u jasno ograničene „kutije“, poput fizičkih servera ili virtuelnih mašina, već se sastoje od većeg broja tesno povezanih elemenata, od kojih se ne moraju svi nalaziti unutar Kubernetes klastera.
Tako se izvan klastera tipično čuvaju perzistentni podaci aplikacija, koji se smeštaju na eksternim storidž platformama integrisanim sa Kubernetes-om. To mogu biti cloud servisi, poput AWS EBS ili Azure Disk Storage, kao i on-premises rešenja, poput VMware vSphere ili tradicionalnih FC/ iSCSI/NFS storidž sistema. Poslednja istraživanja pokazuju da danas više od polovine Kubernetes korisnika u kontejnerima pokreće stateful aplikacije, koje imaju potrebu za čuvanjem perzistentnih podataka.
Zato rešenja za zaštitu podataka u Kubernetes svetu moraju biti aplikativno, a ne infrastrukturno orijentisana, kao što je to tradicionalno bio slučaj. Ona moraju biti u stanju da otkriju sve komponente i zavisnosti jedne aplikacije, bekapuju ih na konzistentan način gde god da se nalaze i omoguće granularni restore podataka i pojedinačnih komponenata. U skladu sa cloud native prirodom okruženja, neophodno je i da poseduju API interfejse za integraciju sa alatima za automatizaciju i CI/CD procesima.
Veeam Kasten K10
Jedno od rešenja koje ispunjava sve navedene kriterijume je Veeam Kasten K10. U pitanju je proizvod koji je akvizicijom tokom 2020. godine postao deo familije Veeam rešenja za zaštitu podataka. K10 je platforma za upravljanje podacima koja je namenski razvijena za Kubernetes.
Prilikom pokretanja procedure oporavka, moguće je izvršiti kompletan restore, kojim se iz bekapa vraćaju svi elementi aplikacije, ili granularni restore, kod koga se mogu birati pojedinačni elementi aplikacije. K10 obezbeđuje granularnost na nivou Kubernetes resursa, a moguće je izvršiti i samo restore perzistentnih podataka aplikacije, čime se efektivno vrši samo oporavak podataka iz kreiranih storidž snepšotova.
Osim bekapa i restore opcije, K10 poseduje podršku za scenarije oporavka od katastrofe i mobilnosti aplikacija, odnosno njihove migracije između različitih Kubernetes klastera i platforsa ciljem da klaster operatorima pruži jednostavno, skalabilno i bezbedno rešenje za bekap, disaster recovery i migraciju mikroservisnih aplikacija.
K10 je mikroservisno organizovana aplikacija, koja se instalira pomoću jedne helm komande i izvršava unutar Kubernetes klastera u kome su aplikacije koje je potrebno bekapovati. Konfigurisanje rešenja može se vršiti preko web interfejsa za upravljanje, kao i pomoću API-ja. K10 proširuje Kubernetes API svojim specifičnim resursima, kao što su bekap polise i destinacije za smeštanje podataka, što omogućava kompletnu konfiguraciju rešenja kroz dobro poznate interfejse za komunikaciju sa Kubernetes klasterom, npr. pomoću YAML koda i kubectl alata komandne linije.
Tehnologija rada zasnovana je na tri ključne integracije. Prva je integracija sa Kubernetes-om koju K10 koristi kako bi otkrio sve elemente i zavisnosti koje poseduje aplikacija koja je predmet bekapa. Sledeća je integracija sa samim aplikacijama koje se izvršaju u kontejnerima, poput servera baza podataka, u cilju kreiranja aplikativno konzistentnih bekapa. I poslednja, ali ne i najmanje važna, jeste integracija sa eksternim storidž platformama na kojima su smešteni podaci, gde K10 u trenutku bekapa kreira snepšot (sliku podataka u određenom trenutku), koji se zatim može kopirati na bekap destinaciju.
Aplikacija za bekap može se selektovati na više načina – definisanjem Kubernetes namespace-a u kome se njene komponente nalaze ili Kubernetes labela koje one poseduju, čime se bekapuju svi Kubernetes objekti sa navedenom labelom, bez obzira na lokaciju. Opciono je u bekap aplikacije moguće uključiti i deljene klaster objekte od kojih aplikacija zavisi, poput storidž klasa i klaster rola.
K10: mogućnosti, integracija i podrška
Za aplikativnu integraciju K10 koristi open source framework pod nazivom Kanister, koji omogućava izvršavanje operacija koje su potrebne za pripremu aplikacija za bekap pre kreiranja storidž snepšota ili čak kreiranje bekapa aplikativnim alatima, bez korišćenja storidž snepšota. Među podržanim aplikacijama su Elasticsearch, različite relacione baze podataka, kao što su PostgreSQL i MySQL, kao i NoSQL rešenja poput MongoDB, Cassandra i Couchbase.
Snepšotovi kreirani za potrebe bekapa mogu ostati smešteni na produkcionoj storidž platformi, a svi ili deo snepšotova dodatno mogu biti i eksportovani na posebnu bekap destinaciju, što je i preporuka. Retencija, tj. vreme čuvanja bekapovanih podataka može se nezavisno definisati za snepšotove na produkcionoj platformi i eksportovane snepšotove, i izražava se u broju jednočasovnih, dnevnih, nedeljnih, mesečnih i godišnjih bekapa koje želimo da čuvamo. Kao bekap destinacije trenutno su podržani NFS i različiti tipovi objektnog storidža – S3, Google Cloud Storage i Azure Storage.
Prilikom pokretanja procedure oporavka, moguće je izvršiti kompletan restore, kojim se iz bekapa vraćaju svi elementi aplikacije, ili granularni restore, kod koga se mogu birati pojedinačni elementi aplikacije. K10 obezbeđuje granularnost na nivou Kubernetes resursa, a moguće je izvršiti i samo restore perzistentnih podataka aplikacije, čime se efektivno vrši samo oporavak podataka iz kreiranih storidž snepšotova.
Osim bekapa i restore opcije, K10 poseduje podršku za scenarije oporavka od katastrofe i mobilnosti aplikacija, odnosno njihove migracije između različitih Kubernetes klastera i platformi. U navedenim scenarijima obično nije moguće aplikaciju oporaviti sa identičnom konfiguracijom sačuvanom u bekapu, već je potrebno prilagoditi je novom okruženju. K10 podržava različite scenarije oporavka i migracije – između različitih namespace-ova unutar jednog klastera, između klastera, između klastera koji se izvršavaju pod različitim cloud nalozima ili projektima, između različitih cloud regiona, pa čak i različitih cloud platformi i Kubernetes provajdera.
Pored open source Kubernetes-a, K10 podržava praktično sve vodeće sertifikovane Kubernetes distribucije i cloud servise, uključujući Red Hat OpenShift, VMware Tanzu, AWS EKS, Azure AKS i Google GKE. Licenciranje rešenja bazira se na broju nodova na kojima se izvršavaju korisničke aplikacije (tzv. worker nodovi) u klasteru, s tim što je K10 potpuno besplatan bez ograničenja u funkcionalnostima za klastere sa do 10 worker nodova. Za demonstraciju K10 mogućnosti u vašem okruženju javite se našem timu Kubernetes inženjera na k8s@coming.rs. Srećno YAML-ovanje!
Nebojša Ilić, Coming