7 najboljših praks za uporabo vsebnikov glede na Google

Opomba. prevod: Avtor izvirnega članka je Théo Chamley, Google Cloud Solutions Architect. V tej objavi za spletni dnevnik Google Cloud ponuja povzetek podrobnejšega vodnika svojega podjetja, imenovanega "Najboljše prakse za upravljanje zabojnikov" V njej so Googlovi strokovnjaki zbrali najboljše prakse za delovanje vsebnikov v kontekstu uporabe Google Kubernetes Engine in še več, pri čemer so se dotaknili širokega spektra tem: od varnosti do spremljanja in beleženja. Katere so torej najpomembnejše prakse zabojnikov po mnenju Googla?

7 najboljših praks za uporabo vsebnikov glede na Google

Kubernetesov motor (Storitev, ki temelji na Kubernetesu, za izvajanje aplikacij v vsebnikih v Google Cloudu – pribl. prevod) je eden najboljših načinov za izvajanje delovnih obremenitev, ki jih je treba povečati. Kubernetes bo zagotovilo nemoteno delovanje večine aplikacij, če so v kontejnerjih. Če pa želite, da je vaša aplikacija enostavna za upravljanje in želite v celoti izkoristiti Kubernetes, morate upoštevati najboljše prakse. Poenostavili bodo delovanje aplikacije, njeno spremljanje in odpravljanje napak ter povečali varnost.

V tem članku si bomo ogledali seznam stvari, ki bi jih morali vedeti in narediti za učinkovito izvajanje vsebnikov v Kubernetesu. Tisti, ki se želijo poglobiti v podrobnosti, naj preberejo gradivo Najboljše prakse za upravljanje zabojnikov, in bodite pozorni tudi na naše prejšnja objava o sestavljanju kontejnerjev.

1. Uporabite izvorne mehanizme beleženja vsebnika

Če se aplikacija izvaja v gruči Kubernetes, za dnevnike ni potrebno veliko. Centraliziran sistem beleženja je verjetno že vgrajen v gručo, ki jo uporabljate. V primeru uporabe Kubernetes Engine je to odgovorno Stackdriver beleženje. (Opomba. prevod: Če uporabljate lastno namestitev Kubernetes, priporočamo, da si podrobneje ogledate našo odprtokodno rešitev – brunarica.) Naj bo vaše življenje preprosto in uporabljajte izvorne mehanizme beleženja vsebnikov. Zapišite dnevnike v stdout in stderr - samodejno bodo prejeti, shranjeni in indeksirani.

Po želji lahko pišete tudi dnevnike format JSON. Ta pristop jim bo olajšal dodajanje metapodatkov. In z njimi bo imelo Stackdriver Logging možnost iskanja po dnevnikih z uporabo teh metapodatkov.

2. Prepričajte se, da so vsebniki brez stanja in nespremenljivi

Da vsebniki pravilno delujejo v gruči Kubernetes, morajo biti brez stanja in nespremenljivi. Ko so ti pogoji izpolnjeni, lahko Kubernetes opravlja svoje delo, ustvarja in uničuje entitete aplikacije, kadar in kjer je to potrebno.

Državljanstvo pomeni, da je katero koli stanje (obstojni podatki katere koli vrste) shranjeno zunaj vsebnika. Za to se lahko glede na potrebe uporabijo različne vrste zunanjega pomnilnika: Cloud Storage, Trajni diski, Redis, SQL v oblaku ali druge upravljane zbirke podatkov. (Opomba. prevod: Več o tem v našem članku “Operatorji za Kubernetes: kako zagnati aplikacije s stanjem".)

Brezhibno pomeni, da vsebnik med življenjsko dobo ne bo spremenjen: brez posodobitev, popravkov, sprememb konfiguracije. Če morate posodobiti kodo aplikacije ali uporabiti popravek, ustvarite novo sliko in jo razmestite. Priporočljivo je, da konfiguracijo vsebnika (vrata za poslušanje, možnosti izvajalnega okolja itd.) premaknete navzven skrivnosti и ConfigMaps. Lahko jih posodobite, ne da bi morali zgraditi novo sliko vsebnika. Za preprosto ustvarjanje cevovodov s slikovnim sklopom lahko uporabite Cloud Build. (Opomba. prevod: Za te namene uporabljamo odprtokodno orodje dapp.)

7 najboljših praks za uporabo vsebnikov glede na Google
Primer posodabljanja konfiguracije razmestitve v Kubernetesu z uporabo ConfigMap, nameščenega v sklopih kot konfiguracijo

3. Izogibajte se privilegiranim vsebnikom

Na svojih strežnikih ne izvajate aplikacij kot root, kajne? Če napadalec vstopi v aplikacijo, bo pridobil korenski dostop. Enako velja, če ne izvajate privilegiranih vsebnikov. Če morate spremeniti nastavitve na gostitelju, lahko vsebniku dodelite posebnost Zmogljivosti z uporabo možnosti securityContext v Kubernetesu. Če se morate spremeniti sysctls, ima Kubernetes ločen povzetek za to. Na splošno poskusite kar najbolje izkoristiti v- in zabojnike s prikolico za izvajanje podobnih privilegiranih operacij. Ni nujno, da so dostopni ne notranjemu ne zunanjemu prometu.

Če upravljate gručo, lahko uporabite Varnostna politika Pod za omejitve uporabe privilegiranih vsebnikov.

4. Izogibajte se izvajanju kot root

O privilegiranih vsebnikih smo že govorili, vendar bo še bolje, če poleg tega ne izvajate aplikacij znotraj vsebnika kot root. Če napadalec najde oddaljeno ranljivost v aplikaciji s korenskimi pravicami, ki omogoča izvajanje kode, po kateri lahko zapusti vsebnik zaradi še neznane ranljivosti, bo pridobil root na gostitelju.

Najboljši način, da se temu izognete, je, da ničesar ne izvajate kot root. Če želite to narediti, lahko uporabite direktivo USER в Dockerfile ali runAsUser v Kubernetesu. Skrbnik gruče lahko tudi konfigurira vedenje uveljavljanja z uporabo Varnostna politika Pod.

5. Naj bo aplikacija enostavna za spremljanje

Tako kot beleženje je tudi spremljanje sestavni del upravljanja aplikacij. Priljubljena rešitev za spremljanje v skupnosti Kubernetes je Prometej - sistem, ki samodejno zazna pode in storitve, ki zahtevajo nadzor. (Opomba. prevod: Glej tudi naše podrobno poročilo na temo spremljanja z uporabo Prometheusa in Kubernetesa.) Stackdriver je sposoben spremljati gruče Kubernetes in vključuje lastno različico Prometheusa za spremljanje aplikacij.

7 najboljših praks za uporabo vsebnikov glede na Google
Nadzorna plošča Kubernetes na Stackdriverju

Prometheus pričakuje, da aplikacija posreduje meritve končni točki HTTP. Na voljo za to Odjemalske knjižnice Prometheus. Isti format uporabljajo druga orodja, kot je OpenCensus и Istio.

6. Dajte na voljo zdravstveno stanje aplikacije

Upravljanje aplikacij v proizvodnji je podprto z njihovo zmožnostjo sporočanja svojega stanja celotnemu sistemu. Ali aplikacija teče? Je v redu? Ali ste pripravljeni sprejemati promet? Kako se obnaša? Najpogostejši način za rešitev te težave je izvajanje zdravstvenih pregledov (zdravstveni pregledi). Kubernetes ima dve vrsti: sonde za živost in pripravljenost.

Za merilnik živahnosti (preverjanje vitalnosti) aplikacija mora imeti končno točko HTTP, ki vrne odgovor "200 OK", če deluje in so njene osnovne odvisnosti izpolnjene. Za sondo pripravljenosti (preverjanje servisne pripravljenosti) aplikacija mora imeti drugo končno točko HTTP, ki vrne odgovor "200 OK", če je aplikacija v zdravem stanju, so bili inicializacijski koraki dokončani in nobena veljavna zahteva ne povzroči napake. Kubernetes bo promet usmeril v vsebnik le, če je aplikacija pripravljena v skladu s temi pregledi. Dve končni točki se lahko združita, če ni razlike med stanjem živahnosti in pripravljenosti.

Več o tem lahko preberete v povezanem članku Sandeepa Dinesha, Googlovega zagovornika razvijalcev: “Najboljše prakse Kubernetes: Nastavitev pregledov zdravja s sondami pripravljenosti in živahnosti".

7. Previdno izberite različico slike

Večina javnih in zasebnih slik uporablja sistem označevanja, podoben opisanemu v Najboljše prakse za gradnjo zabojnikov. Če slika uporablja sistem blizu semantično različico, je treba upoštevati posebnosti označevanja. Na primer, oznaka latest se lahko pogosto premika od slike do slike - nanj se ni mogoče zanesti, če potrebujete predvidljive in ponovljive gradnje in namestitve.

Lahko uporabite oznako X.Y.Z (skoraj vedno so nespremenjeni), vendar v tem primeru spremljajte vse popravke in posodobitve slike. Če ima slika, ki jo uporabljate, oznako X.Y, to je dobra možnost za zlato sredino. Z njeno izbiro samodejno prejemate popravke in se hkrati zanašate na stabilno različico aplikacije.

PS od prevajalca

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar