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 «». 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?

(Kubernetes'i pĂ”hjal loodud teenus konteineriseeritud rakenduste kĂ€itamiseks Google Cloud'is â kommentaar tĂ”lkijalt.) â ĂŒks parimaid viise skaleeritavate töökoormuste kĂ€itamiseks. 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 ning pöörata tĂ€helepanu meie 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 . (MĂ€rk. tĂ”lge.: Kui kasutate oma Kubernetes'i installatsiooni, soovitame vaadata meie Open Source lahendust â .) Ă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 . 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: , , , vĂ”i teised hallatavad andmebaasid. (MĂ€rk. tĂ”lge.: Lisainfot leiate ka meie artiklist â».)
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 â ja . Neid on vĂ”imalik uuendada ilma, et oleks vajalik uut konteinerit kokku panna. Lihtsaks piltide koostamise voogude loomiseks vĂ”ib kasutada . (MĂ€rk. tĂ”lge.: Me kasutame nende eesmĂ€rkide jaoks Open Source tööriista .)

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 Kubernetesis. Kui on vaja muuta sysctls, Kubernetesel on selle jaoks. Ăldiselt proovige vĂ”imalikult palju kasutada ja sidecar-konteinereid sarnaste privileegitud toimingute tegemiseks. Need ei vaja juurdepÀÀsu ei sise- ega vĂ€list liiklust.
Kui te haldate klastrit, saate kasutada 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 .
5. Tee rakendus jÀlgimiseks lihtsaks
Nagu logimine, on ka jĂ€lgimine lahutamatu osa rakenduse haldamisest. Populaarne lahendus Kubernetes kogukonnas jĂ€lgimiseks on â sĂŒsteem, mis tuvastab automaatselt podid ja teenused, mis vajavad jĂ€lgimist. (MĂ€rk. tĂ”lge.: Vaata ka meie monitoorimise teemal Prometheuse ja Kubernetesega.) suudab jĂ€lgida Kubernetes klastreid ja sisaldab oma versiooni Prometheusest rakenduste jĂ€lgimiseks.

Kubernetesi juhtpaneel Stackdriveris
Prometheus eeldab, et rakendus edastab mÔÔdikud HTTP lÔpp-punkti. Selleks on saadaval . Sarnast formaati kasutavad ka teised tööriistad, nagu ja .
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 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: â».
7. Valige hoolikalt pildi versioon
Enamik avalikke ja privaate pilte kasutavad sildistamissĂŒsteemi, mis sarnaneb kirjeldatule . Kui pilt rakendab sĂŒsteemi, mis on lĂ€hedane , 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:
- «»;
- «»;
- «»;
- «» (ĂŒlevaade ja video ettekandest);
- «» (ĂŒlevaade ja video ettekandest);
- «» (ĂŒlevaade ja video ettekandest);
- «» (ĂŒlevaade ja video ettekandest);
- «».
Allikas: habr.com
