{"id":81173,"date":"2020-05-11T13:42:51","date_gmt":"2020-05-11T11:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/production-ready-images-for-k8s"},"modified":"2020-05-11T13:42:51","modified_gmt":"2020-05-11T11:42:51","slug":"production-ready-images-for-k8s","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/production-ready-images-for-k8s","title":{"rendered":"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kjo \u00ebsht\u00eb nj\u00eb histori se si ne p\u00ebrdorim kontejner\u00ebt n\u00eb nj\u00eb mjedis produktiv, ve\u00e7an\u00ebrisht n\u00ebn Kubernetes. Artikulli i dedikohet mbledhjes s\u00eb metrikave dhe log-eve nga kontejner\u00ebt, si dhe nd\u00ebrtimit t\u00eb imazheve.<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/c7e8df02d845138e489c09c55cd616e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNe jemi nga kompania fintech Exness, e cila merret me zhvillimin e sh\u00ebrbimeve p\u00ebr tregtimin online dhe produkte fintech p\u00ebr B2B dhe B2C. N\u00eb R&amp;D ton\u00eb ka shum\u00eb ekipe t\u00eb ndryshme, n\u00eb departamentin e zhvillimit punojn\u00eb mbi 100 punonj\u00ebs.<\/p>\n<p>Ne paraqesim ekipin q\u00eb \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr platform\u00ebn e mbledhjes dhe ekzekutimit t\u00eb kodit nga zhvilluesit tan\u00eb. Sidomos, ne jemi p\u00ebrgjegj\u00ebs p\u00ebr mbledhjen, ruajtjen dhe ofrimin e metrikave, log-eve dhe ngjarjeve nga aplikacionet. Aktualisht operojm\u00eb me rreth tri mij\u00eb konteiner\u00eb Docker n\u00eb mjedisin produktiv, mbajm\u00eb nj\u00eb depo big data prej 50 TB dhe ofrojm\u00eb zgjidhje arkitekturore q\u00eb ndodhen rreth infrastruktur\u00ebs son\u00eb: Kubernetes, Rancher dhe ofrues t\u00eb ndrysh\u00ebm cloud publik.\u00a0<\/p>\n<h1>Motivimi yn\u00eb<\/h1>\n<p>\n\u00c7far\u00eb digjet? Askush nuk mund t\u00eb p\u00ebrgjigjet. Ku \u00ebsht\u00eb zjarri? E nd\u00ebrlikuar p\u00ebr t'u kuptuar. Kur shp\u00ebrtheu? Mund t\u00eb zbulohet, por jo menj\u00ebher\u00eb.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/3ca2271caf1d02ba14937680cd89d65d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPse disa kontejner\u00eb shkojn\u00eb, nd\u00ebrsa t\u00eb tjer\u00eb bien? Cili kontejner e shkaktoi at\u00eb? Sepse nga jasht\u00eb kontejner\u00ebt duken t\u00eb nj\u00ebjt\u00eb, por brenda secili ka Neo-n e vet.<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/f971583f21e363244f9ea754da2a1f4c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZhvilluesit tan\u00eb jan\u00eb ekspert\u00eb t\u00eb mir\u00eb. Ata krijojn\u00eb sh\u00ebrbime t\u00eb mira q\u00eb sjellin fitime p\u00ebr kompanin\u00eb. Por ndodhin d\u00ebshtime, ku kontejner\u00ebt me aplikacione shkojn\u00eb n\u00eb kaos. Nj\u00eb kontejner konsumon shum\u00eb CPU, nj\u00eb tjet\u00ebr rrjet, nj\u00eb i tret\u00eb opsione hyrje-dalje, nd\u00ebrsa nj\u00eb i kat\u00ebrt nuk e dim\u00eb se \u00e7't\u00eb b\u00ebj\u00eb me socket-at. T\u00eb gjitha k\u00ebto bien dhe anija fundoset.\u00a0<\/p>\n<h1>Agjent\u00ebt<\/h1>\n<p>\nP\u00ebr t\u00eb kuptuar se \u00e7far\u00eb po ndodh brenda, ne vendos\u00ebm t\u00eb instalojm\u00eb agjent\u00eb direkt n\u00eb kontejner\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/cc9eb47d1250bb866ec9452181479df4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebta agjent\u00eb jan\u00eb programe mb\u00ebshtet\u00ebse, q\u00eb mbajn\u00eb kontejner\u00ebt n\u00eb nj\u00eb gjendje t\u00eb till\u00eb q\u00eb nuk shkat\u00ebrrojn\u00eb nj\u00ebri-tjetrin. Agjent\u00ebt jan\u00eb standardizuar, dhe kjo lejon standardizimin e qasjes ndaj sh\u00ebrbimit t\u00eb kontejner\u00ebve.\u00a0<\/p>\n<p>N\u00eb rastin ton\u00eb, agjent\u00ebt duhet t\u00eb ofrojn\u00eb log-e n\u00eb nj\u00eb format standard, t\u00eb etiketuar dhe me tronditje. Gjithashtu, ata duhet t\u00eb na ofrojn\u00eb metrika t\u00eb standardizuara, t\u00eb zgjeruara nga perspektiva e aplikacioneve t\u00eb biznesit.<\/p>\n<p>P\u00ebr agjent\u00ebt gjithashtu n\u00ebnkuptohen utilitetet p\u00ebr eksploatimin dhe sh\u00ebrbimin, q\u00eb din\u00eb t\u00eb punojn\u00eb n\u00eb sisteme t\u00eb ndryshme orkestrimi, mb\u00ebshtesin imazhe t\u00eb ndryshme (Debian, Alpine, Centos, etj.).<\/p>\n<p>S\u00eb fundmi, agjent\u00ebt duhet t\u00eb mb\u00ebshtesin nj\u00eb CI\/CD t\u00eb thjesht\u00eb, q\u00eb p\u00ebrfshin skedar\u00eb Docker. P\u00ebrndryshe, anija do t\u00eb shkat\u00ebrrohet, sepse kontejner\u00ebt do t\u00eb fillojn\u00eb t\u00eb jepen n\u00eb 'shina' t\u00eb devijuar.<\/p>\n<h1>Procesi i nd\u00ebrtimit dhe struktura e imazhit t\u00eb synuar<\/h1>\n<p>\nP\u00ebr t\u00eb qen\u00eb gjith\u00e7ka e standardizuar dhe e menaxhueshme, \u00ebsht\u00eb e nevojshme t\u00eb ndiqet nj\u00eb proces standard nd\u00ebrtimi. Prandaj, ne vendos\u00ebm t\u00eb nd\u00ebrtojm\u00eb kontejner\u00ebt me kontejner\u00eb \u2014 nj\u00eb recursion e till\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/708715af05bf79ce1eb9c2a8ce2aeca6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebtu kontejner\u00ebt paraqiten si kontura t\u00eb ngjashme. Nj\u00ebher\u00ebsh, kemi vendosur t'i p\u00ebrfshijm\u00eb n\u00eb to distribucione, q\u00eb t\u00eb 'mos jet\u00eb jeta si nj\u00eb boronic\u00eb'. Pse \u00ebsht\u00eb b\u00ebr\u00eb kjo, ne do ta tregojm\u00eb m\u00eb posht\u00eb.<br \/>\n\u00a0<br \/>\nSi rezultat u soll nj\u00eb mjet nd\u00ebrtimi \u2014 nj\u00eb kontejner me nj\u00eb version t\u00eb caktuar, q\u00eb lidhet me versione t\u00eb caktuara t\u00eb distribucioneve dhe versione t\u00eb caktuara t\u00eb skripteve.<\/p>\n<p>Si e p\u00ebrdorim ne? Kemi Docker Hub, ku ndodhet kontejneri. Ne e pasqyrojm\u00eb at\u00eb brenda sistemit ton\u00eb, p\u00ebr t\u00eb eliminuar var\u00ebsit\u00eb e jashtme. K\u00ebshtu krijohet nj\u00eb kontejner i etiketuar me ngjyr\u00eb t\u00eb verdh\u00eb. Ne krijojm\u00eb nj\u00eb model, p\u00ebr t\u00eb instaluar n\u00eb kontejner t\u00eb gjitha distribucionet dhe skriptet q\u00eb na nevojiten. Pas k\u00ebsaj, nd\u00ebrtojm\u00eb nj\u00eb imazh t\u00eb gatsh\u00ebm p\u00ebr eksploatim: zhvilluesit vendosin n\u00eb t\u00eb kodin dhe disa var\u00ebsi t\u00eb ve\u00e7anta.\u00a0<\/p>\n<p>\u00c7far\u00eb \u00ebsht\u00eb e mira e k\u00ebtij qasje?\u00a0<\/p>\n<ul>\n<li>S\u00eb pari, kontrolli i plot\u00eb i versioneve t\u00eb mjeteve t\u00eb nd\u00ebrtimit \u2013 kontejneri i nd\u00ebrtimit, versionet e skripteve dhe distribucioneve.\u00a0<\/li>\n<li>S\u00eb dyti, arrit\u00ebm standardizim: krijojm\u00eb modele, imazhe t\u00eb nd\u00ebrmjetme dhe t\u00eb gatshme p\u00ebr eksploatim n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb nj\u00ebjt\u00eb.\u00a0<\/li>\n<li>S\u00eb treti, kontejner\u00ebt na japin portabilitet. Sot p\u00ebrdorim Gitlab, nes\u00ebr kalojm\u00eb n\u00eb TeamCity ose Jenkins dhe po k\u00ebshtu do t\u00eb jemi n\u00eb gjendje t\u00eb ekzekutojm\u00eb kontejner\u00ebt tan\u00eb.\u00a0<\/li>\n<li>S\u00eb kat\u00ebrti, minimizimi i var\u00ebsive. Nuk \u00ebsht\u00eb rast\u00ebsi q\u00eb vendos\u00ebm distribucionet n\u00eb kontejner, sepse kjo na lejon q\u00eb t\u00eb mos i shkarkojm\u00eb ato \u00e7do her\u00eb nga Interneti.\u00a0<\/li>\n<li>S\u00eb pesti, \u00ebsht\u00eb rritur shpejt\u00ebsia e nd\u00ebrtimit \u2013 ekzistenca e kopjeve lokale t\u00eb imazheve na lejon t\u00eb mos humbasim koh\u00eb n\u00eb shkarkim, pasi kemi nj\u00eb imazh lokal.\u00a0<\/li>\n<\/ul>\n<p>\nMe fjal\u00eb t\u00eb tjera, kemi arritur nj\u00eb proces nd\u00ebrtimi t\u00eb kontrolluar dhe fleksib\u00ebl. Ne p\u00ebrdorim mjete t\u00eb nj\u00ebjta p\u00ebr nd\u00ebrtimin e \u00e7do kontejneri me versionim t\u00eb plot\u00eb.\u00a0<\/p>\n<h1>Si funksionon procedura jon\u00eb e nd\u00ebrtimit<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/22b9a8546005e289f79962188dbb0659.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNd\u00ebrtimi fillon me nj\u00eb komand\u00eb, procesi ekzekutohet n\u00eb imazhin (ndar\u00eb me t\u00eb kuqe). Zhvilluesi ka nj\u00eb skedar Docker (ndar\u00eb me t\u00eb verdh\u00eb), ne e gjenerojm\u00eb at\u00eb, duke z\u00ebvend\u00ebsuar variablat me vlera. Dhe gjat\u00eb rrug\u00ebs, shtojm\u00eb header'\u00ebt dhe footer'\u00ebt - k\u00ebta jan\u00eb agent\u00ebt tan\u00eb.\u00a0<\/p>\n<p>Header'i shton distribuimet nga imazhet p\u00ebrkat\u00ebse. Footer'i vendos brenda sh\u00ebrbimet tona, konfiguronte fillimin e ngarkes\u00ebs, regjistrimin dhe agjent\u00ebt e tjer\u00eb, z\u00ebvend\u00ebson entrypoint dhe t\u00eb tjer\u00eb.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/4004e57dc45771479e535921a839716d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNe menduam gjat\u00eb n\u00ebse t\u00eb vendosnim nj\u00eb supervizor. N\u00eb fund t\u00eb fundit, vendos\u00ebm se na duhej. Zgjedhim S6. Supervizori siguron menaxhimin e kontejnerit: lejon lidhjen me t\u00eb n\u00eb rast t\u00eb r\u00ebnies s\u00eb procesit kryesor dhe siguron menaxhim manual t\u00eb kontejnerit pa e rigjeneruar at\u00eb. Logjet dhe metrikat - k\u00ebto jan\u00eb procese q\u00eb ekzekutohen brenda kontejnerit. Duhet t\u00eb mbahen n\u00ebn kontroll, dhe ne e b\u00ebjm\u00eb k\u00ebt\u00eb me ndihm\u00ebn e supervizorit. Finalmente, S6 merr p\u00ebrsip\u00ebr ekzekutimin e housekeeping, trajtimin e sinjaleve dhe detyra t\u00eb tjera.<\/p>\n<p>Pasi q\u00eb kemi aplikime t\u00eb ndryshme t\u00eb orkestrimit, pas nd\u00ebrtimit dhe fillimit kontejneri duhet t\u00eb kuptoj\u00eb n\u00eb cil\u00ebn mjedis ndodhet dhe t\u00eb veproj\u00eb sipas situat\u00ebs. P\u00ebr shembull:<br \/>\nKjo na lejon t\u00eb ndjejm\u00eb nj\u00eb imazh t\u00eb vet\u00ebm dhe ta lan\u00e7ohem n\u00eb sisteme t\u00eb ndryshme orkestrimi, dhe nuk do t\u00eb ndodhemi n\u00eb rrethanat e specifikave t\u00eb k\u00ebtij sistemi orkestrimi.<\/p>\n<p>\u00a0<img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/6e76396afedbbf0e71d44a7fbb8521da.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebr t\u00eb nj\u00ebjtin kontejner, ne marrim pem\u00eb procesesh t\u00eb ndryshme n\u00eb Docker dhe Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/83f9d23876192930ffebafcdd549915e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNgarkesa ekzekutohet n\u00ebn supervizorin S6. Vini re collector dhe events - k\u00ebta jan\u00eb agjent\u00ebt tan\u00eb, p\u00ebrgjegj\u00ebs p\u00ebr logjet dhe metrikat. N\u00eb Kubernetes ata nuk jan\u00eb, nd\u00ebrsa n\u00eb Docker jan\u00eb. Pse?\u00a0<\/p>\n<p>N\u00ebse shikoni specifikimin e \"pod-it\" (k\u00ebtu dhe m\u00eb tej - Kubernetes pod), do t\u00eb shihni se kontenjere event ekzekutohet n\u00eb pod-in, ku ka nj\u00eb kontenier t\u00eb ve\u00e7ant\u00eb collector q\u00eb kryen funksionin e mbledhjes s\u00eb metrikave dhe logjeve. Mund t\u00eb p\u00ebrdorim mund\u00ebsit\u00eb e Kubernetes: startimin e kontejner\u00ebve n\u00eb nj\u00eb pod, n\u00eb hap\u00ebsira procesesh dhe\/ose rrjetesh t\u00eb vetme. N\u00eb thelb, keni mund\u00ebsi t\u00eb integroni agjent\u00ebt tuaj dhe t\u00eb kryeni disa funksione. Dhe n\u00ebse ky kontejner i nj\u00ebjt\u00eb lan\u00e7oohet n\u00eb Docker, do t\u00eb marr\u00eb t\u00eb nj\u00ebjtat mund\u00ebsi, duke qen\u00eb se agjent\u00ebt do t\u00eb lansohen brenda.\u00a0<\/p>\n<h1>Metrika dhe logje<\/h1>\n<p>\nTransporti i metrikave dhe logjeve \u00ebsht\u00eb nj\u00eb detyr\u00eb e nd\u00ebrlikuar. Zgjidhja e saj lidhet me disa aspekte.<br \/>\nInfrastruktura krijohet p\u00ebr t\u00eb ekzekutuar ngarkes\u00ebn e dobishme, jo p\u00ebr transportin masiv t\u00eb logjeve. Pra, ky proces duhet t\u00eb ekzekutohet me k\u00ebrkesa minimale p\u00ebr burimet e kontejner\u00ebve. Ne p\u00ebrpiqemi t'i ndihmojm\u00eb zhvilluesit tan\u00eb: \"Merrni kontejnerin nga Docker Hub, lan\u00e7oni, dhe ne mund t\u00eb d\u00ebrgojm\u00eb logjet.\"\u00a0<\/p>\n<p>Aspekti i dyt\u00eb - kufizimi i volumit t\u00eb logjeve. N\u00ebse disa kontejner\u00eb p\u00ebrballen me nj\u00eb situat\u00eb rritjeje t\u00eb volumit t\u00eb logjeve (aplikacioni n\u00eb cik\u00ebl nxjerr stack-trace), ngarkesa n\u00eb CPU, kanalet e komunikimit, sistemi i procesimit t\u00eb logjeve rritet, dhe kjo ndikon n\u00eb funksionimin e host-it si nj\u00eb e t\u00ebr\u00eb dhe kontejner\u00ebt e tjer\u00eb n\u00eb host, ndonj\u00ebher\u00eb kjo \u00e7on n\u00eb \"r\u00ebnien\" e host-it.\u00a0<\/p>\n<p>Aspekti i tret\u00eb - \u00ebsht\u00eb e nevojshme t\u00eb mb\u00ebshtetet nga kutia sa m\u00eb shum\u00eb metoda t\u00eb mundshme p\u00ebr mbledhjen e metrikave. Nga leximi i skedar\u00ebve dhe pyetja e endpoint-it Prometheus deri te p\u00ebrdorimi i protokolleve specifike t\u00eb aplikacionit.<\/p>\n<p>Dhe aspekti i fundit - nevojitet minimizimi i konsumit t\u00eb burimeve.<\/p>\n<p>Ne zgjodh\u00ebm nj\u00eb zgjidhje open-source n\u00eb Go t\u00eb quajtur Telegraf. Ky \u00ebsht\u00eb nj\u00eb lidh\u00ebs universale q\u00eb mb\u00ebshtet m\u00eb shum\u00eb se 140 lloje kanalesh hyr\u00ebse (input plugins) dhe 30 lloje dal\u00ebse (output plugins). Ne e p\u00ebrmir\u00ebsuam dhe tani do t\u2019ju tregojm\u00eb se si p\u00ebrdoret nga ne n\u00eb shembullin e Kubernetes.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/9635d571c852e5f9358458874c58d7b0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSupozoni se zhvilluesi implementon ngarkes\u00ebn, dhe Kubernetes merr nj\u00eb k\u00ebrkes\u00eb p\u00ebr krijimin e nj\u00eb pod-i. N\u00eb k\u00ebt\u00eb moment, p\u00ebr \u00e7do pod automatizohen nj\u00eb kontejner i titulluar Collector (ne p\u00ebrdorim mutation webhook). Collector - \u00ebsht\u00eb agjenti yn\u00eb. N\u00eb fillim, ky kontejner e konfiguronte veten p\u00ebr t\u00eb punuar me Prometheus dhe sistemin e mbledhjes s\u00eb logjeve.<\/p>\n<ul>\n<li>P\u00ebr k\u00ebt\u00eb ai p\u00ebrdor annotimet e pod-it, dhe n\u00eb var\u00ebsi t\u00eb p\u00ebrmbajtjes s\u00eb saj, krijon, le t\u00eb themi, nj\u00eb pik\u00eb fundore end-point Prometheus;\u00a0\n<\/li>\n<li>Bazuar n\u00eb specifikimin e pod-it dhe cil\u00ebsimet e ve\u00e7anta t\u00eb kontejner\u00ebve vendos se si t\u00eb d\u00ebrgoj\u00eb logjet.\n<\/li>\n<\/ul>\n<p>\nLogjet i mbledhim p\u00ebrmes Docker API: p\u00ebr zhvilluesit mjafton t'i hedhin ato n\u00eb stdout ose stderr, dhe m\u00eb pas Collector do t\u00eb merret. Logjet mblidhen n\u00eb grupe me nj\u00eb vones\u00eb t\u00eb caktuar, p\u00ebr t\u00eb parandaluar ndonj\u00eb ngarkes\u00eb t\u00eb mundshme t\u00eb host-it.\u00a0<\/p>\n<p>Metrikat mblidhen sipas instancave t\u00eb ngarkes\u00ebs s\u00eb pun\u00ebs (proceseve) n\u00eb kontejner\u00eb. \u00c7do gj\u00eb \u00ebsht\u00eb e etiketuar: namespace, pod dhe t\u00eb tjera, dhe m\u00eb pas konvertohet n\u00eb formatin Prometheus - dhe b\u00ebhet e disponueshme p\u00ebr mbledhje (p\u00ebrve\u00e7 logjeve). Po ashtu, logjet, metrikat dhe ngjarjet i d\u00ebrgojm\u00eb n\u00eb Kafka dhe m\u00eb pas:<\/p>\n<ul>\n<li>Logjet jan\u00eb t\u00eb disponueshme n\u00eb Graylog (p\u00ebr nj\u00eb analiz\u00eb vizuale);\n<\/li>\n<li>T\u00eb dh\u00ebnat, metrikat dhe ngjarjet d\u00ebrgohen n\u00eb Clickhouse p\u00ebr ruajtje afatgjat\u00eb.\n<\/li>\n<\/ul>\n<p>\nPo ashtu funksionon n\u00eb AWS, vet\u00ebm se ne z\u00ebvend\u00ebsojm\u00eb Graylog me Kafka me Cloudwatch. D\u00ebrgojm\u00eb aty log\u00ebt, dhe gjith\u00e7ka \u00ebsht\u00eb shum\u00eb e rehatshme: e kuptojm\u00eb menj\u00ebher\u00eb se p\u00ebr cilin klaster dhe kontejner jan\u00eb. E nj\u00ebjta \u00ebsht\u00eb e v\u00ebrtet\u00eb p\u00ebr Google Stackdriver. Kjo do t\u00eb thot\u00eb se skema jon\u00eb funksionon si on-premise me Kafka, ashtu edhe n\u00eb cloud.\u00a0<\/p>\n<p>N\u00ebse nuk kemi Kubernetes me pod-\u00eb, skema b\u00ebhet pak m\u00eb e komplikuar, por punon sipas t\u00eb nj\u00ebjtave principe.<\/p>\n<p><img decoding=\"async\" alt=\"Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s\" src=\"\/wp-content\/uploads\/2020\/05\/dd8efb33c5c74433a2767cb00caeec2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBrenda kontejnerit ekzekutohen procese t\u00eb nj\u00ebjta, t\u00eb orkestruar me S6. T\u00eb nj\u00ebjtat procese jan\u00eb t\u00eb aktivizuara brenda nj\u00eb kontejneri.<\/p>\n<h1>Si rezultat<\/h1>\n<p>\nNe kemi krijuar nj\u00eb zgjidhje t\u00eb plot\u00eb p\u00ebr nd\u00ebrtimin dhe ekzekutimin e imazheve n\u00eb prodhim, me mund\u00ebsi p\u00ebr mbledhjen dhe d\u00ebrgimin e log\u00ebve dhe metrikeve:<\/p>\n<ul>\n<li>Kemi zhvilluar nj\u00eb qasje standardizuese p\u00ebr nd\u00ebrtimin e imazheve, mbi t\u00eb cil\u00ebn jan\u00eb zhvilluar CI-shabllonet;\n<\/li>\n<li>Agjent\u00ebt p\u00ebr mbledhjen e t\u00eb dh\u00ebnave jan\u00eb zgjerimet tona Telegraf. I kemi testuar mir\u00eb n\u00eb prodhim;\n<\/li>\n<li>Aplikojm\u00eb mutation webhook p\u00ebr integrimin e kontejner\u00ebve me agjent\u00ebt n\u00eb pod-\u00eb;\u00a0\n<\/li>\n<li>Jemi integruar n\u00eb ekosistemin Kubernetes\/Rancher;\n<\/li>\n<li>Mund t\u00eb ekzekutojm\u00eb kontejner\u00eb t\u00eb nj\u00ebjt\u00eb n\u00eb sisteme t\u00eb ndryshme orkestrimi dhe t\u00eb arrijm\u00eb rezultatet q\u00eb presim;\n<\/li>\n<li>Krijuam nj\u00eb konfigurim t\u00ebr\u00ebsisht dinamik p\u00ebr menaxhimin e kontejner\u00ebve.\u00a0\n<\/li>\n<\/ul>\n<p>\nBashk\u00ebautori: <b>Ilya Prudnikov<\/b><br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/exness\/blog\/488392\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043b\u043e\u0433\u043e\u0432 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u043b\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u043e\u0432. \u041c\u044b \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Exness, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u0438 \u0444\u0438\u043d\u0442\u0435\u0445-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f B2B \u0438 \u04122\u0421. \u0412 \u043d\u0430\u0448\u0435\u043c R&amp;D \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0432 \u043e\u0442\u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 100 + \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81173","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes.\" \/>\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\/sq\/blog\/administrirovanie\/production-ready-images-for-k8s\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\udd47Production-ready images for k8s | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/production-ready-images-for-k8s\" \/>\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=\"2020-05-11T11:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-11T11:42:51+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\udd47Imazhe t\u00eb gatshme p\u00ebr prodhim p\u00ebr k8s | ProHoster","description":"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/production-ready-images-for-k8s","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\udd47Production-ready images for k8s | ProHoster","og:description":"\u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 Kubernetes.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/production-ready-images-for-k8s","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":"2020-05-11T11:42:51+00:00","article:modified_time":"2020-05-11T11:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81173","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:03:22","updated":"2022-09-28 06:12:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/81173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=81173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/81173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/81174"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=81173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=81173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=81173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}