{"id":31173,"date":"2019-10-31T21:39:53","date_gmt":"2019-10-31T18:39:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\/"},"modified":"2019-10-31T21:39:53","modified_gmt":"2019-10-31T18:39:53","slug":"obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","title":{"rendered":"P\u0159ehled a porovn\u00e1n\u00ed Ingress kontrol\u00e9r\u016f pro Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"P\u0159ehled a porovn\u00e1n\u00ed Ingress kontrol\u00e9r\u016f pro Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3e6d3882a8f5a96a257fab4daaa230f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159i nasazen\u00ed clustera Kubernetes pro konkr\u00e9tn\u00ed aplikaci je d\u016fle\u017eit\u00e9 pochopit, jak\u00e9 po\u017eadavky ta aplikace, podnik a v\u00fdvoj\u00e1\u0159i kladou na tento zdroj. S t\u011bmito informacemi lze p\u0159istoupit k architektonick\u00e9mu rozhodnut\u00ed, konkr\u00e9tn\u011b k v\u00fdb\u011bru konkr\u00e9tn\u00edho Ingress kontrol\u00e9ru, kter\u00fdch dnes existuje velk\u00e9 mno\u017estv\u00ed. Abychom vytvo\u0159ili z\u00e1kladn\u00ed p\u0159edstavu o dostupn\u00fdch mo\u017enostech bez nutnosti studovat mno\u017estv\u00ed \u010dl\u00e1nk\u016f\/dokumentace apod., p\u0159ipravili jsme tento p\u0159ehled, kter\u00fd zahrnuje hlavn\u00ed (produk\u010dn\u011b p\u0159ipraven\u00e9) Ingress kontrol\u00e9ry.<\/p>\n<p>Douf\u00e1me, \u017ee pom\u016f\u017ee koleg\u016fm p\u0159i v\u00fdb\u011bru architektonick\u00e9ho \u0159e\u0161en\u00ed \u2014 alespo\u0148 poslou\u017e\u00ed jako v\u00fdchoz\u00ed bod pro z\u00edsk\u00e1n\u00ed podrobn\u011bj\u0161\u00edch informac\u00ed a praktick\u00fdch experiment\u016f. P\u0159edem jsme prozkoumali jin\u00e9 podobn\u00e9 materi\u00e1ly na internetu a, sv\u011bte div se, nenalezli jsme ani jeden v\u00edce m\u00e9n\u011b \u00fapln\u00fd, a p\u0159edev\u0161\u00edm \u2014 strukturovan\u00fd \u2014 p\u0159ehled. Tak poj\u010fme tedy tento prostor zaplnit!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Krit\u00e9ria<\/h2>\n<p>\nAby bylo mo\u017en\u00e9 prov\u00e9st srovn\u00e1n\u00ed a z\u00edskat n\u011bjak\u00fd u\u017eite\u010dn\u00fd v\u00fdsledek, je t\u0159eba rozum\u011bt nejen p\u0159edm\u011btn\u00e9 oblasti, ale m\u00edt tak\u00e9 konkr\u00e9tn\u00ed seznam krit\u00e9ri\u00ed, kter\u00e1 nastav\u00ed sm\u011br v\u00fdzkumu. Bez n\u00e1roku na anal\u00fdzu v\u0161ech mo\u017en\u00fdch p\u0159\u00edpad\u016f pou\u017eit\u00ed Ingress\/Kubernetes jsme se sna\u017eili vyzdvihnout nejb\u011b\u017en\u011bj\u0161\u00ed po\u017eadavky na kontrol\u00e9ry \u2014 bu\u010fte p\u0159ipraveni, \u017ee ve\u0161ker\u00e9 sv\u00e9 specifick\u00e9 detaily budete muset studovat samostatn\u011b.<\/p>\n<p>Ale za\u010dnu s charakteristikami, kter\u00e9 se staly natolik b\u011b\u017en\u00fdmi, \u017ee jsou realizov\u00e1ny ve v\u0161ech \u0159e\u0161en\u00edch a nen\u00ed jich t\u0159eba \u0159e\u0161it:<\/p>\n<ul>\n<li> dynamick\u00e9 objevov\u00e1n\u00ed slu\u017eeb (service discovery);<\/li>\n<li> SSL terminace;<\/li>\n<li> pr\u00e1ce s websockety.<\/li>\n<\/ul>\n<p>\nNyn\u00ed \u2014 o bodech srovn\u00e1n\u00ed:<\/p>\n<h3>Podporovan\u00e9 protokoly<\/h3>\n<p>\nJedn\u00edm z kl\u00ed\u010dov\u00fdch krit\u00e9ri\u00ed pro v\u00fdb\u011br. V\u00e1\u0161 software m\u016f\u017ee fungovat na nestandardn\u00edm HTTP nebo vy\u017eadovat pr\u00e1ci s mnoha protokoly sou\u010dasn\u011b. Pokud je v\u00e1\u0161 p\u0159\u00edpad nestandardn\u00ed, ur\u010dit\u011b vezm\u011bte tento faktor v \u00favahu, abyste se vyhnuli nutnosti pozd\u011bj\u0161\u00edho p\u0159epracov\u00e1n\u00ed clustera. U v\u0161ech kontrol\u00e9r\u016f se seznam podporovan\u00fdch protokol\u016f li\u0161\u00ed.<\/p>\n<h3>Software v z\u00e1kladu<\/h3>\n<p>\nExistuje n\u011bkolik variant aplikac\u00ed, na kter\u00fdch je postaven\u00fd kontrol\u00e9r. Obvykl\u00e9 jsou nginx, traefik, haproxy, envoy. Obecn\u011b to nemus\u00ed p\u0159\u00edli\u0161 ovlivnit, jak se p\u0159ij\u00edm\u00e1 a p\u0159ed\u00e1v\u00e1 provoz, nicm\u00e9n\u011b je v\u017edy u\u017eite\u010dn\u00e9 zn\u00e1t potenci\u00e1ln\u00ed nuance a vlastnosti toho, co se skr\u00fdv\u00e1 \"pod kapotou\".<\/p>\n<h3>Sm\u011brov\u00e1n\u00ed provozu<\/h3>\n<p>\nNa z\u00e1klad\u011b \u010deho se rozhoduje o sm\u011brov\u00e1n\u00ed provozu k ur\u010dit\u00e9mu slu\u017eb\u011b? Obvykle to jsou host a cesta, ale mohou existovat i dal\u0161\u00ed mo\u017enosti.<\/p>\n<h3>Jmenn\u00fd prostor v r\u00e1mci clustera<\/h3>\n<p>\nJmenn\u00fd prostor (namespace) \u2014 mo\u017enost logicky rozd\u011blit zdroje v Kubernetes (nap\u0159\u00edklad na stage, production atd.). Existuj\u00ed Ingress kontrol\u00e9ry, kter\u00e9 je t\u0159eba nainstalovat zvl\u00e1\u0161\u0165 do ka\u017ed\u00e9ho jmenn\u00e9ho prostoru (a pak m\u016f\u017ee sm\u011brovat provoz <i>pouze<\/i> v podech tohoto prostoru). Existuj\u00ed v\u0161ak i takov\u00e9 (a je jich zjevn\u00e1 v\u011bt\u0161ina), kter\u00e9 funguj\u00ed glob\u00e1ln\u011b na cel\u00fd cluster \u2014 v nich\u017e je provoz sm\u011brov\u00e1n do libovoln\u00e9ho podu clusteru, bez ohledu na jmenn\u00fd prostor.<\/p>\n<h3>Vzorky pro upstreamy<\/h3>\n<p>\nJak\u00fdm zp\u016fsobem je zaji\u0161t\u011bno sm\u011brov\u00e1n\u00ed provozu k zdrav\u00fdm instanc\u00edm aplikace, slu\u017eeb? Existuj\u00ed varianty s aktivn\u00edmi a pasivn\u00edmi kontrolami, opakovan\u00fdmi pokusy (retries), obvody p\u0159eru\u0161en\u00ed (circuit breakers) <i>(podrobn\u011bji o nich viz nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">\u010dl\u00e1nek o Istio<\/a><\/noindex>)<\/i>, vlastn\u00edm implementac\u00edm kontrol zdrav\u00ed (custom health checks) atd. Velmi d\u016fle\u017eit\u00fd parametr, pokud m\u00e1te vysok\u00e9 po\u017eadavky na dostupnost a v\u010dasn\u00e9 vy\u0159azen\u00ed nefunguj\u00edc\u00edch slu\u017eeb z vyva\u017eov\u00e1n\u00ed.<\/p>\n<h3>Algoritmy vyva\u017eov\u00e1n\u00ed<\/h3>\n<p>\nTady je mnoho variant: od tradi\u010dn\u00edch <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Round-robin_DNS\">round-robin<\/a><\/noindex> po exoti\u010dt\u011bj\u0161\u00ed, jako je <noindex><a rel=\"nofollow\" href=\"http:\/\/www.loadbalancer.org\/blog\/load-balancing-windows-terminal-server-haproxy-and-rdp-cookies\/\">rdp-cookie<\/a><\/noindex>, a tak\u00e9 samostatn\u00e9 mo\u017enosti, jako <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/900933\">sticky sessions<\/a><\/noindex>.<\/p>\n<h3>Autentizace<\/h3>\n<p>\nJak\u00e9 autoriza\u010dn\u00ed sch\u00e9mata podporuje kontrol\u00e9r? Basic, digest, oauth, external-auth \u2014 mysl\u00edm, \u017ee tyto mo\u017enosti by m\u011bly b\u00fdt zn\u00e1m\u00e9. To je d\u016fle\u017eit\u00fd kriterium, pokud se pou\u017e\u00edv\u00e1 mnoho kontur pro v\u00fdvoj\u00e1\u0159e (a\/nebo jednodu\u0161e uzav\u0159en\u00fdch), p\u0159\u00edstup k nim\u017e se realizuje p\u0159es Ingress. <\/p>\n<h3>Distribuce provozu<\/h3>\n<p>\nPodporuje kontrol\u00e9r tak \u010dasto pou\u017e\u00edvan\u00e9 mechanismy pro distribuci provozu, jako jsou canary deploy, A\/B testov\u00e1n\u00ed, zrcadlen\u00ed provozu (mirroring\/shadowing)? To je skute\u010dn\u011b bolestiv\u00e9 t\u00e9ma pro aplikace, kter\u00e9 vy\u017eaduj\u00ed precizn\u00ed a p\u0159esn\u00e9 \u0159\u00edzen\u00ed provozu pro produktov\u00e9 testov\u00e1n\u00ed, lad\u011bn\u00ed produktov\u00fdch chyb nikoli v boji (nebo s minim\u00e1ln\u00edmi ztr\u00e1tami), anal\u00fdzu provozu atd.<\/p>\n<h3>Placen\u00e9 p\u0159edplatn\u00e9<\/h3>\n<p>\nExistuje placen\u00e1 varianta \u0159adi\u010de s roz\u0161\u00ed\u0159en\u00fdmi funk\u010dn\u00edmi mo\u017enostmi a\/nebo technickou podporou?<\/p>\n<h3>Grafick\u00e9 u\u017eivatelsk\u00e9 rozhran\u00ed (Web UI)<\/h3>\n<p>\nExistuje n\u011bjak\u00e9 grafick\u00e9 u\u017eivatelsk\u00e9 rozhran\u00ed pro spr\u00e1vu konfigurace \u0159adi\u010de? Hlavn\u011b pro \"pohodl\u00ed\" a\/nebo pro ty, kte\u0159\u00ed pot\u0159ebuj\u00ed prov\u00e9st n\u011bjak\u00e9 zm\u011bny v konfiguraci Ingressu, ale pr\u00e1ce s \"syrov\u00fdmi\" \u0161ablonami je nepohodln\u00e1. M\u016f\u017ee b\u00fdt u\u017eite\u010dn\u00e9, pokud v\u00fdvoj\u00e1\u0159i cht\u011bj\u00ed experimentovat s provozem na m\u00edst\u011b.<\/p>\n<h3>JWT validace<\/h3>\n<p>\nP\u0159\u00edtomnost vestav\u011bn\u00e9 kontroly JSON web token\u016f pro autorizaci a validaci u\u017eivatele pro koncovou aplikaci.<\/p>\n<h3>Mo\u017enosti p\u0159izp\u016fsoben\u00ed konfigurace<\/h3>\n<p>\nRoz\u0161i\u0159itelnost \u0161ablon co do p\u0159\u00edtomnosti mechanism\u016f, kter\u00e9 umo\u017e\u0148uj\u00ed p\u0159id\u00e1vat vlastn\u00ed direktivy, p\u0159\u00edznaky atd. do standardn\u00edch \u0161ablon konfigurace.<\/p>\n<h3>Z\u00e1kladn\u00ed mechanismy ochrany proti DDOS<\/h3>\n<p>\nJednoduch\u00e9 algoritmy pro omezen\u00ed n\u00e1v\u0161t\u011bvnosti nebo slo\u017eit\u011bj\u0161\u00ed mo\u017enosti filtrov\u00e1n\u00ed provozu na z\u00e1klad\u011b adres, b\u00edl\u00fdch seznam\u016f, zem\u00ed atd.<\/p>\n<h3>Sledov\u00e1n\u00ed dotaz\u016f<\/h3>\n<p>\nMo\u017enosti sledov\u00e1n\u00ed, monitorov\u00e1n\u00ed a debugging po\u017eadavk\u016f z Ingress\u016f do konkr\u00e9tn\u00edch slu\u017eeb\/pod\u016f, a ide\u00e1ln\u011b \u2014 i mezi slu\u017ebami\/pody.<\/p>\n<h3>WAF<\/h3>\n<p>\nPodpora <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">aplikovan\u00e9ho firewallu<\/a><\/noindex>.<\/p>\n<h2>\u0158adi\u010de Ingress<\/h2>\n<p>\nSeznam \u0159adi\u010d\u016f byl sestaven na z\u00e1klad\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/#additional-controllers\">ofici\u00e1ln\u00ed dokumentaci Kubernetes<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/16bxRgpO1H_Bn-5xVZ1WrR_I-0A-GOI6egmhvqqLMOmg\/edit\">t\u00e9to tabulky<\/a><\/noindex>. N\u011bkter\u00e9 z nich jsme vylou\u010dili z p\u0159ehledu vzhledem k jejich specifik\u016fm nebo mal\u00e9 roz\u0161\u00ed\u0159enosti (ran\u00e9 f\u00e1ze v\u00fdvoje). Zb\u00fdvaj\u00edc\u00ed byly pops\u00e1ny n\u00ed\u017ee. Za\u010dneme se v\u0161eobecn\u00fdm popisem \u0159e\u0161en\u00ed a pokra\u010dujeme shrnuj\u00edc\u00ed tabulkou.<\/p>\n<h3>Ingress od Kubernetes<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">github.com\/kubernetes\/ingress-nginx<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Toto je ofici\u00e1ln\u00ed \u0159adi\u010d pro Kubernetes, kter\u00fd vyv\u00edj\u00ed komunita. Jak je z n\u00e1zvu z\u0159ejm\u00e9, je zalo\u017een na nginx a dopln\u011bn r\u016fzn\u00fdmi sadami Lua plugin\u016f, kter\u00e9 se pou\u017e\u00edvaj\u00ed k implementaci dal\u0161\u00edch mo\u017enost\u00ed. D\u00edky popularit\u011b samotn\u00e9ho nginx a minim\u00e1ln\u00edm modifikac\u00edm, kter\u00e9 jsou pot\u0159eba p\u0159i jeho pou\u017e\u00edv\u00e1n\u00ed jako \u0159adi\u010de, m\u016f\u017ee b\u00fdt tato varianta nejjednodu\u0161\u0161\u00ed a nejv\u00edce srozumiteln\u00e1 pro pr\u016fm\u011brn\u00e9ho in\u017een\u00fdra (s webov\u00fdm zku\u0161enostmi).<\/p>\n<h3>Ingress od NGINX Inc<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\">github.com\/nginxinc\/kubernetes-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Ofici\u00e1ln\u00ed produkt v\u00fdvoj\u00e1\u0159\u016f nginx. M\u00e1 placenou verzi, kter\u00e1 je zalo\u017eena na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/products\/nginx\/\">NGINX Plus<\/a><\/noindex>Hlavn\u00ed my\u0161lenkou je vysok\u00e1 \u00farove\u0148 stability, st\u00e1l\u00e1 zp\u011btn\u00e1 kompatibilita, absence jak\u00fdchkoli ciz\u00edch modul\u016f a deklarovan\u00e9 zv\u00fd\u0161en\u00ed rychlosti (ve srovn\u00e1n\u00ed s ofici\u00e1ln\u00edm \u0159adi\u010dem), dosa\u017een\u00e9 d\u00edky odm\u00edtnut\u00ed Lua. <\/p>\n<p>Bezplatn\u00e1 verze je zna\u010dn\u011b o\u0159ezan\u00e1, v\u010detn\u011b srovn\u00e1n\u00ed s ofici\u00e1ln\u00edm \u0159adi\u010dem (kv\u016fli absenci t\u011bch sam\u00fdch Lua-modul\u016f). Placen\u00e1 verze m\u00e1 p\u0159itom dost \u0161irokou dodate\u010dnou funkcionalitu: metriky v re\u00e1ln\u00e9m \u010dase, JWT-validaci, aktivn\u00ed kontroly zdrav\u00ed a dal\u0161\u00ed. D\u016fle\u017eit\u00e9 v\u00fdhody oproti NGINX Ingress \u2014 pln\u00e1 podpora TCP\/UDP provozu (a to i ve community verzi!). Nev\u00fdhodou je, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\/issues\/464\">absence<\/a><\/noindex> funkc\u00ed pro rozd\u011blov\u00e1n\u00ed provozu, co\u017e je v\u0161ak \"prioritou pro v\u00fdvoj\u00e1\u0159e\", ale vy\u017eaduje \u010das na implementaci.<\/p>\n<h3>Kong Ingress<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Kong\/kubernetes-ingress-controller\">github.com\/Kong\/kubernetes-ingress-controller<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Produkt vyv\u00edjen\u00fd spole\u010dnost\u00ed Kong Inc. ve dvou variant\u00e1ch: komer\u010dn\u00ed a bezplatn\u00e1. Je zalo\u017een na nginx, jeho\u017e mo\u017enosti jsou roz\u0161\u00ed\u0159eny velk\u00fdm mno\u017estv\u00edm modul\u016f na Lua.<\/p>\n<p>P\u016fvodn\u011b byl orientov\u00e1n na zpracov\u00e1n\u00ed a sm\u011brov\u00e1n\u00ed API po\u017eadavk\u016f, tj. jako API Gateway, av\u0161ak v sou\u010dasnosti se stal plnohodnotn\u00fdm Ingress kontrolerem. Hlavn\u00ed v\u00fdhody: mnoho dodate\u010dn\u00fdch modul\u016f (v\u010detn\u011b t\u011bch od t\u0159et\u00edch stran), kter\u00e9 se snadno instaluj\u00ed a konfiguruje a s jejich\u017e pomoc\u00ed lze realizovat \u0161irokou \u0161k\u00e1lu dodate\u010dn\u00fdch funkc\u00ed. Nicm\u00e9n\u011b, vestav\u011bn\u00e9 funkce ji\u017e nab\u00edzej\u00ed mnoh\u00e9 mo\u017enosti. Konfigurace prob\u00edh\u00e1 pomoc\u00ed CRD zdroj\u016f.<\/p>\n<p>D\u016fle\u017eitou zvl\u00e1\u0161tnost\u00ed produktu je, \u017ee pr\u00e1ce v r\u00e1mci jednoho obrysu (nam\u00edsto cross-namespaced) je sporn\u00fdm t\u00e9matem: n\u011bkomu se to m\u016f\u017ee zd\u00e1t jako nev\u00fdhoda (mus\u00ed se vytv\u00e1\u0159et entity pro ka\u017ed\u00fd obrys), ale pro n\u011bkoho jako funkce (vy\u0161\u0161\u00ed \u00farove\u0148 izolace, proto\u017ee pokud je jeden kontroler po\u0161kozen, je probl\u00e9m omezen jen na jeden obrys).<i>o<\/i>Traefik<\/p>\n<h3>github.com\/containous\/traefik<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containous\/traefik\">github.com\/containous\/traefik<\/a><\/noindex><\/i><br \/>\n<i>Licence: MIT<\/i><\/p>\n<p>Proxy, kter\u00e1 byla p\u016fvodn\u011b vytvo\u0159ena pro sm\u011brov\u00e1n\u00ed po\u017eadavk\u016f v mikroslu\u017eb\u00e1ch a jejich dynamick\u00e9m prost\u0159ed\u00ed. Odtud tak\u00e9 vypl\u00fdv\u00e1 mnoho u\u017eite\u010dn\u00fdch funkc\u00ed: aktualizace konfigurace bez jak\u00e9hokoli restartov\u00e1n\u00ed, podpora \u0161irok\u00e9ho spektra metod vyva\u017eov\u00e1n\u00ed, webov\u00e9 rozhran\u00ed, p\u0159ed\u00e1v\u00e1n\u00ed metrik, podpora r\u016fzn\u00fdch protokol\u016f, REST API, kan\u00e1rkov\u00e1 vyd\u00e1n\u00ed a mnohem v\u00edce. P\u0159\u00edjemnou vlastnost\u00ed je rovn\u011b\u017e podpora certifik\u00e1t\u016f Let's Encrypt p\u0159\u00edmo z krabice. Nev\u00fdhodou je, \u017ee k zaji\u0161t\u011bn\u00ed vysok\u00e9 dostupnosti (HA) controller pot\u0159ebuje nainstalovat a p\u0159ipojit vlastn\u00ed KV \u00falo\u017ei\u0161t\u011b.<\/p>\n<h3>D\u00e1le klientsk\u00fd dotaz vch\u00e1zel do HAProxy, kter\u00e9 \u0159e\u0161ilo n\u00e1sleduj\u00edc\u00ed \u00fakoly:<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jcmoraisjr\/haproxy-ingress\">github.com\/jcmoraisjr\/haproxy-ingress<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>HAProxy je ji\u017e dlouho zn\u00e1m jako proxy a vyva\u017eova\u010d z\u00e1t\u011b\u017ee. V r\u00e1mci clusteru Kubernetes nab\u00edz\u00ed 'm\u011bkk\u00e9' aktualizace konfigurac\u00ed (bez ztr\u00e1ty provozu), objevov\u00e1n\u00ed slu\u017eeb na z\u00e1klad\u011b DNS, dynamickou konfiguraci pomoc\u00ed API. P\u0159ita\u017eliv\u00e9 m\u016f\u017ee b\u00fdt \u00fapln\u00e9 p\u0159izp\u016fsoben\u00ed \u0161ablony konfigurace pomoc\u00ed nahrazen\u00ed CM a tak\u00e9 mo\u017enosti pou\u017e\u00edv\u00e1n\u00ed funkc\u00ed knihovny Sprig. V z\u00e1sad\u011b je z\u00e1kladn\u00edm zam\u011b\u0159en\u00edm \u0159e\u0161en\u00ed vysok\u00e1 rychlost provozu, jeho optimalizace a efektivita p\u0159i spot\u0159eb\u011b zdroj\u016f. V\u00fdhodou controlleru je podpora rekordn\u00edho po\u010dtu r\u016fzn\u00fdch zp\u016fsob\u016f vyva\u017eov\u00e1n\u00ed.<\/p>\n<h3>Voyager<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appscode\/voyager\">github.com\/appscode\/voyager<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Kontroler zalo\u017een\u00fd na HAProxy, kter\u00fd se prezentuje jako univerz\u00e1ln\u00ed \u0159e\u0161en\u00ed, podporuj\u00edc\u00ed \u0161irok\u00e9 mo\u017enosti na mnoha poskytovatel\u00edch. Nab\u00edz\u00ed mo\u017enosti pro vyva\u017eov\u00e1n\u00ed provozu na L7 a L4, p\u0159i\u010dem\u017e vyva\u017eov\u00e1n\u00ed TCP L4-provozu lze pova\u017eovat za jednu z kl\u00ed\u010dov\u00fdch funkc\u00ed \u0159e\u0161en\u00ed.<\/p>\n<h3>Contour<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\">github.com\/heptio\/contour<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Toto \u0159e\u0161en\u00ed bylo vyvinuto nejen s vyu\u017eit\u00edm Envoy: <i>spole\u010dn\u011b<\/i> s autory tohoto popul\u00e1rn\u00edho proxy. D\u016fle\u017eitou vlastnost\u00ed je schopnost odd\u011blit spr\u00e1vu zdroj\u016f Ingress pomoc\u00ed CRD zdroj\u016f IngressRoute. Pro organizace s mno\u017estv\u00edm v\u00fdvojov\u00fdch t\u00fdm\u016f, kter\u00e9 pou\u017e\u00edvaj\u00ed jeden cluster, to pom\u00e1h\u00e1 maxim\u00e1ln\u011b zabezpe\u010dit pr\u00e1ci s provozem v sousedn\u00edch obvodech a chr\u00e1nit je p\u0159ed chybami p\u0159i zm\u011bn\u00e1ch zdroj\u016f Ingress.<\/p>\n<p>Tak\u00e9 se nab\u00edz\u00ed roz\u0161\u00ed\u0159en\u00e1 sada metod vyva\u017eov\u00e1n\u00ed (je p\u0159\u00edtomno zrcadlen\u00ed po\u017eadavk\u016f, automatick\u00e9 opakov\u00e1n\u00ed, omezen\u00ed po\u010dtu po\u017eadavk\u016f a mnoho dal\u0161\u00edho), detailn\u00ed monitoring toku provozu a chyb. Mo\u017en\u00e1, pro n\u011bkoho bude z\u00e1sadn\u00edm nedostatkem absence podpory sticky sessions (i kdy\u017e na tom pracuj\u00ed). <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heptio\/contour\/issues\/361\">ji\u017e prob\u00edhaj\u00ed<\/a><\/noindex>).<\/p>\n<h3>Istio Ingress<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/tasks\/traffic-management\/ingress\/\">istio.io\/docs\/tasks\/traffic-management\/ingress<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Komplexn\u00ed \u0159e\u0161en\u00ed service mesh, kter\u00e9 nen\u00ed jen Ingress kontrolerem spravuj\u00edc\u00edm p\u0159\u00edchoz\u00ed provoz zven\u010d\u00ed, ale tak\u00e9 kontroluje ve\u0161ker\u00fd provoz v r\u00e1mci klastru. \u201ePod kapotou\u201c je jako sidecar proxy pro ka\u017edou slu\u017ebu pou\u017eit Envoy. V podstat\u011b se jedn\u00e1 o velk\u00fd kombin\u00e1tor, kter\u00fd \u201em\u016f\u017ee v\u0161e\u201c, a jeho hlavn\u00ed my\u0161lenkou je maxim\u00e1ln\u00ed spravovatelnost, roz\u0161i\u0159itelnost, zabezpe\u010den\u00ed a transparentnost. Pomoc\u00ed n\u011bj m\u016f\u017eete podrobn\u011b nastavovat sm\u011brov\u00e1n\u00ed provozu, autorizaci p\u0159\u00edstupu mezi slu\u017ebami, vyva\u017eov\u00e1n\u00ed, monitoring, kan\u00e1rkov\u00e9 vyd\u00e1n\u00ed a mnoh\u00e9 dal\u0161\u00ed. V\u00edce o Istio si m\u016f\u017eete p\u0159e\u010d\u00edst v s\u00e9rii \u010dl\u00e1nk\u016f \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">N\u00e1vrat k mikroslu\u017eb\u00e1m s Istio<\/a><\/noindex>\u00bb.<\/p>\n<h3>Ambassador<\/h3>\n<p>\n<i>Web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/datawire\/ambassador\">github.com\/datawire\/ambassador<\/a><\/noindex><\/i><br \/>\n<i>Licence: Apache 2.0<\/i><\/p>\n<p>Dal\u0161\u00ed \u0159e\u0161en\u00ed zalo\u017een\u00e9 na Envoy. M\u00e1 bezplatn\u00e9 a komer\u010dn\u00ed verze. P\u0159edstavuje se jako \u201epln\u011b nativn\u00ed pro Kubernetes\u201c, co\u017e p\u0159in\u00e1\u0161\u00ed odpov\u00eddaj\u00edc\u00ed v\u00fdhody (\u00fazk\u00e1 integrace s metodami a entitami klastru K8s).<\/p>\n<h2>Srovn\u00e1vac\u00ed tabulka<\/h2>\n<p>\nTak\u017ee, vyvrcholen\u00edm \u010dl\u00e1nku je tato obrovsk\u00e1 tabulka:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ss\/wh\/lj\/sswhljo-rjkms7nadtyewqkxrdi.png\"><img decoding=\"async\" alt=\"P\u0159ehled a porovn\u00e1n\u00ed Ingress kontrol\u00e9r\u016f pro Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3a6c552df6b8b7b6a88517046fa7a275.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Je klikac\u00ed pro mo\u017enost podrobn\u011bj\u0161\u00edho zobrazen\u00ed a tak\u00e9 je dostupn\u00e1 ve form\u00e1tu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1xjff2AMS6QXSdh8E8ay_uNMoUa2OLIanCallvkDvAy0\/edit#gid=0\">Google Sheets<\/a><\/noindex>.<\/p>\n<h2>Shr\u0148me to<\/h2>\n<p>\nC\u00edlem \u010dl\u00e1nku je poskytnout komplexn\u011bj\u0161\u00ed porozum\u011bn\u00ed (ale rozhodn\u011b ne vy\u010derp\u00e1vaj\u00edc\u00ed!) tomu, jakou volbu u\u010dinit ve va\u0161em konkr\u00e9tn\u00edm p\u0159\u00edpad\u011b. Jak u\u017e to b\u00fdv\u00e1, ka\u017ed\u00fd kontroler m\u00e1 sv\u00e9 v\u00fdhody a nev\u00fdhody...<\/p>\n<p>Klasick\u00fd Ingress od Kubernetes je dobr\u00fd svou dostupnost\u00ed a prov\u011b\u0159enost\u00ed, dostate\u010dn\u011b bohat\u00fdmi funkcemi \u2013 obecn\u011b by m\u011bl \"sta\u010dit na o\u010di\". Pokud v\u0161ak existuj\u00ed zv\u00fd\u0161en\u00e9 po\u017eadavky na stabilitu, \u00farove\u0148 funkc\u00ed a v\u00fdvoj, stoj\u00ed za to zam\u011b\u0159it se na Ingress s NGINX Plus a placen\u00fdm p\u0159edplatn\u00fdm. Kong m\u00e1 velmi bohatou sadu plugin\u016f (a t\u00edm p\u00e1dem tak\u00e9 vlastnost\u00ed, kter\u00e9 poskytuj\u00ed), p\u0159i\u010dem\u017e v placen\u00e9 verzi je jich dokonce je\u0161t\u011b v\u00edc. Nab\u00edz\u00ed \u0161irok\u00e9 mo\u017enosti pro fungov\u00e1n\u00ed jako API Gateway, dynamickou konfiguraci na z\u00e1klad\u011b CRD zdroj\u016f, a tak\u00e9 z\u00e1kladn\u00ed slu\u017eby Kubernetes.<\/p>\n<p>P\u0159i vy\u0161\u0161\u00edch po\u017eadavc\u00edch na vyva\u017eov\u00e1n\u00ed a metody autorizace se pod\u00edvejte na Traefik a HAProxy. Jsou to projekty Open Source, kter\u00e9 byly prov\u011b\u0159eny l\u00e9ty, jsou velmi stabiln\u00ed a aktivn\u011b se vyv\u00edjej\u00ed. Contour je na trhu u\u017e p\u00e1r let, ale st\u00e1le vypad\u00e1 p\u0159\u00edli\u0161 mlad\u011b a m\u00e1 pouze z\u00e1kladn\u00ed funkce p\u0159idan\u00e9 nad Envoy. Pokud m\u00e1te po\u017eadavky na existenci\/integraci WAF p\u0159ed aplikac\u00ed, stoj\u00ed za to se pod\u00edvat na Ingress od Kubernetes nebo HAProxy.<\/p>\n<p>Nejbohat\u0161\u00ed na funkce jsou produkty postaven\u00e9 na Envoy, zejm\u00e9na Istio. P\u0159edstavuje komplexn\u00ed \u0159e\u0161en\u00ed, kter\u00e9 \"m\u016f\u017ee v\u0161echno\", co\u017e v\u0161ak znamen\u00e1 tak\u00e9 v\u00fdrazn\u011b vy\u0161\u0161\u00ed prah pro konfiguraci\/spu\u0161t\u011bn\u00ed\/administraci ne\u017e u jin\u00fdch \u0159e\u0161en\u00ed.<\/p>\n<p>Jako standardn\u00ed ovlada\u010d jsme vybrali a st\u00e1le pou\u017e\u00edv\u00e1me Ingress od Kubernetes, kter\u00fd pokr\u00fdv\u00e1 80\u201490% pot\u0159eb. Je dostate\u010dn\u011b spolehliv\u00fd, snadno se konfiguruje a roz\u0161i\u0159uje. V obecn\u00e9m p\u0159\u00edpad\u011b, p\u0159i nep\u0159\u00edtomnosti specifick\u00fdch po\u017eadavk\u016f, by m\u011bl vyhovovat v\u011bt\u0161in\u011b cluster\u016f\/aplikac\u00ed. Z podobn\u011b univerz\u00e1ln\u00edch a relativn\u011b jednoduch\u00fdch produkt\u016f bych doporu\u010dil Traefik a HAProxy.<\/p>\n<h2>P.S.<\/h2>\n<p>\nP\u0159e\u010dt\u011bte si tak\u00e9 n\u00e1\u0161 blog:<\/p>\n<ul>\n<li> \u201eZp\u011bt k mikroslu\u017eb\u00e1m s Istio\u201c: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438426\/\">\u010d\u00e1st 1 (sezn\u00e1men\u00ed se s hlavn\u00edmi funkcemi)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">\u010d\u00e1st 2 (sm\u011brov\u00e1n\u00ed, spr\u00e1va provozu)<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/443668\/\">\u010d\u00e1st 3 (autentizace a autorizace)<\/a><\/noindex>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445596\/\">Kubernetes tipy a triky: personalizovan\u00e9 chybov\u00e9 str\u00e1nky v NGINX Ingress<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/427745\/\">Kubernetes tipy &amp; triky: p\u0159\u00edstup k dev ploch\u00e1m<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0431\u0438\u0437\u043d\u0435\u0441 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a \u0432\u044b\u0431\u043e\u0440\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e Ingress-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043a\u043e\u0438\u0445 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23140,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31173","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=\"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.\" \/>\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\/cs\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u041e\u0431\u0437\u043e\u0440 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 Ingress \u0434\u043b\u044f Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes\" \/>\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-31T18:39:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:53+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\udd47P\u0159ehled a srovn\u00e1n\u00ed ovlada\u010d\u016f Ingress pro Kubernetes | ProHoster","description":"P\u0159i spu\u0161t\u011bn\u00ed clusteru Kubernetes pro.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u041e\u0431\u0437\u043e\u0440 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 Ingress \u0434\u043b\u044f Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0434\u043b\u044f.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-i-sravnenie-kontrollerov-ingress-dlya-kubernetes","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-31T18:39:53+00:00","article:modified_time":"2019-10-31T18:39:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31173","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-21 04:53:04","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:21:32","updated":"2026-01-21 04:53:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=31173"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/23140"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=31173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=31173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=31173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}