Google'i versiooni jÀrgi 7 parimat praktikat konteinerite kasutamiseks

MĂ€rkus tĂ”lke kohta.: Originaali artikli autor on ThĂ©o Chamley, Google'i pilveehitusarhitekt. Selles Google Cloud'i blogipostituses esitleb ta lĂŒhikokkuvĂ”tte oma ettevĂ”tte pikemast juhendist, pealkirjaga "Parimad praktikud konteinerite haldamiseks». Selles on Google'i ekspertide poolt kokku kogutud parimad praktikud konteinerite kasutamiseks Google Kubernetes Engine'i kontekstis ja mitte ainult, kĂ€sitledes laia teemade spektrit: alates turvalisusest kuni jĂ€lgimise ja logimise. Nii et millised konteinerite haldamise praktikud on Google'i arvates kĂ”ige olulisemad?

Google'i versiooni jÀrgi 7 parimat praktikat konteinerite kasutamiseks

Kubernetes Engine (Kubernetesil pĂ”hinev teenus konteineriseeritud rakenduste kĂ€itamiseks Google Cloud'is — mĂ€rkus tĂ”lke kohta.) on ĂŒks parimaid viise skaleerimist vajavate töökoormuste kĂ€itamiseks. Kubernetes tagab enamikku rakendustest probleemivaba toimimise, kui need on konteineriseeritud. Kuid kui soovite, et rakenduse haldamine oleks lihtne ja soovite kasutada kĂ”iki Kubernetes'e eeliseid, tuleb jĂ€rgida parimaid praktikaid. Need lihtsustavad rakenduse haldamist, selle jĂ€lgimist ja tĂ”rkeotsingut ning suurendavad ka turvalisust.

Selles artiklis vaatame ĂŒle, mida on oluline teada ja teha, et tagada konteinerite tĂ”hus toimimine Kuberneteses. Kes soovib sĂŒvitsi minna, peaks lugema materjali Parimad praktikud konteinerite haldamiseks, samuti pöörama tĂ€helepanu meie varasemale postitusele konteinerite ehitamisest.

1. Kasutage konteinerite logimise natiivmehhanisme

Kui rakendus kĂ€ib Kubernetes'e klastris, siis logide jaoks ei ole vajalik palju. Tsentraliseeritud logimise sĂŒsteem on tĂ”enĂ€oliselt juba sisse ehitatud kasutatavasse klastrisse. Kui kasutate Kubernetes Engine'i, vastutab selle eest Stackdriver Logging. (MĂ€rkus tĂ”lke kohta.: Kui kasutate oma Kubernetes'e installatsiooni, soovitame tutvuda meie avatud lĂ€htekoodiga lahendusega — loghouse.) Ärge keerake endale elu raskeks ja kasutage konteinerite logimise natiivmehhanisme. Kirjutage logid stdout ja stderr — need saadetakse automaatselt, salvestatakse ja indekseerivad.

Soovi korral saate logisid kirjutada ka JSON formaadis. Selline lÀhenemine vÔimaldab hÔlpsasti lisada neile metaandmeid. Koos nendega ilmub Stackdriver Logging'is vÔimalus otsida logisid nende metaandmete abil.

2. Veenduge, et konteinerid oleksid stateful ja immutable

Kubernetesi klastris töötavate konteinerite korrektseks funktsioneerimiseks peavad need olema stateless ja immutable. Kui need tingimused on tĂ€idetud, saab Kubernetes oma ĂŒlesandeid tĂ€ita, luues ja hĂ€vitades rakenduse ĂŒksusi, kui ja kus see on vajalik.

Stateless tĂ€hendab, et kĂ”ik olekud (kĂ”ikvĂ”imalikud pĂŒsivad andmed) talletatakse konteinerist vĂ€ljaspool. Selleks, sĂ”ltuvalt vajadustest, vĂ”ivad olla kaasatud erinevad vĂ€lised ladustamisvĂ”imalused: Pilvelaadimise teenus, PĂŒsivad kettad, Redis, Cloud SQL vĂ”i muud haldatud andmebaasid. (MĂ€rkus tĂ”lke kohta.: Lisainformatsiooni selle kohta lugege ka meie artiklist „Kubernetes'i operaatorid: kuidas kĂ€ivitada stateful-rakendusi».)

Immutable tĂ€hendab, et konteinerit ei muudetaks elu jooksul: ei mingit uuendamist, plaastrite rakendamist ega konfiguratsiooni muutmist. Kui peate rakenduse koodi uuendama vĂ”i plaastri rakendama, looge uus pilt ja juurutage see. Soovitav on konteineri konfiguratsioon (kuulamisport, kĂ€ituskeskkonna valikud jne) asetada vĂ€ljapoole — Saladused ja ConfigMaps. Neid saab uuendada, ilma et oleks vajalik uut konteineripilti luua. Pilti kogumispipeline'ide lihtsaks loomiseks saab kasutada Cloud Build. (MĂ€rkus tĂ”lke kohta.: Me kasutame nende jaoks avatud lĂ€htekoodiga tööriista dapp.)

Google'i versiooni jÀrgi 7 parimat praktikat konteinerite kasutamiseks
NĂ€ide Deployment konfiguratsiooni uuendamisest Kubernetesis ConfigMap'i kaudu, mis on monteeritud podidesse konfiguraatorina

3. VĂ€listage privileege sisaldavad konteinerid

Te ei kĂ€ivita ju oma serverites rakendusi root'ina, eks? Kui rĂŒndaja pÀÀseb rakendusse, saab ta root'i Ă”igused. Samad kaalutlused kehtivad ka privileege sisaldavate konteinerite kĂ€ivitamise keelamisele. Kui hostis seadistusi muuta on vaja, saab konteinerile anda kindlad capabilities kasutades valikut securityContext Kubernetesis. Kui on vaja muuta sysctls, siis Kubernetesil on erinev annotatsioon selle jaoks. Üldiselt pĂŒĂŒdke teha maksimaalselt kasutust init- ja sidecar-konteineritele sarnaste privileegide toimingute jaoks. Need ei vaja kĂ€ttesaadavust ei sisetu trafikus, ega vĂ€lises.

Kui haldate klastrit, vÔite kasutada Pod Security Policy privilegeeritud konteinerite rakendamise piirangute jaoks.

4. VÀltige kÀivitamist root'al

O privileeritud konteinerite kohta on juba rÀÀgitud, kuid olukord paraneb veelgi, kui te lisaks sellele ei kÀivita konteineri sees rakendusi root Ôigustega. Kui kurjategija leiab rakenduses, mis töötab root Ôigustes, kaugjuhtimise haavatavuse koodide tÀitmiseks, ja suudab seejÀrel lahkuda konteineri piiridest tundmatute haavatavuste kaudu, saavutab ta hostil root Ôigused.

Parim viis selle vÀltimiseks on kÔigepealt mitte kÀivitada midagi root Ôigustes. Selleks saab kasutada direktiivi KASUTAJA ja Dockerfile vÔi runAsUser Kuberneteses. Klastri administraator saab samuti seadistada sundimist, kasutades Pod Security Policy.

5. Tehke rakendus jÀlgimiseks lihtsaks

Nagu logimine, on jĂ€lgimine rakenduse haldamise lahutamatu osa. Populaarne lahendus Kubernetese kogukonnas jĂ€lgimiseks on Prometheus — sĂŒsteem, mis avastab automaatselt podid ja teenused, mis vajavad jĂ€lgimist. (MĂ€rkus tĂ”lke kohta.: Vaadake ka meie ĂŒldist aruannet teemal jĂ€lgimine Prometheuse ja Kubernetese abil.) Stackdriver on suuteline jĂ€lgima Kubernetese klastreid ja sisaldab oma versiooni Prometheusest rakenduste jĂ€lgimiseks.

Google'i versiooni jÀrgi 7 parimat praktikat konteinerite kasutamiseks
Kubernetese jÀlgimise paneel Stackdriveris

Tavaline ootus Prometheuse jaoks on, et rakendus edastab mÔÔdikud HTTP lÔpp-punkti. Selleks on saadaval Prometheuse klienditeegid. Sama formaati kasutavad ka teised tööriistad, nagu OpenCensus ja Istio.

6. Tehke rakenduse tervislik olek kergesti kÀttesaadavaks

Rakenduse haldamisel tootmises aitab selle suutlikkus teatada oma olekust kogu sĂŒsteemile. Kas rakendus on kĂ€ivitatud? Kas see on korras? Kas see on valmis liiklust vastu vĂ”tma? Kuidas see kĂ€itub? KĂ”ige levinum viis selle probleemi lahendamiseks on elujĂ”udude kontrollide rakendamine (health checks). Kubernetese jaoks on nende kahe tĂŒĂŒpi kontrollid: elujĂ”ud ja valmisoleku kontrollid.

ElujĂ”u kontrolli jaoks (liveness probe) peab rakendusel olema HTTP lĂ”pp-punkt, mis tagastab '200 OK' vastuse, kui see töötab ja selle pĂ”h sĂ”ltuvused on rahuldatud. Valmiduse kontrolli jaoks (readiness probe) Rakendus peab omama teist HTTP lĂ”ppu, mis tagastab vastuse „200 OK“, kui rakendus on tervislik, initsialiseerimise sammud on lĂ”petatud ja kĂ”ik kehtivad pĂ€ringud ei pĂ”hjusta viga. Kubernetes suunab liikluse konteinerisse ainult rakenduse valmisoleku tingimuste jĂ€rgi, mis on defineeritud nende kontrollide kohaselt. Kaks lĂ”ppu vĂ”ivad olla ĂŒhendatud, kui elujĂ”udmise (liveness) ja valmisoleku (readiness) olekute vahel pole erinevust.

Lisateavet selle kohta leiate vastavast artiklist Sandeep Dineshilt, Google'i arendajate kaitsjalt: „Kubernetesi parimad praktikad: tervisekontrollide seadistamine valmisoleku ja elujĂ”udmise kontrollidega».

7. Valige hoolikalt pildi versioon

Enamik avalikke ja privaatsed pilte kasutavad sildistamise sĂŒsteemi, mis on sarnane kirjeldatud sĂŒsteemiga Parimad praktikad konteinerite ehitamiseks. Kui pilt rakendab sĂŒsteemi, mis on lĂ€hedane semantilisele versioonimisel, tuleb arvesse vĂ”tta sildistamise spetsiifikat. NĂ€iteks vĂ”ib silt latest tavaliselt liikuda pildilt pildile - sellele ei saa toetuda, kui vajate ettearvatavaid ja korduvaid ehitusi ja installatsioone.

Saate kasutada silti X.Y.Z (need on peaaegu alati muutumatud), kuid sel juhul jÀlgige kÔiki patche ja vÀrskendusi pildi kohta. Kui kasutatava pildi silt on X.Y, on see hea keskmine variant. Valides selle, saate automaatselt kÔik patchid ja toetute samal ajal rakenduse stabiilsele versioonile.

P.S. tÔlkijalt

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster