ProHoster > Blog > uprava > 7 najboljih praksi za korištenje spremnika prema Googleu
7 najboljih praksi za korištenje spremnika prema Googleu
Bilješka. prev.: Autor originalnog članka je Théo Chamley, Google Cloud Solutions Architect. U ovom postu za blog Google Cloud daje sažetak detaljnijeg vodiča svoje tvrtke pod nazivom "Najbolje prakse za rad kontejnera" U njemu su Googleovi stručnjaci prikupili najbolju praksu za rad spremnika u kontekstu korištenja Google Kubernetes Enginea i više, dotičući se širokog raspona tema: od sigurnosti do nadzora i zapisivanja. Dakle, koje su najvažnije prakse spremnika prema Googleu?
Kubernetes Engine(Usluga temeljena na Kubernetesu za pokretanje kontejnerskih aplikacija na Google Cloudu - cca. prijevod) je jedan od najboljih načina za pokretanje radnih opterećenja koja se moraju skalirati. Kubernetes će osigurati besprijekoran rad većine aplikacija ako su spremnici. Ali ako želite da vašom aplikacijom bude lako upravljati i želite u potpunosti iskoristiti prednosti Kubernetesa, morate slijediti najbolju praksu. Oni će pojednostaviti rad aplikacije, njeno praćenje i otklanjanje pogrešaka, a također će povećati sigurnost.
U ovom ćemo članku proći kroz popis stvari koje biste trebali znati i učiniti za učinkovito pokretanje spremnika na Kubernetesu. Oni koji žele ići dublje u detalje trebaju pročitati materijal Najbolje prakse za rad kontejnera, a također obratite pozornost na naše raniji post o sastavljanju kontejnera.
Ako se aplikacija izvodi na Kubernetes klasteru, nije potrebno puno za zapisnike. Centralizirani sustav zapisivanja vjerojatno je već ugrađen u klaster koji koristite. U slučaju korištenja Kubernetes Enginea, ovo je odgovorno Stackdriver bilježenje. (Bilješka. prev.: A ako koristite vlastitu Kubernetes instalaciju, preporučujemo da pobliže pogledate naše rješenje otvorenog koda - brvnara.) Neka vam život bude jednostavan i koristite izvorne mehanizme za bilježenje spremnika. Pišite zapise u stdout i stderr - automatski će biti primljeni, spremljeni i indeksirani.
Ako želite, također možete pisati zapise na JSON format. Ovaj pristup će olakšati dodavanje metapodataka u njih. A s njima će Stackdriver Logging imati mogućnost pretraživanja kroz zapise pomoću ovih metapodataka.
2. Provjerite jesu li spremnici bez stanja i nepromjenjivi
Da bi spremnici ispravno funkcionirali u Kubernetes klasteru, moraju biti bez stanja i nepromjenjivi. Nakon što su ovi uvjeti ispunjeni, Kubernetes može raditi svoj posao, stvarajući i uništavajući entitete aplikacije kada i gdje je to potrebno.
nepromjenljiv znači da se spremnik neće mijenjati tijekom svog životnog vijeka: nema ažuriranja, zakrpa, promjena konfiguracije. Ako trebate ažurirati kod aplikacije ili primijeniti zakrpu, izradite novu sliku i implementirajte je. Preporuča se premjestiti konfiguraciju spremnika (priključak za slušanje, opcije okruženja za vrijeme izvođenja, itd.) eksterno - na Tajne и ConfigMaps. Mogu se ažurirati bez potrebe za izradom nove slike spremnika. Za jednostavno stvaranje cjevovoda sa sklopom slike, možete koristiti Cloud Build. (Bilješka. prev.: U te svrhe koristimo alat otvorenog koda dapp.)
Primjer ažuriranja konfiguracije implementacije u Kubernetesu pomoću ConfigMapa montiranog u podove kao konfiguraciju
3. Izbjegavajte privilegirane spremnike
Vi ne pokrećete aplikacije kao root na svojim poslužiteljima, zar ne? Ako napadač uđe u aplikaciju, dobit će root pristup. Ista razmatranja vrijede za nepokretanje privilegiranih spremnika. Ako trebate promijeniti postavke na hostu, možete dati poseban spremnik sposobnosti koristeći opciju securityContext u Kubernetesu. Ako se trebate promijeniti sysctls, Kubernetes ima zaseban sažetak za ovo. Općenito, pokušajte maksimalno iskoristiti u tome- i bočne prikolice za obavljanje sličnih povlaštenih operacija. Ne moraju biti dostupni niti unutarnjem niti vanjskom prometu.
Ako upravljate klasterom, možete koristiti Pod sigurnosna politika za ograničenja korištenja povlaštenih spremnika.
4. Izbjegavajte pokretanje kao root
O privilegiranim spremnicima već je bilo riječi, no bit će još bolje ako, uz to, ne pokrećete aplikacije unutar spremnika kao root. Ako napadač pronađe udaljenu ranjivost u aplikaciji s root pravima koja dopušta izvršavanje koda, nakon čega može napustiti spremnik kroz još nepoznatu ranjivost, dobit će root na hostu.
Najbolji način da to izbjegnete je da ništa ne pokrenete kao root. Da biste to učinili, možete koristiti direktivu USER в Dockerfile ili runAsUser u Kubernetesu. Administrator klastera također može konfigurirati ponašanje provedbe pomoću Pod sigurnosna politika.
5. Neka aplikacija bude laka za praćenje
Poput zapisivanja, nadzor je sastavni dio upravljanja aplikacijama. Popularno rješenje za praćenje u Kubernetes zajednici je Prometej - sustav koji automatski detektira podove i usluge koje zahtijevaju nadzor. (Bilješka. prev.: Vidi također naš detaljan izvještaj na temu nadzora pomoću Prometheusa i Kubernetesa.)Stackdriver sposoban je nadzirati Kubernetes klastere i uključuje vlastitu verziju Prometheusa za nadgledanje aplikacija.
6. Učinite zdravstveni status aplikacije dostupnim
Upravljanje aplikacijom u proizvodnji potpomognuto je njezinom sposobnošću da priopći svoje stanje cijelom sustavu. Je li aplikacija pokrenuta? Uredu je? Jeste li spremni primiti promet? Kako se on ponaša? Najčešći način rješavanja ovog problema je provođenje zdravstvenih pregleda (zdravstveni pregledi). Kubernetes ima dvije vrste: sonde živosti i spremnosti.
Za sondu živosti (provjere vitalnosti) aplikacija mora imati HTTP krajnju točku koja vraća odgovor "200 OK" ako je funkcionalna i njezine osnovne ovisnosti su zadovoljene. Za sondu spremnosti (provjere spremnosti servisa) aplikacija mora imati drugu krajnju točku HTTP-a koja vraća odgovor "200 OK" ako je aplikacija u ispravnom stanju, koraci inicijalizacije su dovršeni i bilo koji važeći zahtjev ne rezultira pogreškom. Kubernetes će samo usmjeravati promet u spremnik ako je aplikacija spremna prema ovim provjerama. Dvije krajnje točke mogu se spojiti ako nema razlike između stanja živosti i spremnosti.
Većina javnih i privatnih slika koristi sustav označavanja sličan onom opisanom u Najbolji primjeri iz prakse za izgradnju spremnika. Ako slika koristi sustav blizak semantička verzija, potrebno je voditi računa o specifičnostima označavanja. Na primjer, oznaka latest može često prelaziti sa slike na sliku - ne možete se pouzdati ako trebate predvidljive i ponovljive gradnje i instalacije.
Možete koristiti oznaku X.Y.Z (gotovo su uvijek nepromijenjeni), ali u ovom slučaju pratite sve zakrpe i ažuriranja slike. Ako slika koju koristite ima oznaku X.Y, ovo je dobra opcija za zlatnu sredinu. Odabirom iste automatski dobivate zakrpe, a istovremeno se oslanjate na stabilnu verziju aplikacije.