Je li jednostavno i praktično pripremiti Kubernetes klaster? Najava addon-operatora

Je li jednostavno i praktično pripremiti Kubernetes klaster? Najava addon-operatora

Nakon ljuska-operator predstavljamo njegovog starijeg brata - addon-operator. Ovo je Open Source projekt koji se koristi za instaliranje komponenti sustava u Kubernetes klaster, koje se mogu nazvati dodacima.

Čemu uopće dodaci?

Nije tajna da Kubernetes nije gotov sve-u-jednom proizvod, a za izgradnju klastera za "odrasle" trebat će vam razni dodaci. Addon-operator pomoći će vam da instalirate, konfigurirate i ažurirate ove dodatke.

Potreba za dodatnim komponentama u klasteru prikazana je u izvješće Kolege driusha. Ukratko, situacija s Kubernetesom trenutno je takva da za jednostavnu “play around” instalaciju možete proći s komponentama iz kutije, za programere i testiranje možete dodati Ingress, ali za punu instalaciju, o kojoj možete reći "vaša proizvodnja je spremna", trebate dodati desetak različitih dodataka: nešto za praćenje, nešto za bilježenje, ne zaboravite ingress i cert-manager, odaberite grupe čvorova, dodajte mrežna pravila, sezonu s postavkama sysctl i pod autoscaler...

Je li jednostavno i praktično pripremiti Kubernetes klaster? Najava addon-operatora

Koje su specifičnosti rada s njima?

Kao što praksa pokazuje, stvar nije ograničena na jednu instalaciju. Za ugodan rad s klasterom, dodatke će trebati ažurirati, onemogućiti (ukloniti iz klastera), a neke ćete htjeti testirati prije nego što ih instalirate u proizvodni klaster.

Pa, možda će Ansible ovdje biti dovoljan? Može biti. Ali Općenito, punopravni dodaci ne žive bez postavki. Ove se postavke mogu razlikovati ovisno o varijanti klastera (aws, gce, azure, bare-metal, do, ...). Neke se postavke ne mogu odrediti unaprijed, moraju se dobiti iz klastera. A klaster nije statičan: za neke postavke morat ćete pratiti promjene. I tu Ansible već nedostaje: potreban vam je program koji živi u klasteru, tj. Kubernetes operater.

Oni koji su to probali na poslu ljuska-operator, reći će da se zadaci instaliranja i ažuriranja dodataka i postavki nadzora mogu u potpunosti riješiti pomoću udice za ljusku-operatora. Možete napisati skriptu koja će raditi uvjet kubectl apply i pratiti, na primjer, ConfigMap, gdje će postavke biti pohranjene. To je otprilike ono što je implementirano u addon-operatoru.

Kako je to organizirano u addon-operatoru?

Prilikom izrade novog rješenja pošli smo od sljedećih načela:

  • Program za instalaciju dodataka mora podržavati šablonska i deklarativna konfiguracija. Ne izrađujemo čarobne skripte koje instaliraju dodatke. Addon-operator koristi Helm za instaliranje dodataka. Za instalaciju morate izraditi grafikon i odabrati vrijednosti koje će se koristiti za konfiguraciju.
  • Postavke se mogu generirati pri instalaciji, oni mogu dobiti iz klasteraIli primati ažuriranja, praćenje resursa klastera. Ove operacije mogu se implementirati pomoću kuka.
  • Postavke se mogu pohraniti u klaster. Za pohranjivanje postavki u klaster, kreira se ConfigMap/addon-operator i Addon-operator prati promjene na ovom ConfigMap-u. Addon-operator omogućuje kukicama pristup postavkama pomoću jednostavnih konvencija.
  • Dodavanje ovisi o postavkama. Ako su se postavke promijenile, tada Addon-operator izbacuje Helm grafikon s novim vrijednostima. Kombinaciju Helmovog grafikona, vrijednosti za njega i kukica nazvali smo modulom (pogledajte dolje za više detalja).
  • Inscenacija. Ne postoje čarobne skripte za izdavanje. Mehanizam ažuriranja sličan je običnoj aplikaciji - sakupite dodatke i operatore dodataka u sliku, označite ih i postavite ih.
  • Kontrola rezultata. Addon-operator može pružiti metriku za Prometheus.

Što je padding u addon-operatoru?

Dodatkom se može smatrati sve što klasteru dodaje nove funkcije. Na primjer, instalacija Ingressa izvrstan je primjer dodatka. To može biti bilo koji operater ili kontroler s vlastitim CRD-om: prometheus-operator, cert-manager, kube-controller-manager, itd. Ili nešto malo, ali jednostavnije za korištenje - na primjer, tajni kopir, koji kopira tajne registra u nove prostore imena, ili sysctl tuner, koji konfigurira sysctl parametre na novim čvorovima.

Za implementaciju dodataka, Addon-operator nudi nekoliko koncepata:

  • Shema kormila koristi se za instaliranje raznih softvera u klaster - na primjer, Prometheus, Grafana, nginx-ingress. Ako potrebna komponenta ima Helm grafikon, tada će njezina instalacija pomoću Addon-operatora biti vrlo jednostavna.
  • Skladištenje vrijednosti. Karte kormila obično imaju mnogo različitih postavki koje se mogu mijenjati tijekom vremena. Addon-operator podržava pohranu ovih postavki i može pratiti njihove promjene kako bi ponovno instalirao Helm grafikon s novim vrijednostima.
  • Kuke su izvršne datoteke koje Addon-operator pokreće na događajima i koje pristupaju pohrani vrijednosti. Udica može pratiti promjene u klasteru i ažurirati vrijednosti u pohrani vrijednosti. Oni. Koristeći kuke, možete izvršiti otkrivanje za prikupljanje vrijednosti iz klastera pri pokretanju ili prema rasporedu, ili možete raditi kontinuirano otkrivanje, prikupljajući vrijednosti iz klastera na temelju promjena u klasteru.
  • Modul je kombinacija Helm karte, pohrane vrijednosti i kuka. Moduli se mogu omogućiti ili onemogućiti. Onemogućavanje modula znači brisanje svih Helmovih izdanja grafikona. Moduli se mogu dinamički omogućiti, na primjer, ako su omogućeni svi moduli koji su mu potrebni ili ako je otkrivanje pronašlo potrebne parametre u kukicama - to se radi pomoću pomoćne omogućene skripte.
  • Globalne udice. To su kuke "same za sebe", nisu uključene u module i imaju pristup globalnom spremištu vrijednosti, čije su vrijednosti dostupne svim kukama u modulima.

Kako ti dijelovi rade zajedno? Pogledajmo sliku iz dokumentacije:

Je li jednostavno i praktično pripremiti Kubernetes klaster? Najava addon-operatora

Postoje dva scenarija rada:

  1. Globalnu kuku pokreće događaj - na primjer, kada se promijeni resurs u klasteru. Ova kuka obrađuje promjene i zapisuje nove vrijednosti u globalnu pohranu vrijednosti. Addon-operator primjećuje da se globalna pohrana promijenila i pokreće sve module. Svaki modul, koristeći svoje kuke, određuje treba li biti omogućen i ažurira svoju pohranu vrijednosti. Ako je modul uključen, Addon-operator pokreće instalaciju Helm karte. U ovom slučaju, Helm grafikon ima pristup vrijednostima iz pohrane modula i iz globalne pohrane.
  2. Drugi scenarij je jednostavniji: zakačilo modula pokreće događaj i mijenja vrijednosti u spremištu vrijednosti modula. Addon-operator to primjećuje i pokreće Helm grafikon s ažuriranim vrijednostima.

Dodavanje se može implementirati kao jedna udica, ili kao jedna Helm karta, ili čak i kao nekoliko ovisnih modula - to ovisi o složenosti komponente koja se instalira u klaster i o željenoj razini konfiguracijske fleksibilnosti. Na primjer, u spremištu (/primjeri) postoji dodatak sysctl-tuner, koji je implementiran i kao jednostavan modul s kukom i Helm grafikonom, te korištenjem pohrane vrijednosti, što omogućuje dodavanje postavki uređivanjem ConfigMap.

Isporuka ažuriranja

Nekoliko riječi o organiziranju ažuriranja komponenti koje instalira Addon-operator.

Da biste pokrenuli Addon-operator u klasteru, trebate izgraditi sliku s dodacima u obliku datoteka hook i Helm chart, dodajte binarnu datoteku addon-operator i sve što vam treba za udice: bash, kubectl, jq, python itd. Zatim se ova slika može uvesti u klaster kao redovita aplikacija i najvjerojatnije ćete htjeti organizirati jednu ili drugu shemu označavanja. Ako postoji nekoliko klastera, može biti prikladan isti pristup kao i kod aplikacija: novo izdanje, nova verzija, idite na sve klastere i ispravite sliku Podova. Međutim, u slučaju uvođenja na značajan broj klastera, koncept samoažuriranja s kanala bio nam je prikladniji.

Evo kako to radimo:

  • Kanal je u biti identifikator koji se može postaviti na bilo što (na primjer, dev/stage/ea/stable).
  • Naziv kanala je oznaka slike. Kada trebate uvesti ažuriranja na kanal, nova slika se sastavlja i označava nazivom kanala.
  • Kada se nova slika pojavi u registru, Addon-operator se ponovno pokreće i pokreće s novom slikom.

Ovo nije najbolja praksa, kao što je napisano u Kubernetes dokumentacija. Nije preporučljivo to učiniti, ali govorimo o tome regularna aplikacija koja živi u istom klasteru. U slučaju Addon-operatora, aplikacija je puno implementacija razbacanih po klasterima, a samoažuriranje uvelike pomaže i olakšava život.

Kanali pomoći i u testiranju: ako postoji pomoćni klaster, možete ga konfigurirati na kanal stage i prebacite ažuriranja u njega prije nego što ga postavite na kanale ea и stable. Ako s klasterom na kanalu ea došlo je do pogreške, možete je prebaciti na stable, dok se problem s ovim klasterom istražuje. Ako se klaster isključi iz aktivne podrške, on se prebacuje na svoj "zamrznuti" kanal - na primjer, freeze-2019-03-20.

Osim ažuriranja karata udica i kormila, možda će vam trebati ažuriranje i komponenta treće strane. Na primjer, primijetili ste grešku u izvozniku uvjetnog čvora i čak ste smislili kako je zakrpati. Zatim ste otvorili PR i čekate novo izdanje da prođete kroz sve klastere i povećate verziju slike. Kako ne biste čekali beskonačno, možete izgraditi svoj node-exporter i prebaciti se na njega prije prihvaćanja PR-a.

Općenito, to se može učiniti bez Addon-operatora, ali s Addon-operatorom modul za instaliranje node-exportera bit će vidljiv u jednom repozitoriju, Dockerfile za izgradnju vaše slike može se držati upravo ondje, postaje lakše za sve sudionike u proces kako biste razumjeli što se događa... A ako postoji nekoliko klastera, tada postaje lakše i testirati svoj PR i pokrenuti novu verziju!

Ova organizacija ažuriranja komponenti kod nas uspješno funkcionira, ali se može implementirati bilo koja druga prikladna shema - uostalom u ovom slučaju Addon-operator je jednostavna binarna datoteka.

Zaključak

Načela implementirana u Addon-operatoru omogućuju vam da izgradite transparentan proces za stvaranje, testiranje, instaliranje i ažuriranje dodataka u klasteru, slično razvojnim procesima uobičajenih aplikacija.

Dodaci za Addon-operator u formatu modula (Helm chart + kuke) mogu biti javno dostupni. Mi, tvrtka Flant, planiramo objaviti svoje razvoje u obliku takvih dodataka tijekom ljeta. Pridružite se razvoju na GitHubu (ljuska-operator, addon-operator), pokušajte napraviti svoj vlastiti dodatak na temelju primjeri и dokumentacija, pričekajte vijesti na Habréu i na našem YouTube kanal!

PS

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar