{"id":37636,"date":"2019-10-31T22:18:44","date_gmt":"2019-10-31T19:18:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sozdayom-kubernetes-platformu-v-pinterest\/"},"modified":"2019-10-31T22:18:44","modified_gmt":"2019-10-31T19:18:44","slug":"sozdayom-kubernetes-platformu-v-pinterest","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Kubernetes platform l\u00e9trehoz\u00e1sa a Pinterest-en","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>A Pinterest \u00e9vei alatt 300 milli\u00f3 felhaszn\u00e1l\u00f3 t\u00f6bb mint 200 milli\u00e1rd pin-t hozott l\u00e9tre t\u00f6bb mint 4 milli\u00e1rd t\u00e1bl\u00e1n. Ennek a hatalmas felhaszn\u00e1l\u00f3i b\u00e1zisnak \u00e9s kiterjedt tartalmi adatb\u00e1zisnak a kiszolg\u00e1l\u00e1sa \u00e9rdek\u00e9ben a port\u00e1l t\u00f6bb ezer szolg\u00e1ltat\u00e1st fejlesztett ki, kezdve a n\u00e9h\u00e1ny CPU-val m\u0171k\u00f6d\u0151 mikroszolg\u00e1ltat\u00e1sokkal, eg\u00e9szen a hatalmas monolitokig, amelyek egy teljes virtu\u00e1lis g\u00e9pparkon futnak. \u00c9s elj\u00f6tt az a pillanat, amikor a c\u00e9g a k8s-re ir\u00e1ny\u00edtotta a figyelm\u00e9t. Mi\u00e9rt ragadta meg a \u201ekock\u00e1t\u201d a Pinterest? Err\u0151l egy friss cikk\u00fcnk ford\u00edt\u00e1s\u00e1b\u00f3l \u00e9rtes\u00fclhet. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">a Pinterest m\u0171szaki blogj\u00e1b\u00f3l<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes platform l\u00e9trehoz\u00e1sa a Pinterest-en\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSz\u00f3val, sz\u00e1mos milli\u00f3 felhaszn\u00e1l\u00f3 \u00e9s sz\u00e1mos milli\u00e1rd pin. Annak \u00e9rdek\u00e9ben, hogy kiszolg\u00e1ljuk ezt a hatalmas felhaszn\u00e1l\u00f3i b\u00e1zist \u00e9s kiterjedt tartalmi adatb\u00e1zist, t\u00f6bb ezer szolg\u00e1ltat\u00e1st fejlesztett\u00fcnk ki, kezdve a n\u00e9h\u00e1ny CPU-val m\u0171k\u00f6d\u0151 mikroszolg\u00e1ltat\u00e1sokkal, eg\u00e9szen a hatalmas monolitokig, amelyek egy teljes virtu\u00e1lis g\u00e9pparkon futnak. Emellett k\u00fcl\u00f6nb\u00f6z\u0151 keretrendszereink is vannak, amelyek szint\u00e9n ig\u00e9nyelhetnek CPU-er\u0151forr\u00e1st, mem\u00f3ri\u00e1t vagy hozz\u00e1f\u00e9r\u00e9st a bemeneti\/kimeneti m\u0171veletekhez.<\/p>\n<p>A fejleszt\u0151csapat a k\u00fcl\u00f6nf\u00e9le eszk\u00f6z\u00f6k t\u00e1mogat\u00e1sa sor\u00e1n sz\u00e1mos probl\u00e9m\u00e1val tal\u00e1lkozik:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Az m\u00e9rn\u00f6k\u00f6knek nincs egys\u00e9ges m\u00f3dja a munkak\u00f6rnyezet futtat\u00e1s\u00e1nak. A stateless szolg\u00e1ltat\u00e1sok, stateful szolg\u00e1ltat\u00e1sok \u00e9s az akt\u00edvan fejleszt\u00e9s alatt \u00e1ll\u00f3 projektek teljesen elt\u00e9r\u0151 technol\u00f3giai stackekre \u00e9p\u00fclnek. Ez oda vezetett, hogy eg\u00e9sz tr\u00e9ningkurzusokat kellett l\u00e9trehozni az m\u00e9rn\u00f6k\u00f6k sz\u00e1m\u00e1ra, \u00e9s komolyan megnehez\u00edti az infrastrukt\u00fara csapatunk munk\u00e1j\u00e1t.<\/li>\n<li>A fejleszt\u0151k, akik saj\u00e1t virtu\u00e1lis g\u00e9pparkot haszn\u00e1lnak, hatalmas terhel\u00e9st r\u00f3 az bels\u0151 adminisztr\u00e1torokra. Ennek eredm\u00e9nyek\u00e9nt olyan egyszer\u0171 m\u0171veletek, mint az oper\u00e1ci\u00f3s rendszer vagy AMI friss\u00edt\u00e9se hetekig, h\u00f3napokig elh\u00faz\u00f3dnak. Ez \u00e1rtalmas terhel\u00e9st eredm\u00e9nyez, m\u00e9g olyan, l\u00e1tsz\u00f3lag h\u00e9tk\u00f6znapi helyzetekben is.<\/li>\n<li>A glob\u00e1lis infrastrukt\u00fara kezel\u00e9si eszk\u00f6z\u00f6k l\u00e9trehoz\u00e1s\u00e1nak neh\u00e9zs\u00e9gei a m\u00e1r megl\u00e9v\u0151 megold\u00e1sok felett. A helyzetet bonyol\u00edtja, hogy neh\u00e9z megtal\u00e1lni a virtu\u00e1lis g\u00e9pek tulajdonosait. Vagyis nem tudjuk, hogy biztons\u00e1gosan ki lehet-e vonni ezeket a teljes\u00edtm\u00e9nyeket m\u00e1s r\u00e9szeink m\u0171k\u00f6dtet\u00e9s\u00e9re.<\/li>\n<\/ul>\n<p>\nA kont\u00e9neres orchesztr\u00e1ci\u00f3s rendszerek egys\u00e9ges\u00edtik a munkaterhel\u00e9s kezel\u00e9s\u00e9t. Lehet\u0151v\u00e9 teszik a fejleszt\u00e9si sebess\u00e9g n\u00f6vel\u00e9s\u00e9t \u00e9s megk\u00f6nny\u00edtik az infrastrukt\u00fara kezel\u00e9s\u00e9t, mivel a projekt sor\u00e1n r\u00e9szt vev\u0151 \u00f6sszes forr\u00e1st egy k\u00f6zpontos\u00edtott rendszer ir\u00e1ny\u00edtja.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes platform l\u00e9trehoz\u00e1sa a Pinterest-en\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>1. \u00e1bra: Infrastrukt\u00fara priorit\u00e1sok (megb\u00edzhat\u00f3s\u00e1g, fejleszt\u0151i teljes\u00edtm\u00e9ny \u00e9s hat\u00e9konys\u00e1g).<\/i><\/p>\n<p>A Pinterest Cloud Management Platform csapata 2017-ben ismerkedett meg a K8s-el. 2017 els\u0151 fel\u00e9re dokument\u00e1ltuk a termel\u00e9si kapacit\u00e1saink nagy r\u00e9sz\u00e9t, bele\u00e9rtve az API-t \u00e9s az \u00f6sszes <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/server\/\"   title=\"webszerver\u00fcnket\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">webszerver\u00fcnket<\/a>. Ezt k\u00f6vet\u0151en alaposan \u00e9rt\u00e9kelt\u00fck a k\u00fcl\u00f6nb\u00f6z\u0151 kont\u00e9neres orchestration rendszereket, klaszter\u00e9p\u00edt\u00e9si megold\u00e1sokat \u00e9s azok m\u0171k\u00f6d\u00e9s\u00e9t. 2017 v\u00e9g\u00e9re \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy haszn\u00e1lni fogjuk a Kubernetes-t. El\u00e9g rugalmas volt \u00e9s sz\u00e9les k\u00f6rben t\u00e1mogatott a fejleszt\u0151i k\u00f6z\u00f6ss\u00e9g \u00e1ltal.<\/p>\n<p>Jelenleg saj\u00e1t klaszter-inicializ\u00e1l\u00f3 eszk\u00f6zeinket alak\u00edtottuk ki Kops alapj\u00e1n, \u00e9s \u00e1t\u00e1ll\u00edtottuk a megl\u00e9v\u0151 infrastrukt\u00fara komponenseit a Kubernetes-re \u2014 mint p\u00e9ld\u00e1ul a h\u00e1l\u00f3zat, biztons\u00e1g, metrik\u00e1k, napl\u00f3z\u00e1s, azonos\u00edt\u00e1si kezel\u00e9s \u00e9s forgalom. Ezen k\u00edv\u00fcl l\u00e9trehoztunk egy munkaterhel\u00e9s modellez\u0151 rendszert az er\u0151forr\u00e1sunkhoz, amelynek \u00f6sszetetts\u00e9ge rejtve marad a fejleszt\u0151k el\u0151tt. Most a klaszter stabilit\u00e1s\u00e1nak biztos\u00edt\u00e1s\u00e1ra, annak m\u00e9retez\u00e9s\u00e9re \u00e9s \u00faj \u00fcgyfelek csatlakoztat\u00e1s\u00e1ra \u00f6sszpontos\u00edtunk.<\/p>\n<h4>Kubernetes: Pinterest \u00fatja<\/h4>\n<p>\nA Kubernetes Pinterest \u00e1ltali bevezet\u00e9se, mint olyan platform, amelyet m\u00e9rn\u00f6keink kedvelni fognak, sz\u00e1mos neh\u00e9zs\u00e9ghez vezetett.<\/p>\n<p>Mint nagyv\u00e1llalat, jelent\u0151s \u00f6sszegeket fektett\u00fcnk az infrastrukt\u00fara eszk\u00f6z\u00f6kbe. P\u00e9ld\u00e1ul a biztons\u00e1gi eszk\u00f6z\u00f6k, amelyek kezelik a tan\u00fas\u00edtv\u00e1nyokat \u00e9s a kulcsok eloszt\u00e1s\u00e1t, forgalom-ellen\u0151rz\u0151 elemek, szolg\u00e1ltat\u00e1s-felfedez\u0151 rendszerek, l\u00e1that\u00f3s\u00e1gi \u00e9s napl\u00f3z\u00e1si komponensek \u00e9s metrik\u00e1k. Mindezek nem v\u00e9letlenszer\u0171en ker\u00fcltek \u00f6ssze\u00e1ll\u00edt\u00e1sra: v\u00e9gigj\u00e1rtuk a pr\u00f3ba \u00e9s hiba norm\u00e1lis \u00fatj\u00e1t, ez\u00e9rt szerett\u00fck volna integr\u00e1lni ezt az eg\u00e9szet az \u00faj Kubernetes-alap\u00fa infrastrukt\u00far\u00e1ba, ahelyett, hogy \u00fajra feltal\u00e1ln\u00e1nk a r\u00e9gi biciklit egy \u00faj platformon. Ez a megk\u00f6zel\u00edt\u00e9s \u00f6sszess\u00e9g\u00e9ben megk\u00f6nny\u00edtette a migr\u00e1ci\u00f3t, mivel minden alkalmaz\u00e1st\u00e1mogat\u00e1s m\u00e1r l\u00e9tezett, nem kellett azt null\u00e1r\u00f3l l\u00e9trehozni.<\/p>\n<p>M\u00e1sr\u00e9szt a Kubernetesben a terhel\u00e9s-el\u0151rejelz\u0151 modellek (p\u00e9ld\u00e1ul a telep\u00edt\u00e9sek, feladatok \u00e9s Daemon k\u00e9szletek) nem elegend\u0151ek a projekt\u00fcnk sz\u00e1m\u00e1ra. Ezek a haszn\u00e1lhat\u00f3s\u00e1gi probl\u00e9m\u00e1k hatalmas akad\u00e1lyok az \u00e1t\u00e1ll\u00e1s sor\u00e1n. P\u00e9ld\u00e1ul hallottuk, hogy a szolg\u00e1ltat\u00e1sfejleszt\u0151k panaszkodnak a bel\u00e9p\u00e9si lehet\u0151s\u00e9gek hi\u00e1ny\u00e1ra vagy helytelen konfigur\u00e1l\u00e1s\u00e1ra. Emellett tal\u00e1lkoztunk a sablonkezel\u0151k helytelen haszn\u00e1lat\u00e1val, amikor t\u00f6bb sz\u00e1z azonos specifik\u00e1ci\u00f3val \u00e9s feladattal k\u00e9sz\u00fclt m\u00e1solat j\u00f6tt l\u00e9tre, ami sz\u00f6rny\u0171 hibakeres\u00e9si probl\u00e9m\u00e1khoz vezetett.<\/p>\n<p>A k\u00fcl\u00f6nb\u00f6z\u0151 verzi\u00f3k t\u00e1mogat\u00e1sa is nagyon neh\u00e9zkes volt ugyanabban a klaszterben. K\u00e9pzelje el a kliensek t\u00e1mogat\u00e1s\u00e1nak bonyolults\u00e1g\u00e1t, ha egyszerre t\u00f6bb verzi\u00f3val kell dolgoznia ugyanazon futtat\u00e1si k\u00f6rnyezetr\u0151l, az \u00f6sszes probl\u00e9m\u00e1j\u00e1val, hib\u00e1j\u00e1val \u00e9s friss\u00edt\u00e9s\u00e9vel.<\/p>\n<h4>Pinterest egy\u00e9ni er\u0151forr\u00e1sai \u00e9s vez\u00e9rl\u0151i<\/h4>\n<p>\nA Kubernetes bevezet\u00e9s\u00e9nek megk\u00f6nny\u00edt\u00e9se \u00e9rdek\u00e9ben, valamint az infrastrukt\u00fara egyszer\u0171s\u00edt\u00e9se \u00e9s sebess\u00e9g\u00e9nek n\u00f6vel\u00e9se c\u00e9lj\u00e1b\u00f3l kifejlesztett\u00fck a saj\u00e1t egy\u00e9ni er\u0151forr\u00e1sdefin\u00edci\u00f3inkat (CRD).<\/p>\n<p>A CRD a k\u00f6vetkez\u0151 funkci\u00f3kat biztos\u00edtja:<\/p>\n<ol>\n<li>K\u00fcl\u00f6nb\u00f6z\u0151 nat\u00edv Kubernetes er\u0151forr\u00e1sok egyes\u00edt\u00e9se, hogy egy\u00fcttes terhel\u00e9sk\u00e9nt m\u0171k\u00f6djenek. P\u00e9ld\u00e1ul a PinterestService er\u0151forr\u00e1s mag\u00e1ban foglalja a telep\u00edt\u00e9st, a bel\u00e9p\u00e9si szolg\u00e1ltat\u00e1st \u00e9s a konfigur\u00e1ci\u00f3s t\u00e9rk\u00e9pet. Ez lehet\u0151v\u00e9 teszi a fejleszt\u0151k sz\u00e1m\u00e1ra, hogy ne kelljen a DNS be\u00e1ll\u00edt\u00e1saival foglalkozniuk.<\/li>\n<li>A sz\u00fcks\u00e9ges alkalmaz\u00e1st\u00e1mogat\u00e1s bevezet\u00e9se. A felhaszn\u00e1l\u00f3nak csak a kont\u00e9ner specifik\u00e1ci\u00f3j\u00e1ra kell \u00f6sszpontos\u00edtania az \u00fczleti logik\u00e1ja szerint, m\u00edg a CRD vez\u00e9rl\u0151 bevezeti az \u00f6sszes sz\u00fcks\u00e9ges init-kont\u00e9nert, k\u00f6rnyezeti v\u00e1ltoz\u00f3t \u00e9s pod specifik\u00e1ci\u00f3t. Ez l\u00e9nyegesen m\u00e1s szint\u0171 k\u00e9nyelmet biztos\u00edt a fejleszt\u0151k sz\u00e1m\u00e1ra.<\/li>\n<li>A CRD vez\u00e9rl\u0151k a saj\u00e1t er\u0151forr\u00e1saik \u00e9letciklus\u00e1t is kezelik, \u00e9s n\u00f6velik a hibakeres\u00e9si el\u00e9rhet\u0151s\u00e9get. Ez mag\u00e1ban foglalja a k\u00edv\u00e1nt \u00e9s val\u00f3s specifik\u00e1ci\u00f3k egyeztet\u00e9s\u00e9t, a CRD \u00e1llapot\u00e1nak friss\u00edt\u00e9s\u00e9t, \u00e9s esem\u00e9nynapl\u00f3k vezet\u00e9s\u00e9t, \u00e9s m\u00e9g sok m\u00e1st. A CRD n\u00e9lk\u00fcl a fejleszt\u0151knek sz\u00e1mos er\u0151forr\u00e1st kellett volna kezelni\u00fck, ami csak n\u00f6velte volna a hib\u00e1k lehet\u0151s\u00e9g\u00e9t. <\/li>\n<\/ol>\n<p>\n\u00cdme egy p\u00e9lda a PinterestService-re \u00e9s a bels\u0151 er\u0151forr\u00e1sra, amelyet a vez\u00e9rl\u0151nk kezel:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes platform l\u00e9trehoz\u00e1sa a Pinterest-en\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nAhogy fentebb l\u00e1that\u00f3, a felhaszn\u00e1l\u00f3i kont\u00e9ner t\u00e1mogat\u00e1s\u00e1hoz integr\u00e1lnunk kell egy inicializ\u00e1l\u00f3 kont\u00e9nert \u00e9s n\u00e9h\u00e1ny b\u0151v\u00edtm\u00e9nyt, hogy biztos\u00edtsuk a biztons\u00e1got, a l\u00e1that\u00f3s\u00e1got \u00e9s a h\u00e1l\u00f3zati forgalom kezel\u00e9s\u00e9t. Ezen k\u00edv\u00fcl l\u00e9trehoztunk konfigur\u00e1ci\u00f3s t\u00e9rk\u00e9p sablonokat \u00e9s megval\u00f3s\u00edtottuk a PVC sablonok t\u00e1mogat\u00e1s\u00e1t a csomagolt feladatokhoz, valamint nyomon k\u00f6vetj\u00fck a k\u00f6rnyezeti v\u00e1ltoz\u00f3kat az azonos\u00edt\u00e1s, er\u0151forr\u00e1s-fogyaszt\u00e1s \u00e9s a \u201eszem\u00e9t\u201d gy\u0171jt\u00e9s nyomon k\u00f6vet\u00e9se \u00e9rdek\u00e9ben.<\/p>\n<p>Nehezen k\u00e9pzelhet\u0151 el, hogy a fejleszt\u0151k k\u00e9zi \u00faton \u00edrj\u00e1k meg ezeket a konfigur\u00e1ci\u00f3s f\u00e1jlokat CRD t\u00e1mogat\u00e1s n\u00e9lk\u00fcl, nem besz\u00e9lve a konfigur\u00e1ci\u00f3k tov\u00e1bbi t\u00e1mogat\u00e1s\u00e1r\u00f3l \u00e9s hibakeres\u00e9s\u00e9r\u0151l.<\/p>\n<h4>Alkalmaz\u00e1sok telep\u00edt\u00e9si munkafolyamata<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Kubernetes platform l\u00e9trehoz\u00e1sa a Pinterest-en\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA fenti \u00e1bra azt mutatja, hogyan lehet telep\u00edteni a Pinterest felhaszn\u00e1l\u00f3i er\u0151forr\u00e1st a Kubernetes klaszterbe:<\/p>\n<ol>\n<li>A fejleszt\u0151k CLI-n \u00e9s a felhaszn\u00e1l\u00f3i fel\u00fcleten kereszt\u00fcl l\u00e9pnek kapcsolatba a Kubernetes klaszter\u00fcnkkel.<\/li>\n<li>A CLI \/ UI eszk\u00f6z\u00f6k YAML konfigur\u00e1ci\u00f3s f\u00e1jlokat \u00e9s egy\u00e9b build tulajdons\u00e1gokat (ugyanaz a verzi\u00f3azonos\u00edt\u00f3) h\u00faznak ki az Artifactory-b\u00f3l, majd ezeket elk\u00fcldik a Munkafolyamat Bek\u00fcld\u00e9si Szolg\u00e1ltat\u00e1snak. Ez a l\u00e9p\u00e9s biztos\u00edtja, hogy csak m\u0171k\u00f6d\u0151 verzi\u00f3k ker\u00fcljenek be a klaszterbe. <\/li>\n<li>A JSS k\u00fcl\u00f6nb\u00f6z\u0151 platformok \u00e1tj\u00e1r\u00f3ja, bele\u00e9rtve a Kubernetest. Itt t\u00f6rt\u00e9nik a felhaszn\u00e1l\u00f3 hiteles\u00edt\u00e9se, a kv\u00f3t\u00e1k kiad\u00e1sa \u00e9s a CRD konfigur\u00e1ci\u00f3 r\u00e9szleges ellen\u0151rz\u00e9se.<\/li>\n<li>A JSS oldalon t\u00f6rt\u00e9n\u0151 CRD ellen\u0151rz\u00e9s ut\u00e1n az inform\u00e1ci\u00f3 az k8s platform API-j\u00e1ra ker\u00fcl elk\u00fcld\u00e9sre.<\/li>\n<li>CRD-vez\u00e9rl\u0151nk nyomon k\u00f6veti az \u00f6sszes felhaszn\u00e1l\u00f3i er\u0151forr\u00e1s esem\u00e9nyeit. \u00c1talak\u00edtja a CR-t nat\u00edv k8s er\u0151forr\u00e1sokk\u00e1, hozz\u00e1adja a sz\u00fcks\u00e9ges modulokat, be\u00e1ll\u00edtja a megfelel\u0151 k\u00f6rnyezeti v\u00e1ltoz\u00f3kat, \u00e9s elv\u00e9gzi a t\u00f6bbi t\u00e1mogat\u00f3 munk\u00e1t, \u00edgy biztos\u00edtva a kont\u00e9neres felhaszn\u00e1l\u00f3i alkalmaz\u00e1sok sz\u00e1m\u00e1ra a kell\u0151 infrastrukt\u00fara t\u00e1mogat\u00e1st.<\/li>\n<li>Ezut\u00e1n a CRD-vez\u00e9rl\u0151 tov\u00e1bb\u00edtja az \u00f6sszegy\u0171jt\u00f6tt adatokat a Kubernetes API-nak, hogy azokat a scheduler feldolgozhassa \u00e9s m\u0171k\u00f6d\u00e9sbe l\u00e9phessen.<\/li>\n<\/ol>\n<p>\n<b>Megjegyz\u00e9s<\/b>: ez a telep\u00edt\u00e9si munkafolyamat el\u0151zetes verzi\u00f3j\u00e1t az \u00faj k8s-platform korai felhaszn\u00e1l\u00f3i sz\u00e1m\u00e1ra hoztuk l\u00e9tre. Jelenleg a folyamat finom\u00edt\u00e1s\u00e1n dolgozunk, hogy teljes m\u00e9rt\u00e9kben integr\u00e1l\u00f3djunk az \u00faj CI\/CD rendszer\u00fcnkkel. Ez azt jelenti, hogy nem tudunk mindent elmondani a Kuberneteshez kapcsol\u00f3d\u00f3an. Alig v\u00e1rjuk, hogy megosszuk tapasztalatainkat \u00e9s besz\u00e1moljunk a csapat el\u0151rehalad\u00e1s\u00e1r\u00f3l ebben az ir\u00e1nyban a k\u00f6vetkez\u0151 blogbejegyz\u00e9s\u00fcnkben, \u201eCI\/CD platform \u00e9p\u00edt\u00e9se a Pinterest sz\u00e1m\u00e1ra\u201d.<\/p>\n<h4>Speci\u00e1lis er\u0151forr\u00e1sok t\u00edpusai<\/h4>\n<p>\nA Pinterest konkr\u00e9t ig\u00e9nyeinek figyelembev\u00e9tel\u00e9vel az al\u00e1bbi CRD-ket fejlesztett\u00fck ki, amelyek k\u00fcl\u00f6nb\u00f6z\u0151 munkafolyamatokhoz illeszkednek:<\/p>\n<ul>\n<li>A PinterestService r\u00e9g\u00f3ta m\u0171k\u00f6d\u0151 stateless szolg\u00e1ltat\u00e1sok. Sz\u00e1mos alapvet\u0151 rendszer\u00fcnk ezen szolg\u00e1ltat\u00e1sok \u00f6sszess\u00e9g\u00e9n alapul.<\/li>\n<li>A PinterestJobSet egy teljes k\u00f6r\u0171 batch feladatcsomagot modellez. A Pinterest-en gyakori forgat\u00f3k\u00f6nyv, hogy t\u00f6bb feladat p\u00e1rhuzamosan ind\u00edtja ugyanazokat a kont\u00e9nereket, f\u00fcggetlen\u00fcl m\u00e1s hasonl\u00f3 folyamatokt\u00f3l.<\/li>\n<li>A PinterestCronJob sz\u00e9les k\u00f6rben alkalmazhat\u00f3 kisebb, rendszeres terhel\u00e9sek eset\u00e9n. Ez egy burkol\u00f3szerkezet, amely nat\u00edv cron m\u0171k\u00f6d\u00e9shez k\u00e9sz\u00fclt, a Pinterest \u00e1ltal kezelt biztons\u00e1gi, forgalmi, napl\u00f3z\u00e1si \u00e9s metrikai mechanizmusokkal.<\/li>\n<li>A PinterestDaemon infrastrukt\u00fara Daemon-okat tartalmaz. Ez a csal\u00e1d folyamatosan b\u0151v\u00fcl, mivel egyre t\u00f6bb t\u00e1mogat\u00e1st adunk a klasztereinkhez.<\/li>\n<li>A PinterestTrainingJob a Tensorflow \u00e9s Pytorch folyamatokat c\u00e9lozza meg, biztos\u00edtva a munkav\u00e9gz\u00e9s k\u00f6zbeni azonos szint\u0171 t\u00e1mogat\u00e1st, mint minden m\u00e1s CRD. Mivel a Pinterest akt\u00edvan haszn\u00e1lja a Tensorflow-t \u00e9s m\u00e1s g\u00e9pi tanul\u00e1si rendszereket, indokolt volt egy k\u00fcl\u00f6n CRD-t \u00e9p\u00edteni k\u00f6r\u00e9j\u00fck.<\/li>\n<\/ul>\n<p>\nTov\u00e1bb\u00e1 dolgozunk a PinterestStatefulSet-en, amely hamarosan adat t\u00e1rol\u00e1si \u00e9s m\u00e1s stateful rendszerekhez igazodik.<\/p>\n<h4>Futtat\u00f3k\u00f6rnyezet t\u00e1mogat\u00e1sa<\/h4>\n<p>\nAmikor egy alkalmaz\u00e1smodul elindul Kubernetesben, automatikusan megkapja a tan\u00fas\u00edtv\u00e1nyt, amely lehet\u0151v\u00e9 teszi sz\u00e1m\u00e1ra, hogy azonos\u00edtsa mag\u00e1t. Ezt a tan\u00fas\u00edtv\u00e1nyt haszn\u00e1lj\u00e1k a titkos t\u00e1rol\u00f3hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9shez vagy a t\u00f6bbi szolg\u00e1ltat\u00e1ssal val\u00f3 kommunik\u00e1ci\u00f3hoz mTLS-en kereszt\u00fcl. Ek\u00f6zben a kont\u00e9ner-kezdem\u00e9nyez\u00e9si konfigur\u00e1tor \u00e9s a Daemon bet\u00f6lti az \u00f6sszes sz\u00fcks\u00e9ges f\u00fcgg\u0151s\u00e9get a kont\u00e9neralkalmaz\u00e1s ind\u00edt\u00e1sa el\u0151tt. Amikor minden k\u00e9szen \u00e1ll, a sidecar forgalma \u00e9s a Daemon regisztr\u00e1lja a modul IP-c\u00edm\u00e9t a Zookeeper\u00fcnkben, hogy az \u00fcgyfelek felfedezhess\u00e9k. Mindez m\u0171k\u00f6dni fog, mivel a h\u00e1l\u00f3zati modul m\u00e1r a alkalmaz\u00e1s elind\u00edt\u00e1sa el\u0151tt be volt \u00e1ll\u00edtva.<\/p>\n<p>Fenti p\u00e9ld\u00e1k a tipikus munkaterhek t\u00e1mogat\u00e1s\u00e1ra vonatkoznak fut\u00e1s k\u00f6zben. M\u00e1s t\u00edpus\u00fa munkaterhekhez tal\u00e1n kiss\u00e9 elt\u00e9r\u0151 t\u00e1mogat\u00e1s sz\u00fcks\u00e9ges, de mindegyik pod szint\u0171 sidecar-k\u00e9nt, nod\u00e1lis, vagy virtu\u00e1lis g\u00e9pek Daemon-jaik\u00e9nt jelenik meg. Gondoskodunk arr\u00f3l, hogy mindez a menedzsment infrastrukt\u00fara keretein bel\u00fcl legyen telep\u00edtve \u00e9s \u00f6sszehangolva az alkalmaz\u00e1sok k\u00f6z\u00f6tt, ami v\u00e9g\u00fcl jelent\u0151sen cs\u00f6kkenti a technikai munka \u00e9s az \u00fcgyf\u00e9lt\u00e1mogat\u00e1s terheit.<\/p>\n<h4>Tesztel\u00e9s \u00e9s QA<\/h4>\n<p>\n\u00d6sszegy\u0171jt\u00f6tt\u00fck az end-to-end tesztel\u00e9si folyamatot a m\u00e1r megl\u00e9v\u0151 Kubernetes tesztinfrastrukt\u00fara felett. Ezek a tesztek minden klaszterre kiterjednek. A folyamatunk sz\u00e1mos \u00e1talak\u00edt\u00e1son ment kereszt\u00fcl, miel\u0151tt a term\u00e9k klaszter\u00e9nek r\u00e9sz\u00e9v\u00e9 v\u00e1lt.<\/p>\n<p>A tesztel\u00e9si rendszerek mellett monitoring \u00e9s \u00e9rtes\u00edt\u00e9si rendszereink is vannak, amelyek folyamatosan figyelemmel k\u00eds\u00e9rik a rendszer komponenseinek \u00e1llapot\u00e1t, a resource-felhaszn\u00e1l\u00e1st \u00e9s m\u00e1s fontos mutat\u00f3kat, csak akkor \u00e9rtes\u00edtve minket, ha emberi beavatkoz\u00e1sra van sz\u00fcks\u00e9g.<\/p>\n<h4>Alternat\u00edv\u00e1k<\/h4>\n<p>\nMegfontoltuk n\u00e9h\u00e1ny alternat\u00edv\u00e1t a testreszabott er\u0151forr\u00e1sok sz\u00e1m\u00e1ra, mint p\u00e9ld\u00e1ul a mut\u00e1ci\u00f3s vez\u00e9rl\u0151ket \u00e9s a sablonrendszereket. Azonban mindezek komoly m\u0171k\u00f6d\u00e9si neh\u00e9zs\u00e9gekkel j\u00e1rtak, ez\u00e9rt a CRD m\u00f3dszer\u00e9t v\u00e1lasztottuk.<\/p>\n<p>A mut\u00e1ci\u00f3s hozz\u00e1f\u00e9r\u00e9si ellen\u0151rz\u0151t a sidecarok, k\u00f6rnyezeti v\u00e1ltoz\u00f3k \u00e9s egy\u00e9b fut\u00e1si t\u00e1mogat\u00e1sok bevezet\u00e9s\u00e9re haszn\u00e1lt\u00e1k. Mindazon\u00e1ltal sz\u00e1mos probl\u00e9m\u00e1val k\u00fczd\u00f6tt, p\u00e9ld\u00e1ul az er\u0151forr\u00e1sok \u00f6sszekapcsol\u00e1sa \u00e9s \u00e9letciklusuk kezel\u00e9se ter\u00e9n, m\u00edg a CRD eset\u00e9ben ilyen probl\u00e9m\u00e1k nem mer\u00fclnek fel.<\/p>\n<p><b>Megjegyz\u00e9s:<\/b> A sablonrendszerek, mint a Helm-diagramok, szint\u00e9n sz\u00e9les k\u00f6rben haszn\u00e1latosak hasonl\u00f3 konfigur\u00e1ci\u00f3j\u00fa alkalmaz\u00e1sok ind\u00edt\u00e1s\u00e1ra. Azonban a mi munk\u00e1nk sor\u00e1n az alkalmaz\u00e1sok t\u00fal v\u00e1ltozatosak ahhoz, hogy sablonokkal kezelhess\u00fck \u0151ket. Emellett a folyamatos telep\u00edt\u00e9s sor\u00e1n, sablonok haszn\u00e1latakor, t\u00fal sok hiba l\u00e9pne fel.<\/p>\n<h4>K\u00f6zelg\u0151 munka<\/h4>\n<p>\nJelenleg vegyes terhel\u00e9ssel foglalkozunk minden klaszter\u00fcnkben. Az ilyen t\u00edpus\u00fa \u00e9s m\u00e9ret\u0171 folyamatok t\u00e1mogat\u00e1sa \u00e9rdek\u00e9ben a k\u00f6vetkez\u0151 ir\u00e1nyokban dolgozunk:<\/p>\n<ul>\n<li>A klaszterek \u00f6sszess\u00e9ge nagy alkalmaz\u00e1sokat oszt el k\u00fcl\u00f6nb\u00f6z\u0151 klaszterek k\u00f6z\u00f6tt a sk\u00e1l\u00e1zhat\u00f3s\u00e1g \u00e9s a stabilit\u00e1s biztos\u00edt\u00e1sa \u00e9rdek\u00e9ben.<\/li>\n<li>A klaszter stabilit\u00e1s\u00e1nak, sk\u00e1l\u00e1zhat\u00f3s\u00e1g\u00e1nak \u00e9s l\u00e1that\u00f3s\u00e1g\u00e1nak biztos\u00edt\u00e1sa az alkalmaz\u00e1s \u00e9s SLA kapcsolat\u00e1nak l\u00e9trehoz\u00e1sa \u00e9rdek\u00e9ben.<\/li>\n<li>Er\u0151forr\u00e1sok \u00e9s kv\u00f3t\u00e1k kezel\u00e9se, hogy az alkalmaz\u00e1sok ne \u00fctk\u00f6zzenek egym\u00e1ssal, \u00e9s a klaszter m\u00e9ret\u00e9t kez\u00fcnk alatt tartsuk.<\/li>\n<li>\u00daj CI\/CD platform az alkalmaz\u00e1sok Kubernetesben t\u00f6rt\u00e9n\u0151 t\u00e1mogat\u00e1s\u00e1hoz \u00e9s telep\u00edt\u00e9s\u00e9hez.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/465487\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0430\u0440\u043c\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u0431\u0448\u0438\u0440\u043d\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u0431\u0430\u0437\u0443, \u043f\u043e\u0440\u0442\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e CPU, \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u0446\u0435\u043b\u043e\u043c \u043f\u0430\u0440\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0418 \u0432\u043e\u0442 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043c\u043e\u043c\u0435\u043d\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37636","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\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\/hu\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\udd47\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\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:18:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:44+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\udd47Kubernetes platformot \u00e9p\u00edt\u00fcnk a Pinterest sz\u00e1m\u00e1ra | ProHoster","description":"A Pinterest fenn\u00e1ll\u00e1sa alatt 300 milli\u00f3 felhaszn\u00e1l\u00f3 t\u00f6bb mint 200 milli\u00e1rd pin-t hozott l\u00e9tre t\u00f6bb mint 4 milli\u00e1rd t\u00e1bl\u00e1n.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\udd47\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster","og:description":"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","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:18:44+00:00","article:modified_time":"2019-10-31T19:18:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37636","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-02-09 15:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:23:06","updated":"2026-02-09 15:30:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}