{"id":39016,"date":"2019-10-31T22:27:21","date_gmt":"2019-10-31T19:27:21","guid":{"rendered":"https:\/\/prohoster.info\/blog\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google\/"},"modified":"2019-10-31T22:27:21","modified_gmt":"2019-10-31T19:27:21","slug":"7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google","title":{"rendered":"7 najboljih praksi za upravljanje kontejnerima prema Googleu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Napomena za prijevod.<\/b>: Autor originalnog \u010dlanka je Th\u00e9o Chamley, arhitekt cloud rje\u0161enja u Googleu. U ovom blog postu Google Clouda predstavio je sa\u017eetak detaljnog priru\u010dnika njegove tvrtke pod nazivom \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/best-practices-for-operating-containers\">Najbolje prakse za upravljanje kontejnerima<\/a><\/noindex>\u201c. U njemu su stru\u010dnjaci Googlea prikupili najbolje prakse za upravljanje kontejnerima u kontekstu kori\u0161tenja Google Kubernetes Engine i ne samo toga, obuhva\u0107aju\u0107i \u0161irok spektar tema: od sigurnosti do nadzora i logiranja. Dakle, koje su prakse u radu s kontejnerima najva\u017enije prema Googleu?<\/i><\/p>\n<p><img decoding=\"async\" alt=\"7 najboljih praksi za upravljanje kontejnerima prema Googleu\" src=\"\/wp-content\/uploads\/2019\/10\/43aaa13a0fae1564ffc7f0a1fe0020b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/\">Kubernetes Engine<\/a><\/noindex> <i>(usluga temelji se na Kubernetesu za pokretanje kontejneriziranih aplikacija u Google Cloud \u2014 <b>napomena prev.<\/b>)<\/i> \u2014 jedan je od najboljih na\u010dina za pokretanje radnih optere\u0107enja koja zahtijevaju skalabilnost. <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes\/\">Kubernetes<\/a><\/noindex> osigurat \u0107e besprijekorno funkcioniranje ve\u0107ine aplikacija kada su kontejnerizirane. No, ako \u017eelite da aplikacijom bude lako upravljati i \u017eelite iskoristiti sve prednosti Kubernetesa, potrebno je slijediti najbolje prakse. One \u0107e pojednostaviti upravljanje aplikacijom, njezin nadzor i dijagnostiku, a tako\u0111er \u0107e pove\u0107ati sigurnost.<\/p>\n<p>U ovom \u010dlanku pro\u0107i \u0107emo kroz popis onoga \u0161to trebate znati i raditi za u\u010dinkovito funkcioniranje kontejnera u Kubernetesu. Onima koji \u017eele dublje roni\u00adti u detalje preporu\u010dujemo da pro\u010ditaju materijal <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/best-practices-for-operating-containers\">Najbolje prakse za upravljanje kontejnerima<\/a><\/noindex>, a tako\u0111er obratite pozornost na na\u0161 <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/blog\/products\/gcp\/7-best-practices-for-building-containers\">raniji post<\/a><\/noindex> o sastavljanju kontejnera.<\/p>\n<h2>1. Koristite izvorne mehanizme kontejnera za logiranje<\/h2>\n<p>\nAko je aplikacija pokrenuta u Kubernetes klasteru, ne treba vam mnogo za logove. Centralizirani sustav logiranja vjerojatno je ve\u0107 integriran u kori\u0161teni klaster. U slu\u010daju kori\u0161tenja Kubernetes Engine-a, za to je odgovoran <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/logging\/\">Stackdriver Logging<\/a><\/noindex>. <i>(<b>Napomena za prijevod.<\/b>: A u slu\u010daju kori\u0161tenja vlastite instalacije Kubernetesa, preporu\u010dujemo da razmotrite na\u0161e Open Source rje\u0161enje \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/loghouse\">loghouse<\/a><\/noindex>.)<\/i> Ne komplicirajte si \u017eivot i koristite izvorne mehanizme logiranja kontejnera. Pi\u0161ite logove u stdout i stderr \u2014 oni \u0107e automatski biti prikupljeni, pohranjeni i indeksirani.<\/p>\n<p>Ako \u017eelite, mo\u017eete tako\u0111er pisati logove u <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/logging\/docs\/structured-logging\">JSON formatu<\/a><\/noindex>. Ovaj pristup omogu\u0107uje jednostavno dodavanje metapodataka. A zajedno s njima, u Stackdriver Loggingu bit \u0107e mogu\u0107a pretraga logova koriste\u0107i te metapodatke.<\/p>\n<h2>2. Osigurajte da su kontejneri stateless i immutable<\/h2>\n<p>\nZa ispravno funkcioniranje kontejnera u Kubernetes klasteru, oni moraju biti stateless i immutable. Kada su ti uvjeti ispunjeni, Kubernetes mo\u017ee obavljati svoj posao stvaraju\u0107i i uni\u0161tavaju\u0107i entitete aplikacije kada i gdje je to potrebno.<\/p>\n<p><i>Stateless<\/i> zna\u010di da se bilo kakvo stanje (trajni podaci bilo koje vrste) pohranjuju izvan kontejnera. Za to, ovisno o potrebama, mogu se koristiti razli\u010dite vrste vanjskih pohrana: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/storage\/docs\">Cloud Storage<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/stateful-apps\">Persistent Disks<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/memorystore\/docs\/redis\/\">Redis<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/sql\/docs\/\">Cloud SQL<\/a><\/noindex> ili druge upravljane baze podataka. <i>(<b>Napomena za prijevod.<\/b>: Vi\u0161e o tome mo\u017eete pro\u010ditati i u na\u0161em \u010dlanku \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/326414\/\">Operatori za Kubernetes: kako pokretati stateful aplikacije<\/a><\/noindex>\u00bb.)<\/i><\/p>\n<p><i>Immutable<\/i> zna\u010di da se kontejner ne\u0107e modificirati tijekom svog \u017eivota: nikakva a\u017euriranja, zakrpe, promjene u konfiguraciji. Ako trebate a\u017eurirati kod aplikacije ili primijeniti zakrpu, izradite novu sliku i implementirajte je. Preporu\u010duje se prebacivanje konfiguracije kontejnera (port za slu\u0161anje, opcije izvr\u0161nog okru\u017eenja itd.) izvan - u <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/\">Secrets<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-pod-configmap\/\">ConfigMaps<\/a><\/noindex>. Njih je mogu\u0107e a\u017eurirati bez potrebe za izradom nove slike kontejnera. Za jednostavno kreiranje pipelinea za izradu slika mo\u017ee se koristiti <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Cloud Build<\/a><\/noindex>. <i>(<b>Napomena za prijevod.<\/b>: Za te svrhe koristimo Open Source alat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/dapp\">dapp<\/a><\/noindex>.)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"7 najboljih praksi za upravljanje kontejnerima prema Googleu\" src=\"\/wp-content\/uploads\/2019\/10\/f13a83d22e7b8d7c1e8ac6a63c35646c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Primjer a\u017euriranja konfiguracije Deployment-a u Kubernetesu pomo\u0107u ConfigMap-a, montiranog u podove kao konfiguraciju<\/i><\/p>\n<h2>3. Izbjegavajte privilegirane kontejnere<\/h2>\n<p>\nSigurno ne pokre\u0107ete aplikacije pod root korisnikom na svojim poslu\u017eiteljima, zar ne? Ako napada\u010d uspije prodrijeti u aplikaciju, dobit \u0107e pristup s root pravima. Ista razmatranja vrijede i za ne pokretanje privilegiranih kontejnera. Ako je potrebno promijeniti postavke na hostu, mo\u017eete dodijeliti kontejneru konkretne <i>capabilities<\/i> putem opcije <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/security-context\/#set-capabilities-for-a-container\"><code>securityContext<\/code><\/a><\/noindex> u Kubernetesu. Ako je potrebna izmjena <i>sysctls<\/i>, Kubernetes ima <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/sysctl-cluster\/\">odvojenu anotaciju<\/a><\/noindex> za to. Uglavnom, nastojte maksimalno koristiti <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/init-containers\/\">init-<\/a><\/noindex> i sidecar kontejnerske operacije za obavljanje sli\u010dnih privilegiranih operacija. Oni ne zahtijevaju dostupnost ni za unutarnji ni za vanjski promet.<\/p>\n<p>Ako administrirate klaster, mo\u017eete iskoristiti <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/#privileged\">Pod Security Policy<\/a><\/noindex> za ograni\u010denja u primjeni privilegiranih kontejnera.<\/p>\n<h2>4. Izbjegavajte pokretanje pod root<\/h2>\n<p>\nO privilegiranima kontejnerima ve\u0107 je re\u010deno, ali bit \u0107e jo\u0161 bolje ako pored toga ne pokre\u0107ete aplikacije pod root korisnikom unutar kontejnera. Ako napada\u010d prona\u0111e udaljenu ranjivost u aplikaciji s root pravima koja omogu\u0107ava izvr\u0161avanje koda, a zatim mo\u017ee napustiti granice kontejnera putem do sada nepoznate ranjivosti, dobit \u0107e root pristup na hostu.<\/p>\n<p>Najbolji na\u010din da to izbjegnete je da prvo ne pokre\u0107ete ni\u0161ta pod root korisnikom. Za to mo\u017eete koristiti direktivu <code>USER<\/code> u <code>Dockerfile<\/code> ili <code>runAsUser<\/code> u Kubernetesu. Administrator klastera tako\u0111er mo\u017ee postaviti obavezno pona\u0161anje pomo\u0107u <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/how-to\/pod-security-policies\">Pod Security Policy<\/a><\/noindex>.<\/p>\n<h2>5. U\u010dinite aplikaciju jednostavnom za pra\u0107enje<\/h2>\n<p>\nKao i logiranje, pra\u0107enje je neizostavni dio upravljanja aplikacijom. Popularno rje\u0161enje za pra\u0107enje u Kubernetes zajednici je <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex> \u2014 sustav koji automatski otkriva podove i servise koji trebaju pra\u0107enje. <i>(<b>Napomena za prijevod.<\/b>: Poglejte na\u0161 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">detaljni izvje\u0161taj<\/a><\/noindex> o pra\u0107enju s Prometheusom i Kubernetesom.)<\/i> <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/monitoring\/kubernetes-engine\/\">Stackdriver<\/a><\/noindex> mo\u017ee pratiti Kubernetes klastere i uklju\u010duje svoju verziju Prometheusa za pra\u0107enje aplikacija.<\/p>\n<p><img decoding=\"async\" alt=\"7 najboljih praksi za upravljanje kontejnerima prema Googleu\" src=\"\/wp-content\/uploads\/2019\/10\/642b9ccc4b7a789018a4aeeb62e7cae7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes nadzorna plo\u010da u Stackdriveru<\/i><\/p>\n<p>O\u010dekuje se da aplikacija izlo\u017ei metrike na HTTP endpointu. Za to su dostupne <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/docs\/instrumenting\/clientlibs\/\">Prometheus klijentske biblioteke<\/a><\/noindex>. Isti format koriste i drugi alati poput <noindex><a rel=\"nofollow\" href=\"http:\/\/opencensus.io\/\">OpenCensus<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/\">Istio<\/a><\/noindex>.<\/p>\n<h2>6. U\u010dinite stanje aplikacije dostupnim<\/h2>\n<p>\nUpravljanje aplikacijom u produkciji poma\u017ee njezina sposobnost da izvje\u0161tava o svom stanju cijelom sustavu. Je li aplikacija pokrenuta? Je li sve u redu? Spremna je za primanje prometa? Kako se pona\u0161a? Naj\u010de\u0161\u0107i na\u010din rje\u0161avanja ovog problema je implementacija provjera zdravlja <i>(health checks)<\/i>. U Kubernetesu postoje dva njihova tipa: <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-probes\/\">liveness i readiness probes<\/a><\/noindex>.<\/p>\n<p>Za liveness probe <i>(provjera \u017eivotne sposobnosti)<\/i> aplikacija mora imati HTTP endpoint koji vra\u0107a odgovor \u00ab200 OK\u00bb, ako funkcioni\u0161e i ako su njegove klju\u010dne zavisnosti zadovoljene. Za readiness probe <i>(provjera spremnosti za uslugu)<\/i> aplikacija bi trebala imati drugi HTTP endpoint koji vra\u0107a odgovor \u201e200 OK\u201d, ako je aplikacija u zdravom stanju, koraci inicijalizacije su izvr\u0161eni i svaki ispravni zahtjev ne dovodi do gre\u0161ke. Kubernetes \u0107e usmjeravati promet prema kontejneru samo ako je aplikacija spremna u skladu s tim provjerama. Dva endpointa mogu se spojiti ako izme\u0111u stanja odr\u017eivosti (liveness) i spremnosti (readiness) nema razlike.<\/p>\n<p>Vi\u0161e o tome mo\u017eete pro\u010ditati u odgovaraju\u0107em \u010dlanku Sandeepa Dinesha, razvojnog advokata iz Googlea: \"<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/blog\/products\/gcp\/kubernetes-best-practices-setting-up-health-checks-with-readiness-and-liveness-probes\">Kubernetes najbolje prakse: Postavljanje provjera zdravstvenog stanja s provjerama spremnosti i odr\u017eivosti<\/a><\/noindex>\u00bb.<\/p>\n<h2>7. Pa\u017eljivo birajte verziju slike<\/h2>\n<p>\nVe\u0107ina javnih i privatnih slika koristi sustav ozna\u010davanja koji nalikuje onome opisanom u <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/best-practices-for-building-containers#properly_tag_your_images\">Najbolje prakse za izgradnju kontejnera<\/a><\/noindex>. Ako slika primjenjuje sustav koji je blizak <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\/lang\/ru\/\">semanti\u010dkom verzioniranju<\/a><\/noindex>, potrebno je razmotriti specifi\u010dnosti ozna\u010davanja. Na primjer, oznaka <code>najnovije<\/code> mo\u017ee se \u010desto premje\u0161tati s slike na sliku \u2014 na nju se ne mo\u017ee osloniti ako su vam potrebne predvidive i ponovljive gra\u0111e i instalacije.<\/p>\n<p>Mo\u017eete koristiti oznaku <code>X.Y.Z<\/code> (ona je gotovo uvijek nepromijenjena), no u tom slu\u010daju pratite sve ispravke i a\u017euriranja slike. Ako odabrana slika ima oznaku <code>X.Y<\/code>, to je dobra opcija zlatne sredine. Odabirom nje automatski dobivate ispravke dok se oslanjate na stabilnu verziju aplikacije.<\/p>\n<h2>P.S. od prevodioca<\/h2>\n<p>\nPro\u010ditajte i na na\u0161em blogu:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/422949\/\">Nova statistika CNCF o kontejnerima, cloud native i Kubernetesu<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/353272\/\">7 principa dizajniranja aplikacija temeljenih na kontejnerima<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/417905\/\">11 na\u010dina (ne)da postanete \u017ertva hakiranja u Kubernetesu<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">Na\u0161e iskustvo s Kubernetesom u manjim projektima<\/a><\/noindex>\u00bb <i>(pregled i video prezentacija)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Pra\u0107enje i Kubernetes<\/a><\/noindex>\u00bb <i>(pregled i video prezentacija)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">Prikupite Docker slike za CI\/CD brzo i lako s dapp-om<\/a><\/noindex>\u00bb <i>(pregled i video prezentacija)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/322686\/\">Prakse neprekidnog isporu\u010divanja s Dockerom<\/a><\/noindex>\u00bb <i>(pregled i video prezentacija)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/347518\/\">Smrt mikroservisnog ludila 2018. godine<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/425085\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 Th\u00e9o Chamley, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 Google. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 Google Cloud \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0438\u0437 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u00abBest Practices for Operating Containers\u00bb. \u0412 \u043d\u0451\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b Google \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Google Kubernetes Engine \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e, \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29273,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 Th\u00e9o Chamley, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 Google.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd477 \u043b\u0443\u0447\u0448\u0438\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 Google | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 Th\u00e9o Chamley, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 Google.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd477 najboljih praksi za kori\u0161tenje kontejnera prema Googleu | ProHoster","description":"Napomena: Autor izvornog \u010dlanka \u2014 Th\u00e9o Chamley, arhitekt cloud rje\u0161enja u Googleu.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd477 \u043b\u0443\u0447\u0448\u0438\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 Google | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 Th\u00e9o Chamley, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 Google.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/7-luchshih-praktik-po-ekspluatatsii-kontejnerov-po-versii-google","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:21+00:00","article:modified_time":"2019-10-31T19:27:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39016","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:24:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:58:39","updated":"2026-01-24 00:24:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/39016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=39016"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/39016\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/29273"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=39016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=39016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=39016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}