7 bêste praktiken foar it brûken fan konteners neffens Google

Noat. transl.: De skriuwer fan it orizjinele artikel is Théo Chamley, Google Cloud Solutions Architect. Yn dizze post foar it Google Cloud-blog jout hy in gearfetting fan 'e mear detaillearre hantlieding fan syn bedriuw, neamd "Best Practices foar it operearjen fan konteners" Dêryn sammele Google-saakkundigen bêste praktiken foar it operearjen fan konteners yn 'e kontekst fan it brûken fan de Google Kubernetes Engine en mear, oanreitsjen fan in breed skala oan ûnderwerpen: fan feiligens oant tafersjoch en logging. Dus wat binne de wichtichste kontenerpraktiken neffens Google?

7 bêste praktiken foar it brûken fan konteners neffens Google

Kubernetes Engine (Kubernetes-basearre tsjinst foar it útfieren fan containerisearre applikaasjes op Google Cloud - ca. oersetting) is ien fan 'e bêste manieren om workloads út te fieren dy't skaalber binne. Kubernetes sil soargje foar soepel funksjonearjen fan de measte applikaasjes as se binne containerized. Mar as jo wolle dat jo applikaasje maklik te behearjen is en folslein foardielje wolle fan Kubernetes, moatte jo bêste praktiken folgje. Se sille de wurking fan 'e applikaasje, har tafersjoch en debuggen ferienfâldigje, en ek feiligens ferheegje.

Yn dit artikel sille wy troch in list gean mei dingen dy't jo moatte witte en dwaan om konteners effektyf út te fieren op Kubernetes. Wa't djipper yn details wolle gean, moatte it materiaal lêze Best Practices foar it operearjen fan konteners, en ek omtinken jaan oan ús eardere post oer it gearstallen fan konteners.

1. Brûk native container logging meganismen

As de applikaasje op in Kubernetes-kluster rint, is net folle nedich foar logs. In sintralisearre logsysteem is wierskynlik al ynboud yn it kluster dat jo brûke. Yn it gefal fan it brûken fan Kubernetes Engine, dit is ferantwurdlik Stackdriver Logging. (Noat. transl.: En as jo jo eigen Kubernetes-ynstallaasje brûke, riede wy oan om ús Open Source-oplossing fan tichterby te besjen - loghouse.) Hâld jo libben ienfâldich en brûk meganismen foar native container logging. Skriuw logs nei stdout en stderr - se wurde automatysk ûntfongen, bewarre en yndeksearre.

As jo ​​​​wolle, kinne jo ek logs skriuwe nei JSON-formaat. Dizze oanpak sil it maklik meitsje om metadata oan har ta te foegjen. En mei har sil Stackdriver Logging de mooglikheid hawwe om troch logs te sykjen mei dizze metadata.

2. Soargje derfoar dat konteners steatleas en ûnferoarlik binne

Foar konteners om goed te funksjonearjen yn in Kubernetes-kluster, moatte se steatleas en ûnferoarlik wêze. Sadree't dizze betingsten foldien binne, kin Kubernetes har wurk dwaan, applikaasje-entiteiten oanmeitsje en ferneatigje wannear en wêr nedich.

Steateleas betsjut dat elke steat (persistente gegevens fan hokker soart) wurdt opslein bûten de kontener. Hjirfoar kinne, ôfhinklik fan 'e behoeften, ferskate soarten eksterne opslach brûkt wurde: wolk Storage, Persistente skiven, Redis, Wolke SQL of oare beheare databases. (Noat. transl.: Lês mear oer dit yn ús artikel "Operators foar Kubernetes: hoe kinne jo steatlike applikaasjes útfiere".)

Unferjitlik betsjut dat de kontener yn syn libben net wizige wurdt: gjin updates, patches, konfiguraasjewizigingen. As jo ​​​​jo applikaasjekoade moatte bywurkje of in patch tapasse, meitsje dan in nije ôfbylding en ynsette it. It is oan te rieden om de container konfiguraasje (harkjen haven, runtime omjouwing opsjes, ensfh) ekstern ferpleatse - nei secrets и ConfigMaps. Se kinne bywurke wurde sûnder in nije kontenerôfbylding te bouwen. Om maklik pipelines te meitsjen mei ôfbyldingsassemblage, kinne jo gebrûk meitsje Wolken bouwe. (Noat. transl.: Wy brûke in Open Source-ark foar dizze doelen dapp.)

7 bêste praktiken foar it brûken fan konteners neffens Google
In foarbyld fan it bywurkjen fan de ynsetkonfiguraasje yn Kubernetes mei ConfigMap monteard yn pods as konfiguraasje

3. Avoid befoarrjochte containers

Jo rinne gjin applikaasjes as root op jo servers, krekt? As in oanfaller yn 'e applikaasje komt, sil hy root tagong krije. Deselde oerwegings jilde foar it net útfieren fan befoarrjochte konteners. As jo ​​ynstellings op 'e host moatte feroarje, kinne jo de kontener spesifyk jaan kapasiteiten mei help fan de opsje securityContext yn Kubernetes. As jo ​​moatte feroarje sysctls, Kubernetes hat apart abstrakt foar dit. Yn it algemien, besykje it measte út te meitsjen yn it- en sidecar-konteners om ferlykbere befoarrjochte operaasjes út te fieren. Se hoege net tagonklik te wêzen foar sawol yntern as ekstern ferkear.

As jo ​​​​in kluster beheare, kinne jo gebrûk meitsje Pod Feiligens Belied foar beheiningen op it brûken fan befoarrjochte konteners.

4. Avoid running as root

Privilearde konteners binne al besprutsen, mar it sil noch better wêze as jo, neist dit, gjin applikaasjes yn 'e kontener útfiere as root. As in oanfaller in kwetsberens op ôfstân fynt yn in applikaasje mei rootrjochten dy't koade útfiere mooglik makket, wêrnei't hy de kontener ferlitte kin troch in noch ûnbekende kwetsberens, sil hy root krije op 'e host.

De bêste manier om dit te foarkommen is om yn it foarste plak neat as root út te fieren. Om dit te dwaan kinne jo de rjochtline brûke USER в Dockerfile of runAsUser yn Kubernetes. De klusterbehearder kin ek it hanthaveningsgedrach konfigurearje mei Pod Feiligens Belied.

5. Meitsje de applikaasje maklik te kontrolearjen

Lykas logging is tafersjoch in yntegraal ûnderdiel fan applikaasjebehear. In populêre tafersjochoplossing yn 'e Kubernetes-mienskip is Prometheus - in systeem dat automatysk pods en tsjinsten detektearret dy't tafersjoch fereaskje. (Noat. transl.: Sjoch ek ús detaillearre rapport oer it ûnderwerp fan tafersjoch mei Prometheus en Kubernetes.) Stackdriver is yn steat om Kubernetes-klusters te kontrolearjen en omfettet in eigen ferzje fan Prometheus foar tafersjoch op tapassing.

7 bêste praktiken foar it brûken fan konteners neffens Google
Kubernetes Dashboard op Stackdriver

Prometheus ferwachtet dat de applikaasje metriken trochstjoert nei it HTTP-einpunt. Beskikber foar dizze Prometheus client biblioteken. Itselde formaat wurdt brûkt troch oare ark lykas OpenCensus и Istio.

6. Meitsje de sûnensstatus fan 'e app beskikber

Applikaasjebehear yn produksje wurdt holpen troch syn fermogen om syn steat te kommunisearjen nei it heule systeem. Is de applikaasje rint? Is it goed? Binne jo ree om ferkear te ûntfangen? Hoe gedraacht er him? De meast foarkommende manier om dit probleem op te lossen is it útfieren fan sûnenskontrôles (sûnenskontrôles). Kubernetes hat twa soarten: liveness en reewilligens probes.

Foar liveness probe (vitaliteitskontrôles) de applikaasje moat in HTTP-einpunt hawwe dy't in "200 OK"-antwurd werombringt as it funksjoneel is en de basisôfhinklikens is tefreden. Foar reewilligens sonde (kontrôles foar tsjinstberens) de applikaasje moat in oar HTTP-einpunt hawwe dat in "200 OK" antwurd jout as de applikaasje yn in sûne steat is, de inisjalisaasjestappen binne foltôge en elk jildich fersyk net resultearret yn in flater. Kubernetes sil allinich ferkear nei de kontener router as de applikaasje klear is neffens dizze kontrôles. Twa einpunten kinne wurde gearfoege as d'r gjin ferskil is tusken de steaten fan libbenens en reewilligens.

Jo kinne mear oer dit lêze yn it relatearre artikel fan Sandeep Dinesh, Developer Advocate fan Google: "Kubernetes bêste praktiken: sûnenskontrôles ynstelle mei probes foar reewilligens en leefberens".

7. Kies jo ôfbyldingsferzje foarsichtich

De measte publike en partikuliere ôfbyldings brûke in taggingsysteem fergelykber mei it beskreaun yn Bêste praktiken foar it bouwen fan konteners. As de ôfbylding brûkt in systeem tichtby semantyske ferzje, is it nedich om rekken te hâlden mei de spesifiken fan tagging. Bygelyks, tag latest kin faak fan ôfbylding nei ôfbylding ferpleatse - kin net fertroud wurde as jo foarsisbere en werheljebere builds en ynstallaasjes nedich binne.

Jo kinne de tag brûke X.Y.Z (se binne hast altyd net feroare), mar yn dit gefal folgje alle patches en updates foar de ôfbylding. As de ôfbylding dy't jo brûke hat in tag X.Y, Dit is in goede opsje foar de gouden midden. Troch it te kiezen, ûntfange jo automatysk patches en fertrouwe jo tagelyk op 'e stabile ferzje fan' e applikaasje.

PS fan oersetter

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment