7 praktikat më të mira për përdorimin e kontejnerëve sipas Google

Shënim. përkth.: Autori i artikullit origjinal është Théo Chamley, arkitekt i Google Cloud Solutions. Në këtë postim për blogun e Google Cloud, ai ofron një përmbledhje të udhëzuesit më të detajuar të kompanisë së tij, të quajtur "Praktikat më të mira për funksionimin e kontejnerëve" Në të, ekspertët e Google mblodhën praktikat më të mira për funksionimin e kontejnerëve në kontekstin e përdorimit të Google Kubernetes Engine dhe më shumë, duke prekur një gamë të gjerë temash: nga siguria te monitorimi dhe regjistrimi. Pra, cilat janë praktikat më të rëndësishme të kontejnerëve sipas Google?

7 praktikat më të mira për përdorimin e kontejnerëve sipas Google

Motori Kubernetes (Shërbimi i bazuar në Kubernetes për ekzekutimin e aplikacioneve me kontejnerë në Google Cloud - përafërsisht. përkthimi) është një nga mënyrat më të mira për të ekzekutuar ngarkesat e punës që duhet të shkallëzohen. Kubernetes do të sigurojë funksionimin e qetë të shumicës së aplikacioneve nëse ato janë të kontejnerizuara. Por nëse dëshironi që aplikacioni juaj të jetë i lehtë për t'u menaxhuar dhe dëshironi të përfitoni plotësisht nga Kubernetes, duhet të ndiqni praktikat më të mira. Ata do të thjeshtojnë funksionimin e aplikacionit, monitorimin dhe korrigjimin e tij, si dhe do të rrisin sigurinë.

Në këtë artikull, ne do të shqyrtojmë një listë të gjërave që duhet të dini dhe të bëni për të drejtuar kontejnerët në mënyrë efektive në Kubernetes. Ata që dëshirojnë të thellohen në detaje duhet të lexojnë materialin Praktikat më të mira për funksionimin e kontejnerëve, dhe gjithashtu kushtojini vëmendje tonë postimi i mëparshëm rreth montimit të kontejnerëve.

1. Përdorni mekanizmat vendas të prerjeve të kontejnerëve

Nëse aplikacioni funksionon në një grup Kubernetes, nuk nevojitet shumë për regjistrat. Një sistem i centralizuar i regjistrimit ka të ngjarë të jetë ndërtuar tashmë në grupin që po përdorni. Në rastin e përdorimit të Kubernetes Engine, kjo është përgjegjëse Regjistrimi i Stackdriver. (Shënim. përkth.: Dhe nëse përdorni instalimin tuaj të Kubernetes, ju rekomandojmë të shikoni nga afër zgjidhjen tonë me burim të hapur - shtëpi bari.) Mbajeni jetën tuaj të thjeshtë dhe përdorni mekanizmat vendas të prerjeve të kontejnerëve. Shkruani regjistrat në stdout dhe stderr - ato do të merren, ruhen dhe indeksohen automatikisht.

Nëse dëshironi, mund të shkruani edhe regjistra në Formati JSON. Kjo qasje do ta bëjë të lehtë shtimin e meta të dhënave në to. Dhe me ta, Stackdriver Logging do të ketë aftësinë për të kërkuar nëpër regjistra duke përdorur këto meta të dhëna.

2. Sigurohuni që kontejnerët të jenë pa shtetësi dhe të pandryshueshme

Që kontejnerët të funksionojnë siç duhet në një grup Kubernetes, ato duhet të jenë pa shtetësi dhe të pandryshueshme. Pasi të plotësohen këto kushte, Kubernetes mund të bëjë punën e tij, duke krijuar dhe shkatërruar entitete aplikimi kur dhe ku të jetë e nevojshme.

pa shtetësi do të thotë që çdo gjendje (të dhëna të vazhdueshme të çdo lloji) ruhet jashtë kontejnerit. Për këtë, në varësi të nevojave, mund të përdoren lloje të ndryshme të ruajtjes së jashtme: Cloud Storage, Disqe të qëndrueshme, Redis, CloudSQL ose baza të tjera të dhënash të menaxhuara. (Shënim. përkth.: Lexoni më shumë për këtë në artikullin tonë "Operatorët për Kubernetes: si të ekzekutoni aplikacione shtetërore".)

i pandryshueshëm do të thotë që kontejneri nuk do të modifikohet gjatë jetës së tij: nuk ka përditësime, arna, ndryshime konfigurimi. Nëse keni nevojë të përditësoni kodin e aplikacionit ose të aplikoni një patch, krijoni një imazh të ri dhe vendoseni atë. Rekomandohet të zhvendosni konfigurimin e kontejnerit (portin e dëgjimit, opsionet e mjedisit të kohës së funksionimit, etj.) nga jashtë - në Secrets и ConfigMaps. Ato mund të përditësohen pa pasur nevojë të ndërtohet një imazh i ri i kontejnerit. Për të krijuar lehtësisht tubacione me montim imazhi, mund të përdorni Ndërtimi i resë kompjuterike. (Shënim. përkth.: Ne përdorim një mjet me burim të hapur për këto qëllime DAPP.)

7 praktikat më të mira për përdorimin e kontejnerëve sipas Google
Një shembull i përditësimit të konfigurimit të vendosjes në Kubernetes duke përdorur ConfigMap të montuar në pods si një konfigurim

3. Shmangni kontejnerët e privilegjuar

Ju nuk ekzekutoni aplikacione si rrënjë në serverët tuaj, apo jo? Nëse një sulmues hyn në aplikacion, ai do të fitojë qasje rrënjësore. Të njëjtat konsiderata vlejnë për mos drejtimin e kontejnerëve të privilegjuar. Nëse keni nevojë të ndryshoni cilësimet në host, mund t'i jepni kontejnerit specifik aftësitë duke përdorur opsionin securityContext në Kubernetes. Nëse keni nevojë të ndryshoni sysctls, Kubernetes ka abstrakt i veçantë për këtë. Në përgjithësi, përpiquni të shfrytëzoni sa më shumë fillim- dhe kontejnerët e karrigeve anësore për të kryer operacione të ngjashme të privilegjuara. Ata nuk kanë nevojë të jenë të aksesueshme as nga trafiku i brendshëm dhe as i jashtëm.

Nëse administroni një grup, mund të përdorni Politika e sigurisë së pod për kufizime në përdorimin e kontejnerëve të privilegjuar.

4. Shmangni vrapimin si rrënjë

Kontejnerët e privilegjuar tashmë janë diskutuar, por do të jetë edhe më mirë nëse, përveç kësaj, nuk ekzekutoni aplikacione brenda kontejnerit si rrënjë. Nëse një sulmues gjen një cenueshmëri të largët në një aplikacion me të drejta rrënjësore që lejon ekzekutimin e kodit, pas së cilës ai është në gjendje të largohet nga kontejneri përmes një cenueshmërie ende të panjohur, ai do të fitojë rrënjë në host.

Mënyra më e mirë për të shmangur këtë është që në radhë të parë të mos përdorni asgjë si root. Për ta bërë këtë, mund të përdorni direktivën USER в Dockerfile ose runAsUser në Kubernetes. Administratori i grupit gjithashtu mund të konfigurojë sjelljen e zbatimit duke përdorur Politika e sigurisë së pod.

5. Bëni aplikacionin të lehtë për tu monitoruar

Ashtu si regjistrimi, monitorimi është një pjesë integrale e menaxhimit të aplikacionit. Një zgjidhje popullore monitorimi në komunitetin Kubernetes është Prometeu - një sistem që zbulon automatikisht pods dhe shërbimet që kërkojnë monitorim. (Shënim. përkth.: Shihni edhe tonën raport i detajuar në temën e monitorimit duke përdorur Prometheus dhe Kubernetes.) Stackdriver është në gjendje të monitorojë grupimet e Kubernetes dhe përfshin versionin e vet të Prometheus për monitorimin e aplikacioneve.

7 praktikat më të mira për përdorimin e kontejnerëve sipas Google
Paneli i Kubernetes në Stackdriver

Prometheus pret që aplikacioni të përcjellë metrikat në pikën përfundimtare të HTTP. Në dispozicion për këtë Bibliotekat e klientëve Prometheus. I njëjti format përdoret nga mjete të tjera si p.sh Regjistrimi i hapur и Istio.

6. Bëje të disponueshme gjendjen shëndetësore të aplikacionit

Menaxhimi i aplikacionit në prodhim ndihmohet nga aftësia e tij për të komunikuar gjendjen e tij në të gjithë sistemin. A po funksionon aplikacioni? A është ne rregull? A jeni gati për të marrë trafik? Si po sillet ai? Mënyra më e zakonshme për të zgjidhur këtë problem është kryerja e kontrolleve shëndetësore (kontrollet shëndetësore). Kubernetes ka dy lloje: sondat e gjallërisë dhe gatishmërisë.

Për hetimin e gjallërisë (kontrollet e vitalitetit) aplikacioni duhet të ketë një pikë fundore HTTP që kthen një përgjigje "200 OK" nëse është funksional dhe varësitë e tij themelore janë të kënaqura. Për hetimin e gatishmërisë (kontrollet e gatishmërisë së shërbimit) aplikacioni duhet të ketë një pikë tjetër fundore HTTP që kthen një përgjigje "200 OK" nëse aplikacioni është në gjendje të shëndetshme, hapat e inicializimit janë përfunduar dhe çdo kërkesë e vlefshme nuk rezulton në një gabim. Kubernetes do të drejtojë trafikun drejt kontejnerit vetëm nëse aplikacioni është gati sipas këtyre kontrolleve. Dy pika fundore mund të bashkohen nëse nuk ka dallim midis gjendjeve të gjallërisë dhe gatishmërisë.

Mund të lexoni më shumë rreth kësaj në artikullin përkatës nga Sandeep Dinesh, Avokati i Zhvilluesit nga Google:Praktikat më të mira të Kubernetes: Vendosja e kontrolleve shëndetësore me teste gatishmërie dhe gjallërie'.

7. Zgjidhni versionin tuaj të imazhit me kujdes

Shumica e imazheve publike dhe private përdorin një sistem etiketimi të ngjashëm me atë të përshkruar në Praktikat më të mira për ndërtimin e kontejnerëve. Nëse imazhi përdor një sistem afër versionimi semantik, është e nevojshme të merren parasysh specifikat e etiketimit. Për shembull, tag latest mund të lëvizë shpesh nga imazhi në imazh - nuk mund të mbështeteni nëse keni nevojë për ndërtime dhe instalime të parashikueshme dhe të përsëritshme.

Ju mund të përdorni etiketën X.Y.Z (ato janë pothuajse gjithmonë të pandryshuara), por në këtë rast, mbani gjurmët e të gjitha arnimeve dhe përditësimeve të imazhit. Nëse imazhi që po përdorni ka një etiketë X.Y, ky është një opsion i mirë për mesataren e artë. Duke e zgjedhur atë, ju automatikisht merrni arna dhe në të njëjtën kohë mbështeteni në versionin e qëndrueshëm të aplikacionit.

PS nga përkthyesi

Lexoni edhe në blogun tonë:

Burimi: www.habr.com

Shto një koment