7 parimat konteinerite haldamise praktikat Google'i versioonis

MĂ€rk. tĂ”lge.: Originaali artikli autor on ThĂ©o Chamley, Google'i pilvetehnoloogiate arhitekt. Selles Google Cloud'i blogi postituses tutvustas ta lĂŒhikest ĂŒlevaadet oma ettevĂ”tte pĂ”hjalikumast juhendist, mille pealkiri on «Parimad praktikad konteinerite haldamiseks». Selles on Google'i spetsialistid kogunud parimaid praktikaid konteinerite haldamiseks Google Kubernetes Engine'i kasutamise kontekstis ja mujal, kĂ€sitledes erinevaid teemasid alates turvalisusest kuni jĂ€lgimise ja logimisega. Nii et millised praktikad konteineritega töötamisel on Google'i arvates kĂ”ige olulisemad?

7 parimat konteinerite haldamise praktikat Google'i versioonis

Kubernetes Engine (Kubernetes'i pĂ”hjal loodud teenus konteineriseeritud rakenduste kĂ€itamiseks Google Cloud'is — kommentaar tĂ”lkijalt.) — ĂŒks parimaid viise skaleeritavate töökoormuste kĂ€itamiseks. Kubernetes tagab probleemideta toimimise enamus rakendustest, kui need on konteineriseeritud. Kuid kui soovite, et rakendus oleks hĂ”lpsasti hallatav ja tahaksite saada kĂ”iki Kubernetes'e eeliseid, peate jĂ€rgima parimaid praktikaid. Need lihtsustavad rakenduse haldamist, jĂ€lgimist ja tĂ”rkeotsingut ning suurendavad ka turvalisust.

Selles artiklis vaatame ĂŒle, mida on oluline teada ja teha, et konteinerid Kuberneteses korralikult toimiksid. Neile, kes soovivad sĂŒgavamale sukelduda, tasub lugeda meie Parimad praktikad konteinerite haldamiseksning pöörata tĂ€helepanu meie varasemale postitusele konteinerite koostamisest.

1. Kasutage konteinerite logimise natiivmehhanisme

Kui rakendus töötab Kubernetes klastris, ei vaja logid ei ole liiga palju. Tsentraliseeritud logimissĂŒsteem on tĂ”enĂ€oliselt juba olemas kasutatavas klastris. Kubernetes Engine'i kasutamisel vastutab selle eest Stackdriver Logging. (MĂ€rk. tĂ”lge.: Kui kasutate oma Kubernetes'i installatsiooni, soovitame vaadata meie Open Source lahendust — loghouse.) Ärge keerake endale elu raskeks ja kasutage konteinerite logimise natiivmehhanisme. Kirjutage logid stdout ja stderr — need saavad automaatselt kĂ€tte, salvestatakse ja indekseeritakse.

Soovi korral saate logisid kirjutada ka JSON formaadis. Selline lÀhenemine vÔimaldab hÔlpsasti lisada neile metaanoteeringuid. Koos nendega ilmub Stackdriver Loggingisse logide otsimise vÔimalus, kasutades neid metaanoteeringuid.

2. Veenduge, et konteinerid oleksid state'less ja immutable

Kubernetesi klastris töötamiseks peavad konteinerid olema stateless ja immutable. Kui need tingimused on tÀidetud, saab Kubernetes oma tööd teha, luues ja hÀvitades rakendusolendeid siis ja seal, kus see vajalik on.

Stateless tĂ€hendab, et kĂ”ik olekud (pĂŒsivad andmed igas vormis) salvestatakse konteinerist vĂ€ljapoole. Selleks vĂ”ivad erinevad tĂŒĂŒpi vĂ€lised salvestussĂŒsteemid vastavalt vajadustele olla kaasatud: Cloud Storage, Persistent Disks, Redis, Cloud SQL vĂ”i teised hallatavad andmebaasid. (MĂ€rk. tĂ”lge.: Lisainfot leiate ka meie artiklist „Operaatorid Kubernetes'e jaoks: kuidas kĂ€ivitada stateful-rakendusi».)

Immutable tĂ€hendab, et konteinerit ei muudeta selle eluea jooksul: pole vĂ€rskendusi, parandusi, konfiguratsiooni muudatusi. Kui peate rakenduskoodi vĂ€rskendama vĂ”i plaastrit rakendama, looge uus pilt ja paigaldage see. Soovitav on viia konteineri konfiguratsioon (kuulamisport, tĂ€itev keskkonna valikud jne) vĂ€lja — Secrets ja ConfigMaps. Neid on vĂ”imalik uuendada ilma, et oleks vajalik uut konteinerit kokku panna. Lihtsaks piltide koostamise voogude loomiseks vĂ”ib kasutada Cloud Build. (MĂ€rk. tĂ”lge.: Me kasutame nende eesmĂ€rkide jaoks Open Source tööriista dapp.)

7 parimat konteinerite haldamise praktikat Google'i versioonis
Kubernetesi deployementi konfiguratsiooni uuendamise nÀide ConfigMap'i abil, mis on seotud pod'idega konfiguratsioonina

3. VĂ€ltige privileegitud konteinerite kasutamist

Te ei kĂ€ita ju oma serverites rakendusi root'i Ă”igustes, eks? Kui hĂ€kker pÀÀseb rakendusse, pÀÀseb ta ka root Ă”igustega. Samad kaalutlused kehtivad ka privileegitud konteinerite kĂ€itamise vĂ€ltimise kohta. Kui hosti seadistusi on vaja muuta, saab konteinerile anda konkreetsed vĂ”imed kasutades valikut securityContext Kubernetesis. Kui on vaja muuta sysctls, Kubernetesel on eriline annotatsioon selle jaoks. Üldiselt proovige vĂ”imalikult palju kasutada init- ja sidecar-konteinereid sarnaste privileegitud toimingute tegemiseks. Need ei vaja juurdepÀÀsu ei sise- ega vĂ€list liiklust.

Kui te haldate klastrit, saate kasutada Pod Security Policy piirangute seadmiseks privileegitud konteinerite kasutamisele.

4. VÀltige kÀitamist root'i all

Privileegitud konteineritest on juba rÀÀgitud, kuid oleks veel parem, kui te ei kÀivitaks konteineri sees rakendusi root-kasutaja Ôigustes. kui kurjategija leiab rakendusest, millel on root-Ôigused, kaugjuhtimise haavatavuse, mis vÔimaldab koodi tÀita, ja suudab seejÀrel vÀlja pÀÀseda konteineri piiridest seni teadmata haavatavuse kaudu, siis saavutab ta root-Ôigused hostis.

Parim viis selle vĂ€ltimiseks on esmajoones mitte kĂ€ivitada midagi root-kasutaja Ă”igustes. Selleks vĂ”ib kasutada direktiivi USER ĂŒhes Dockerfile vĂ”i runAsUser Kuberneteses. Klastri administraator vĂ”ib samuti seadistada sundkĂ€itumise kaudu Pod Security Policy.

5. Tee rakendus jÀlgimiseks lihtsaks

Nagu logimine, on ka jĂ€lgimine lahutamatu osa rakenduse haldamisest. Populaarne lahendus Kubernetes kogukonnas jĂ€lgimiseks on Prometheus — sĂŒsteem, mis tuvastab automaatselt podid ja teenused, mis vajavad jĂ€lgimist. (MĂ€rk. tĂ”lge.: Vaata ka meie Ă€ratarkust monitoorimise teemal Prometheuse ja Kubernetesega.) Stackdriver suudab jĂ€lgida Kubernetes klastreid ja sisaldab oma versiooni Prometheusest rakenduste jĂ€lgimiseks.

7 parimat konteinerite haldamise praktikat Google'i versioonis
Kubernetesi juhtpaneel Stackdriveris

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

6. Tehke rakenduse terviseseisund kergesti kÀttesaadavaks

Rakenduse juhtimiseks tootmisreĆŸiimis on abiks selle vĂ”ime teavitada kogu sĂŒsteemi oma seisundist. Kas rakendus on töös? Kas see on korras? Kas see on valmis liiklust vastu vĂ”tma? Kuidas see kĂ€itub? Üks levinumaid viise selle probleemiga tegelemiseks on tervisekontrollide rakendamine (health checks). Kubernetesel on nende kahe tĂŒĂŒbi kontrollid: elulisuse ja valmisoleku kontrollid.

Elulisuse kontrolli puhul rakendus peab olema varustatud HTTP lĂ”pp-punktiga, mis tagastab vastuse "200 OK", kui see toimib ja selle pĂ”h sĂ”ltuvused on rahuldatud. Valmisoleku kontrolli puhul rakendus peab omama HTTP lĂ”ppu, mis tagastab vastuse „200 OK“, kui see töötab ja selle peamised sĂ”ltuvused on rahuldatud. Valmiduse kontrollimiseks (valmiduse kontrollimine) rakendus peab omama teistsugust HTTP lĂ”pp-punkti, mis tagastab vastuse „200 OK”, kui rakendus on heas seisundis, algatamisprotsessid on lĂ”petatud ja mis tahes korrektne pĂ€ring ei pĂ”hjusta viga. Kubernetes suunab liikluse konteinerisse ainult rakenduse valmiduse olemasolul nende kontrollide kohaselt. Kaks lĂ”pp-punkti vĂ”ivad olla ĂŒhendatud, kui elujĂ”udluse (liveness) ja valmiduse (readiness) seisundite vahel ei ole erinevust.

Lisaks sellele saab lugeda vastavast artiklist, mille on kirjutanud Sandeep Dinesh, Google'i arendaja esindaja: „Kubernetesi parimad tavad: tervisekontrollide seadistamine valmiduse ja elujĂ”udluse uuringutega».

7. Valige hoolikalt pildi versioon

Enamik avalikke ja privaate pilte kasutavad sildistamissĂŒsteemi, mis sarnaneb kirjeldatule Parimad tavad konteinerite loomisel. Kui pilt rakendab sĂŒsteemi, mis on lĂ€hedane semantilisest versioonimisest, tuleb arvesse vĂ”tta sildistamise eripĂ€ra. NĂ€iteks vĂ”ib silt latest tihti ĂŒle liikuda ĂŒhest pildist teise — sellele ei saa toetuda, kui vajate prognoositavaid ja korduvaid kogusid ja installatsioone.

VĂ”ite kasutada silti X.Y.Z (need on peaaegu alati muutumatud), kuid sellisel juhul jĂ€lgige kĂ”iki plaastrite ja uuenduste jaoks, mis on seotud pildiga. Kui kasutataval pildil on silt X.Y, on see hea kullasĂŒstem. Selle valimisel saad automaatselt plaastrid ja toetud samas rakenduse stabiilsele versioonile.

P.S. tÔlkija mÀrkused

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster