Ovaj članak će vas upoznati sa nekim izvanrednim alatima koji se mogu koristiti zajedno sa Kubernetesom kako bi se poboljšale njegove mogućnosti.
U okviru DevOps ekosistema, uviđa se značaj posedovanja efikasnih DevOps alata koji olakšavaju manuelne procese. Postoji širok spektar DevOps alata dostupnih za svaku fazu DevOps procesa i za različite funkcionalnosti.
Kubernetes se ističe kao neophodan alat ako radite u DevOps domenu i pokrećete aplikacije unutar kontejnera. Postoji veliki broj alata koji se mogu integrisati sa Kubernetesom kako bi se dodale dodatne funkcionalnosti. Ovi alati su namenjeni za poboljšano upravljanje, sigurnost, vizualizaciju, nadzor Kubernetes klastera.
Evo pregleda nekih izuzetnih alata koji značajno proširuju mogućnosti vašeg Kubernetes sistema.
Krenimo!
Helm
Helm je menadžer paketa za Kubernetes koji pojednostavljuje preuzimanje aplikacija i usluga koje su često ponovljive ili se primenjuju u različitim scenarijima, što olakšava njihovo postavljanje na Kubernetes klaster. Korišćenjem Helma, omogućeno je pronalaženje, deljenje i korišćenje softvera koji je specifično dizajniran za Kubernetes.
On koristi grafikone, poznate kao Helm Charts, za definisanje, instaliranje i nadogradnju složenih Kubernetes aplikacija.
Ključne karakteristike Helma:
- Upravlja kompleksnošću Kubernetes aplikacija pomoću grafikona.
- Omogućava nadogradnje i prilagođene hook-ove za jednostavnu optimizaciju.
- Grafikoni se lako mogu deliti putem javnih ili privatnih servera.
- Pruža mogućnost brzog vraćanja unazad samo jednom komandom.
- Poboljšava produktivnost programera i povećava operativnu efikasnost.
Flagger
Flagger je napredni operator isporuke za Kubernetes.
On automatizuje implementaciju kanarinca koristeći Istio, App Mesh, Nginx, Linkerd, Contour, Gloo, Skipper rutiranje za promenu saobraćaja, i Prometheus za analizu kanarinca. Kod kanarinca implementacije, nova verzija se pušta maloj grupi korisnika na testiranje, i ukoliko je sve u redu, širi se na sve korisnike.
Koristi servisnu mrežu unutar klastera za upravljanje saobraćajem između različitih implementacija. Prilikom preusmeravanja saobraćaja na kanarinac, meri se učinak pomoću indikatora kao što su prosečno vreme odziva, stopa uspešnosti HTTP zahteva, zdravlje podova itd.
Flagger omogućava automatsku analizu, promociju i povratak unazad za različite strategije implementacije kao što su kanarinac, A/B testiranje i plavo/zelena implementacija.
KubeWatch
KubeWatch je Kubernetes posmatrač otvorenog koda koji šalje notifikacije putem Slack kanala.
Razvijen je u Go programskom jeziku od strane Bitnami Labs. Njegova funkcija je praćenje Kubernetes resursa i obaveštavanje o promenama.
KubeWatch se može instalirati preko `kubectl` komande ili pomoću Helm grafikona. Njegova upotreba je jednostavna, a interfejs je vrlo intuitivan. Osim Slack-a, podržava i HipChat, Mattermost, Flock, webhook i SMTP.
Konfiguracija se podešava putem ConfigMap datoteke, gde se definiše koji Kubernetes resursi će se pratiti. Nakon podešavanja konfiguracije i pokretanja poda, počinju da pristižu notifikacije o događajima u Kubernetes sistemu.
Gitkube
Gitkube je alatka koja koristi `git push` za izgradnju i implementaciju Docker slika na Kubernetesu. Sastoji se od tri komponente – remote, gitkube-controller i gitkube-d. Remote komponenta sadrži prilagođene resurse kojima upravlja gitkube-controller. Gitkube-controller prosleđuje promene gitkube-d komponenti koja gradi Docker sliku i primenjuje je.
Ključne karakteristike Gitkube-a:
- Jednostavna instalacija i upotreba.
- Obezbeđuje kontrolu pristupa na osnovu uloga radi sigurnosti.
- Jednostavna autentifikacija pomoću javnog ključa.
- Podrška za imenski prostor za više korisnika.
- Ne zahteva dodatne zavisnosti osim `kubectl` i `git`.
kube-state-metrics
kube-state-metrics je servis koji generiše metrike stanja objekata osluškujući Kubernetes API server. Koristi se za proveru zdravlja različitih objekata kao što su čvorovi, podovi, imenski prostori i implementacije. Pruža sirove, neizmenjene podatke iz Kubernetes API-ja.
Informacije koje pruža kube-state-metrics:
- Cron poslovi i status poslova.
- Status podova (spreman, pokrenut, itd.).
- Zahtevi za resurse i njihov opseg.
- Kapacitet čvorova i njihov status.
- Specifikacija setova replika.
Kamus
Kamus je GitOps alat otvorenog koda za šifrovanje i dešifrovanje tajni za Kubernetes aplikacije. Šifrovane tajne koje Kamus generiše mogu biti dešifrovane samo aplikacijama koje rade na Kubernetes klasteru. Koristi AES, Google Cloud KMS, Azure KeyVault za šifrovanje tajni. Kamus se može koristiti putem Helm grafikona.
Kamus dolazi sa dva uslužna programa – Kamus CLI i Kamus init kontejner. Kamus CLI se koristi za integraciju sa šifriranjem, a Kamus init kontejner za integraciju sa dešifrovanjem.
Standardne Kubernetes tajne nisu šifrovane, već su samo kodirane base64. Ne preporučuje se čuvanje takvih tajni na Gitu. Potrebno je rešenje za šifrovanje/dešifrovanje kao što je Kamus, koje obezbeđuje zaštitu od pretnji i čini tajne sigurnima.
Untrak
Untrak je alat otvorenog koda koji se koristi u Kubernetesu za identifikaciju resursa koji nisu praćeni i njihovo prikupljanje smeća. Pomaže u pronalaženju i brisanju zastarelih resursa iz klastera.
Nakon unošenja manifesta u CI/CD cevovod pomoću `kubectl apply` ili Helm šablona, Kubernetes nema saznanje kada će objekat biti obrisan iz repozitorijuma. Jednom kada se objekti obrišu, oni se više ne prate u procesu isporuke i ostaju u Kubernetes klasteru.
Untrak koristi jednostavnu konfiguracionu datoteku `untrak.yaml` da bi identifikovao resurse koji više nisu deo upravljanja izvornim kodom.
Scope
Weave Scope služi za vizualizaciju, praćenje i rešavanje problema u Dockeru i Kubernetesu.
Pruža uvid u kontejnerizovane aplikacije i kompletnu infrastrukturu, olakšavajući identifikaciju i dijagnostiku problema.
Pokretanje aplikacija sa mikroservisnom arhitekturom u Docker kontejnerima može biti kompleksno. Komponente su dinamične i teško ih je pratiti. Weave Scope omogućava rešavanje problema sa curenjem memorije, kontrolu potrošnje CPU-a, i vizualizaciju mrežnih uskih grla.
Ključne karakteristike Weave Scope-a:
- Nadzor Docker kontejnera u realnom vremenu.
- Jednostavna navigacija između procesa koji se izvršavaju u kontejnerima.
- Prikaz korišćenja CPU-a i memorije u odnosu na host ili servis.
- Mogućnost ponovnog pokretanja, zaustavljanja ili pauziranja kontejnera putem CLI-a bez napuštanja web pregledača.
- Podrška za prilagođene dodatke radi detaljnijeg uvida u kontejnerima, procese i hostove.
Kubernetes kontrolna tabla
Kubernetes kontrolna tabla je web interfejs koji obezbeđuje Kubernetes. Koristi se za implementaciju, rešavanje problema i upravljanje kontejnerizovanim aplikacijama na Kubernetes klasteru. Pruža sve informacije o klasteru, kao što su detalji o čvorovima, imenskim prostorima, ulogama, radnim opterećenjima itd.
Može se instalirati pomoću Helm grafikona ili koristeći sledeću `kubectl` komandu:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
Kops
Kops, što znači Kubernetes Operations, je projekat otvorenog koda za postavljanje Kubernetes klastera spremnih za produkciju. Najčešće se koristi za implementaciju Kubernetes klastera na AWS i GCE.
Kreiranje i održavanje malog Kubernetes klastera je jednostavno, ali sa skaliranjem klastera dodaje se mnogo konfiguracija, što otežava operativno upravljanje. Kops je alat koji rešava takve probleme. On održava klaster ažurnim i sigurnim na osnovu konfiguracije.
Kops podržava različite pozadine za umrežavanje, što olakšava postavljanje različitih tipova klastera u zavisnosti od specifičnih potreba.
cAdvisor
cAdvisor je alat otvorenog koda za nadzor kontejnera. Koristi se za razumevanje karakteristika performansi i korišćenja resursa kontejnera koji rade na klasteru.
Radi na nivou čvora, automatski detektuje sve kontejnera i prikuplja statistiku o memoriji, sistemu datoteka, CPU-u i mreži. Pruža web interfejs koji prikazuje podatke uživo za sve kontejnera u klasteru.
Da biste počeli da koristite cAdvisor, potrebno je pokrenuti njegovu Docker sliku `google/cadvisor`, a zatim mu pristupiti putem `http://localhost:8080` u web pregledaču.
Kubespray
Kubespray je alat kreiran kombinovanjem Ansible playbookova i Kubernetes-a. Koristi se za upravljanje životnim ciklusom Kubernetes klastera.
Korišćenjem Kubespray, možete brzo implementirati klaster i prilagoditi sve parametre implementacije klastera, kao što su režimi postavljanja, mrežni dodaci, DNS konfiguracija, verzije komponenti, metode generisanja sertifikata itd.
Jednostavnim pokretanjem jednog Ansible playbooka, klaster se pokreće i radi. Takođe, klaster se može lako skalirati ili nadograditi.
K9s
K9s je alat otvorenog koda baziran na terminalu čija kontrolna tabla može da uradi sve što radi Kubernetes web korisnički interfejs. Koristi se za navigaciju, posmatranje i upravljanje aplikacijama koje su raspoređene na Kubernetes klasteru.
Karakteristike K9s:
- Praćenje klastera u realnom vremenu.
- Prilagođavanje prikaza na osnovu resursa.
- Detekcija problema sa resursima klastera.
- Podrška za kontrolu pristupa zasnovanu na ulogama.
- Ugrađena merila za proveru performansi resursa.
Kubetail
Kubetail je jednostavna bash skripta koja se koristi za agregiranje logova sa više podova u jedan tok.
Veoma je zgodan za upotrebu i olakšava otklanjanje grešaka.
Najnovija verzija Kubetail-a poseduje i funkcije isticanja i filtriranja koje omogućavaju bojenje logova. Može se instalirati pomoću Homebrew-a jednom komandom, a podrazumevane vrednosti se mogu definisati u promenljivim okruženja.
PowerfulSeal
PowerfulSeal je alat za haos inženjering otvorenog koda, napisan u Pythonu za Kubernetes klastere.
Haos inženjering se koristi za sticanje poverenja u sistem proverom njegove sposobnosti da se nosi sa problematičnim situacijama u produkciji. PowerfulSeal namerno izaziva neuspehe u Kubernetes klasteru kako bi se identifikovali problemi što je ranije moguće.
Inspirisan je Netflix Chaos Monkey-em i koristi se za poboljšanje otpornosti Kubernetes-a. Inženjeri svesno pokušavaju da naruše rad klastera da bi proverili kako sistem reaguje.
PowerfulSeal ima tri režima rada – Autonomni, Interaktivni i Label.
U autonomnom režimu izvršava scenarije čitajući datoteku smernica. U interaktivnom režimu, korisniku pomaže da ručno pokuša da uništi komponente klastera. U režimu label, ubija ciljane objekte na klasteru pomoću oznaka.
Popeye
Popeye je uslužni program za čišćenje, sličan dezinfekciji 🧼 za Kubernetes klastere.
Skenira ceo klaster i izveštava o problemima vezanim za konfiguracije i resurse. Pomaže u primeni najboljih praksi na Kubernetes klasteru kako bi se izbegli uobičajeni problemi.
Ovaj uslužni program je dostupan za Windows, Linux i macOS. Trenutno radi samo sa čvorovima, podovima, imenskim prostorima i uslugama. Korišćenjem Popeye-a, lako se mogu identifikovati mrtvi i neiskorišćeni resursi, nepodudarnosti portova, RBAC pravila, korišćenje metrika i još mnogo toga.
Zaključak
DevOps alati imaju vitalnu ulogu u uspešnom radu i nadam se da će vam gore navedeni pomoći da bolje upravljate Kubernetesom.