Google se 7 Container Beste Praktyke

Let wel. vertaal.: Die skrywer van die oorspronklike artikel is ThΓ©o Chamley, Google Cloud Solutions-argitek. In hierdie plasing vir die Google Cloud-blog gee hy 'n opsomming van sy maatskappy se meer gedetailleerde gids, genaamd "Beste praktyke vir die bedryf van houers" Daarin het Google-kundiges beste praktyke vir die bedryf van houers ingesamel in die konteks van die gebruik van die Google Kubernetes Engine en meer, wat 'n wye reeks onderwerpe aanraak: van sekuriteit tot monitering en aanteken. So, wat is die belangrikste houerpraktyke volgens Google?

Google se 7 Container Beste Praktyke

Kubernetes-enjin (Kubernetes-gebaseerde diens om houertoepassings op Google Wolk te laat loop - ongeveer. vertaal.) is een van die beste maniere om werkladings wat skaal moet uit te voer. Kubernetes sal verseker dat die meeste toepassings glad funksioneer as hulle in 'n houer geplaas word. Maar as jy wil hΓͺ dat jou aansoek maklik is om te bestuur en die volle voordeel van Kubernetes wil trek, moet jy die beste praktyke volg. Dit sal die werking van die toepassing, die monitering en ontfouting daarvan vereenvoudig, en ook sekuriteit verhoog.

In hierdie artikel gaan ons deur 'n lys van dinge wat u moet weet en doen om houers effektief op Kubernetes te laat loop. Diegene wat dieper in besonderhede wil ingaan, moet die materiaal lees Beste praktyke vir die bedryf van houers, en let ook op ons vorige pos oor die samestelling van houers.

1. Gebruik inheemse houerregistrasiemeganismes

As die toepassing op 'n Kubernetes-kluster loop, is nie veel nodig vir logs nie. 'n Gesentraliseerde logstelsel is waarskynlik reeds ingebou in die groepering wat jy gebruik. In die geval van die gebruik van Kubernetes Engine, is dit verantwoordelik Stackdriver Logging. (Let wel. vertaal.: En as jy jou eie Kubernetes-installasie gebruik, beveel ons aan om ons oopbron-oplossing van nader te bekyk - houthuis.) Hou jou lewe eenvoudig en gebruik inheemse houer-aantekenmeganismes. Skryf logs na stdout en stderr - hulle sal outomaties ontvang, gestoor en geΓ―ndekseer word.

As jy wil, kan jy ook logs na skryf json-formaat. Hierdie benadering sal dit maklik maak om metadata by hulle te voeg. En saam met hulle sal Stackdriver Logging die vermoΓ« hΓͺ om deur logboeke te soek met hierdie metadata.

2. Maak seker houers is staatloos en onveranderlik

Vir houers om korrek in 'n Kubernetes-kluster te funksioneer, moet hulle staatloos en onveranderlik wees. Sodra hierdie voorwaardes nagekom is, kan Kubernetes sy werk doen en toepassingsentiteite skep en vernietig wanneer en waar nodig.

staatlose beteken dat enige toestand (aanhoudende data van enige aard) buite die houer gestoor word. Hiervoor, afhangende van die behoeftes, kan verskillende tipes eksterne berging gebruik word: Wolkberging, Aanhoudende skywe, Redis, Wolk SQL of ander bestuurde databasisse. (Let wel. vertaal.: Lees meer hieroor in ons artikel β€œOperateurs vir Kubernetes: hoe om statige toepassings te laat loop".)

onveranderlike beteken dat die houer nie gedurende sy lewe gewysig sal word nie: geen opdaterings, pleisters, konfigurasieveranderings nie. As jy jou toepassingskode moet opdateer of 'n pleister moet toepas, skep 'n nuwe prent en ontplooi dit. Dit word aanbeveel om die houerkonfigurasie (luisterpoort, looptyd-omgewingopsies, ens.) ekstern te skuif - na Secrets ΠΈ ConfigMaps. Hulle kan opgedateer word sonder om 'n nuwe houerbeeld te bou. Om maklik pyplyne te skep met beeldsamestelling, kan jy gebruik Wolk Bou. (Let wel. vertaal.: Ons gebruik 'n oopbronhulpmiddel vir hierdie doeleindes dapp.)

Google se 7 Container Beste Praktyke
'n Voorbeeld van die opdatering van die Ontplooiing-konfigurasie in Kubernetes met behulp van ConfigMap gemonteer in peule as 'n konfigurasie

3. Vermy bevoorregte houers

Jy loop nie toepassings as wortel op jou bedieners nie, reg? As 'n aanvaller in die toepassing kom, sal hy worteltoegang kry. Dieselfde oorwegings geld vir die nie bestuur van bevoorregte houers nie. As jy instellings op die gasheer moet verander, kan jy die houer spesifiek gee vermoΓ«ns die opsie te gebruik securityContext in Kubernetes. As jy moet verander sysctls, Kubernetes het aparte abstrak vir dit. Oor die algemeen, probeer om die meeste van te maak begin- en syspanhouers om soortgelyke bevoorregte operasies uit te voer. Hulle hoef nie toeganklik te wees vir interne of eksterne verkeer nie.

As jy 'n cluster administreer, kan jy gebruik Pod Sekuriteitsbeleid vir beperkings op die gebruik van bevoorregte houers.

4. Vermy hardloop as wortel

Bevoorregte houers is reeds bespreek, maar dit sal selfs beter wees as jy nie bykomend tot hierdie toepassings binne die houer as wortel laat loop nie. As 'n aanvaller 'n afgeleΓ« kwesbaarheid vind in 'n toepassing met wortelregte wat kode-uitvoering toelaat, waarna hy die houer deur 'n nog onbekende kwesbaarheid kan verlaat, sal hy wortel op die gasheer kry.

Die beste manier om dit te vermy, is om niks in die eerste plek as wortel te gebruik nie. Om dit te doen, kan jy die richtlijn gebruik USER Π² Dockerfile of runAsUser in Kubernetes. Die groepadministrateur kan ook die afdwingingsgedrag opstel deur gebruik te maak van Pod Sekuriteitsbeleid.

5. Maak die toepassing maklik om te monitor

Soos aanteken, is monitering 'n integrale deel van toepassingsbestuur. 'n Gewilde moniteringsoplossing in die Kubernetes-gemeenskap is Prometheus - 'n stelsel wat peule en dienste wat monitering vereis outomaties opspoor. (Let wel. vertaal.: Sien ook ons gedetailleerde verslag oor die onderwerp van monitering met behulp van Prometheus en Kubernetes.) Stackdriver is in staat om Kubernetes-klusters te monitor en sluit sy eie weergawe van Prometheus vir toepassingsmonitering in.

Google se 7 Container Beste Praktyke
Kubernetes Dashboard op Stackdriver

Prometheus verwag dat die toepassing statistieke na die HTTP-eindpunt sal aanstuur. Beskikbaar hiervoor Prometheus kliΓ«nt biblioteke. Dieselfde formaat word gebruik deur ander instrumente soos Oopsensus ΠΈ Istio.

6. Maak die toepassing se gesondheidstatus beskikbaar

Toepassingsbestuur in produksie word aangehelp deur sy vermoΓ« om sy toestand aan die hele stelsel te kommunikeer. Is die toepassing aan die gang? Is dit reg? Is jy gereed om verkeer te ontvang? Hoe tree hy op? Die mees algemene manier om hierdie probleem op te los, is om gesondheidsondersoeke te implementeer (gesondheidsondersoeke). Kubernetes het twee tipes: lewenskragtigheid en gereedheidsondersoeke.

Vir lewendige ondersoek (vitaliteitskontrole) die toepassing moet 'n HTTP-eindpunt hΓͺ wat 'n "200 OK"-antwoord terugstuur as dit funksioneel is en sy basiese afhanklikhede bevredig is. Vir gereedheidsondersoek (diensgereedheidskontrole) die toepassing moet 'n ander HTTP-eindpunt hΓͺ wat 'n "200 OK"-antwoord terugstuur as die toepassing in 'n gesonde toestand is, die inisialiseringstappe voltooi is en enige geldige versoek nie 'n fout tot gevolg het nie. Kubernetes sal slegs verkeer na die houer stuur as die toepassing gereed is volgens hierdie kontroles. Twee eindpunte kan saamgevoeg word as daar geen verskil tussen die lewendig- en gereedheidstoestande is nie.

Jy kan meer hieroor lees in die verwante artikel van Sandeep Dinesh, ontwikkelaarsadvokaat van Google: "Kubernetes beste praktyke: Opstel van gesondheidsondersoeke met gereedheid- en lewendheidsondersoeke".

7. Kies jou beeldweergawe versigtig

Die meeste publieke en private beelde gebruik 'n merkstelsel soortgelyk aan die een wat in beskryf word Beste praktyke vir die bou van houers. As die beeld 'n stelsel naby aan semantiese weergawe, is dit nodig om die besonderhede van tagging in ag te neem. Byvoorbeeld, merk latest kan gereeld van beeld na beeld beweeg - daar kan nie op staatgemaak word as jy voorspelbare en herhaalbare bouwerk en installasies benodig nie.

Jy kan die merker gebruik X.Y.Z (hulle is amper altyd onveranderd), maar in hierdie geval, hou tred met alle kolle en opdaterings aan die prent. As die prent wat jy gebruik 'n merker het X.Y, dit is 'n goeie opsie vir die goue middeweg. Deur dit te kies, ontvang jy outomaties pleisters en maak terselfdertyd staat op die stabiele weergawe van die toepassing.

PS van vertaler

Lees ook op ons blog:

Bron: will.com

Voeg 'n opmerking