7 osvedčených postupov na používanie kontajnerov podľa Googlu

Poznámka. preklad.: Autorom pôvodného článku je Théo Chamley, Google Cloud Solutions Architect. V tomto príspevku pre blog Google Cloud poskytuje zhrnutie podrobnejšieho sprievodcu svojej spoločnosti s názvom „Najlepšie postupy pri prevádzke kontajnerov" Odborníci z Google v ňom zhromaždili osvedčené postupy na prevádzkovanie kontajnerov v kontexte používania Google Kubernetes Engine a ďalších, pričom sa dotýkali širokého spektra tém: od zabezpečenia po monitorovanie a protokolovanie. Aké sú teda najdôležitejšie praktiky kontajnerov podľa Google?

7 osvedčených postupov na používanie kontajnerov podľa Googlu

Motor Kubernetes (Služba založená na Kubernetes na spúšťanie kontajnerových aplikácií v službe Google Cloud - približne. preklad) je jedným z najlepších spôsobov spúšťania pracovných zaťažení, ktoré je potrebné škálovať. Kubernetes zabezpečí hladké fungovanie väčšiny aplikácií, ak sú kontajnerované. Ak však chcete, aby sa vaša aplikácia ľahko spravovala a chcete naplno využívať výhody Kubernetes, musíte postupovať podľa osvedčených postupov. Zjednodušia obsluhu aplikácie, jej sledovanie a ladenie a tiež zvýšia bezpečnosť.

V tomto článku si prejdeme zoznam vecí, ktoré by ste mali vedieť a robiť, aby ste na Kubernetes efektívne prevádzkovali kontajnery. Tí, ktorí chcú ísť hlbšie do detailov, by si mali prečítať materiál Najlepšie postupy pri prevádzke kontajnerov, a tiež venovať pozornosť našim predchádzajúci príspevok o montáži kontajnerov.

1. Použite natívne mechanizmy protokolovania kontajnerov

Ak je aplikácia spustená na klastri Kubernetes, nie je potrebné veľa denníkov. Centralizovaný systém protokolovania je pravdepodobne už zabudovaný do klastra, ktorý používate. V prípade použitia Kubernetes Engine je to zodpovedné Stackdriver protokolovanie. (Poznámka. preklad.: A ak používate vlastnú inštaláciu Kubernetes, odporúčame vám bližšie sa pozrieť na naše riešenie s otvoreným zdrojom - zrubový dom.) Majte svoj život jednoduchý a používajte natívne mechanizmy protokolovania kontajnerov. Zapisujte protokoly do stdout a stderr - budú automaticky prijaté, uložené a indexované.

Ak chcete, môžete tiež zapisovať denníky formát JSON. Tento prístup k nim uľahčí pridávanie metadát. A s nimi bude mať Stackdriver Logging možnosť prehľadávať protokoly pomocou týchto metadát.

2. Uistite sa, že kontajnery sú bez štátnej príslušnosti a nemenné

Aby kontajnery správne fungovali v klastri Kubernetes, musia byť bezstavové a nemenné. Po splnení týchto podmienok môže Kubernetes vykonávať svoju prácu, vytvárať a ničiť entity aplikácie, keď a kde je to potrebné.

Bezstavový znamená, že akýkoľvek stav (trvalé údaje akéhokoľvek druhu) sú uložené mimo kontajnera. Na tento účel možno v závislosti od potrieb použiť rôzne typy externého úložiska: Cloud Storage, Trvalé disky, Redis, CloudSQL alebo iné spravované databázy. (Poznámka. preklad.: Prečítajte si o tom viac v našom článku “Operátori pre Kubernetes: ako spúšťať stavové aplikácie".)

nemeniteľný znamená, že kontajner nebude počas svojej životnosti upravovaný: žiadne aktualizácie, záplaty, zmeny konfigurácie. Ak potrebujete aktualizovať kód aplikácie alebo použiť opravu, vytvorte nový obraz a nasaďte ho. Odporúča sa presunúť konfiguráciu kontajnera (port na počúvanie, možnosti runtime prostredia atď.) externe - do Tajomstvo и ConfigMaps. Môžu byť aktualizované bez toho, aby ste museli vytvárať nový obrázok kontajnera. Na jednoduché vytváranie potrubí pomocou zostavy obrazu môžete použiť Cloud Build. (Poznámka. preklad.: Na tieto účely používame nástroj Open Source Dapp.)

7 osvedčených postupov na používanie kontajnerov podľa Googlu
Príklad aktualizácie konfigurácie nasadenia v Kubernetes pomocou ConfigMap namontovaného v moduloch ako konfigurácie

3. Vyhnite sa privilegovaným kontajnerom

Na svojich serveroch nespúšťate aplikácie ako root, však? Ak sa útočník dostane do aplikácie, získa root prístup. Rovnaké úvahy platia pre nespustenie privilegovaných kontajnerov. Ak potrebujete zmeniť nastavenia na hostiteľovi, môžete zadať konkrétny kontajner možnosti pomocou možnosti securityContext v Kubernetes. Ak potrebujete zmeniť sysctls, Kubernetes má samostatný abstrakt pre to. Vo všeobecnosti sa snažte vyťažiť maximum začať- a kontajnery postranných vozíkov na vykonávanie podobných privilegovaných operácií. Nemusia byť prístupné ani internej, ani externej premávke.

Ak spravujete klaster, môžete použiť Bezpečnostná politika pod pre obmedzenia používania privilegovaných kontajnerov.

4. Vyhnite sa spusteniu ako root

O privilegovaných kontajneroch už bola reč, ale bude ešte lepšie, ak okrem toho nebudete v kontajneri spúšťať aplikácie ako root. Ak útočník nájde vzdialenú zraniteľnosť v aplikácii s právami root, ktorá umožňuje spustenie kódu, po ktorom je schopný opustiť kontajner cez zatiaľ neznámu zraniteľnosť, získa root na hostiteľovi.

Najlepší spôsob, ako sa tomu vyhnúť, je nespúšťať nič ako root. Na tento účel môžete použiť smernicu USER в Dockerfile alebo runAsUser v Kubernetes. Správca klastra môže tiež nakonfigurovať správanie presadzovania pomocou Bezpečnostná politika pod.

5. Uľahčite sledovanie aplikácie

Rovnako ako protokolovanie, aj monitorovanie je neoddeliteľnou súčasťou správy aplikácií. Populárne monitorovacie riešenie v komunite Kubernetes je Prometheus - systém, ktorý automaticky detekuje moduly a služby, ktoré vyžadujú monitorovanie. (Poznámka. preklad.: Pozri tiež naše podrobná správa na tému monitorovania pomocou Prometheus a Kubernetes.) Stackdriver je schopný monitorovať klastre Kubernetes a obsahuje vlastnú verziu Prometheus na monitorovanie aplikácií.

7 osvedčených postupov na používanie kontajnerov podľa Googlu
Kubernetes Dashboard na Stackdriver

Prometheus očakáva, že aplikácia prepošle metriky do koncového bodu HTTP. K dispozícii na to Klientske knižnice Prometheus. Rovnaký formát používajú aj iné nástroje, napr OpenCensus и Istio.

6. Sprístupnite zdravotný stav aplikácie

Riadeniu aplikácie vo výrobe napomáha jej schopnosť komunikovať svoj stav do celého systému. Je aplikácia spustená? Je to v poriadku? Ste pripravení prijímať návštevnosť? Ako sa správa? Najbežnejším spôsobom riešenia tohto problému je vykonávanie zdravotných kontrol (zdravotné prehliadky). Kubernetes má dva typy: sondy živosti a pripravenosti.

Pre sondu živosti (kontroly vitality) aplikácia musí mať koncový bod HTTP, ktorý vráti odpoveď „200 OK“, ak je funkčná a sú splnené jej základné závislosti. Pre sondu pripravenosti (kontroly pripravenosti na službu) aplikácia musí mať iný koncový bod HTTP, ktorý vráti odpoveď "200 OK", ak je aplikácia v dobrom stave, inicializačné kroky boli dokončené a žiadna platná požiadavka nespôsobí chybu. Kubernetes bude smerovať prevádzku do kontajnera iba vtedy, ak je aplikácia pripravená podľa týchto kontrol. Dva koncové body je možné zlúčiť, ak nie je rozdiel medzi stavom živosti a pripravenosti.

Viac o tom si môžete prečítať v súvisiacom článku od Sandeep Dinesh, Developer Advocate od Google: “Osvedčené postupy Kubernetes: Nastavenie zdravotných kontrol so sondami pripravenosti a živosti".

7. Starostlivo si vyberte verziu obrázka

Väčšina verejných a súkromných obrázkov používa systém označovania podobný tomu, ktorý je opísaný v Osvedčené postupy pre stavbu kontajnerov. Ak obrázok používa systém blízky sémantické verzovanie, je potrebné brať do úvahy špecifiká značkovania. Napríklad tag latest môže sa často presúvať z obrázka na obrázok – nedá sa naň spoľahnúť, ak potrebujete predvídateľné a opakovateľné zostavy a inštalácie.

Môžete použiť značku X.Y.Z (sú takmer vždy nezmenené), ale v tomto prípade sledujte všetky opravy a aktualizácie obrázka. Ak má obrázok, ktorý používate, značku X.Y, je to dobrá voľba pre zlatú strednú cestu. Jeho výberom automaticky dostávate záplaty a zároveň sa spoliehate na stabilnú verziu aplikácie.

PS od prekladateľa

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár