{"id":38369,"date":"2019-10-31T22:23:18","date_gmt":"2019-10-31T19:23:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes\/"},"modified":"2019-10-31T22:23:18","modified_gmt":"2019-10-31T19:23:18","slug":"anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","title":{"rendered":"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Przyp. t\u0142um.<\/b>: Autorem oryginalnego materia\u0142u jest Henning Jacobs z firmy Zalando. Stworzy\u0142 on nowy interfejs webowy do pracy z Kubernetes, kt\u00f3ry jest reklamowany jako \u201ekubectl dla webu\u201d. Dlaczego pojawi\u0142 si\u0119 nowy projekt Open Source i jakimi kryteriami nie spe\u0142ni\u0142y istniej\u0105ce rozwi\u0105zania \u2014 przeczytaj w jego artykule.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/82abbfbfaeb30adb000b749cc97809e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW tej publikacji omawiam r\u00f3\u017cne interfejsy webowe Kubernetes z otwartym kodem \u017ar\u00f3d\u0142owym, przedstawiam swoje wymagania dotycz\u0105ce uniwersalnego UI i opowiadam, dlaczego go opracowa\u0142em <noindex><a rel=\"nofollow\" href=\"https:\/\/codeberg.org\/hjacobs\/kube-web-view\/\">. Autorem tego artyku\u0142u i samego narz\u0119dzia jest Henning Jacobs z firmy Zalando, kt\u00f3ry w\u0142a\u015bnie pozycjonowa\u0142 nowink\u0119 jako \u201ekubectl dla sieci\u201d. Chcia\u0142 stworzy\u0107 narz\u0119dzie z wygodnymi mo\u017cliwo\u015bciami do interakcji w formacie wsparcia technicznego (na przyk\u0142ad szybko pokaza\u0107 problem za pomoc\u0105 linku internetowego) i do reagowania na incydenty, szukania problem\u00f3w w wielu klastrach jednocze\u015bnie. Jego dzie\u0142o wci\u0105\u017c si\u0119 rozwija (g\u0142\u00f3wnie dzi\u0119ki samemu autorowi).<\/a><\/noindex> \u2014 interfejs, kt\u00f3ry ma na celu u\u0142atwienie wsparcia i rozwi\u0105zywania problem\u00f3w w wielu klastrach jednocze\u015bnie.<\/p>\n<h2>Scenariusze u\u017cycia<\/h2>\n<p>\nW Zalando obs\u0142ugujemy du\u017c\u0105 liczb\u0119 u\u017cytkownik\u00f3w Kubernetes (ponad 900) oraz klastr\u00f3w (ponad 100). Istnieje kilka typowych przypadk\u00f3w u\u017cycia, w kt\u00f3rych bardzo przyda\u0142by si\u0119 specjalistyczny narz\u0119dzie webowe:<\/p>\n<ol>\n<li> komunikacja z kolegami w ramach wsparcia;<\/li>\n<li> reakcja na incydenty i badanie ich przyczyn.<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Wsparcie<\/h3>\n<p>\nZ mojego do\u015bwiadczenia, komunikacja w ramach wsparcia cz\u0119sto wygl\u0105da nast\u0119puj\u0105co:<\/p>\n<p><i>\u2014 Pom\u00f3\u017ccie, nasz serwis XYZ jest niedost\u0119pny!<br \/>\n\u2014 Co widzisz, wykonuj\u0105c <code>kubectl describe ingress ...<\/code>?<\/i><\/p>\n<p>Lub co\u015b podobnego dla CRD:<\/p>\n<p><i>\u2014 Mam jaki\u015b problem z serwisem identyfikacji\u2026<br \/>\n\u2014 A co wy\u015bwietla polecenie <code>kubectl describe platformcredentialsset ...<\/code>?<\/i><\/p>\n<p>Tego typu komunikacja zazwyczaj sprowadza si\u0119 do wprowadzania r\u00f3\u017cnych wariacji polecenia <code>kubectl<\/code> w celu ustalenia problemu. W efekcie obie strony rozmowy musz\u0105 nieustannie prze\u0142\u0105cza\u0107 si\u0119 mi\u0119dzy terminalem a czatem webowym, a tak\u017ce obserwuj\u0105 r\u00f3\u017cne sytuacje.<\/p>\n<p>Dlatego chcia\u0142bym, aby front-end webowy do Kubernetes umo\u017cliwia\u0142 nast\u0119puj\u0105ce:<\/p>\n<ul>\n<li> u\u017cytkownicy mogliby <b>wymienia\u0107 si\u0119 linkami<\/b> i obserwowa\u0107 to samo;<\/li>\n<li> pomaga\u0142by <b>unika\u0107 b\u0142\u0119d\u00f3w ludzkich<\/b> w wsparciu: na przyk\u0142ad nie wchodz\u0105c do niew\u0142a\u015bciwego klastra w wierszu polece\u0144, b\u0142\u0119d\u00f3w w poleceniach CLI itp.;<\/li>\n<li> umo\u017cliwia\u0142by <b>tworzenie w\u0142asnych widok\u00f3w<\/b> do wysy\u0142ania kolegom, tj. dodawanie kolumn etykiet, wy\u015bwietlanie wielu typ\u00f3w zasob\u00f3w na jednej stronie;<\/li>\n<li> w idealnym przypadku to narz\u0119dzie webowe powinno umo\u017cliwia\u0107 umieszczanie <b>\u201eg\u0142\u0119bokich\u201d link\u00f3w do konkretnych sekcji YAML<\/b> (na przyk\u0142ad wskazuj\u0105c na niew\u0142a\u015bciwy parametr, kt\u00f3ry powoduje awarie).<\/li>\n<\/ul>\n<p><\/p>\n<h3>Reagowanie na incydenty i analizy<\/h3>\n<p>\nReagowanie na incydenty w infrastrukturze wymaga sytuacyjnej \u015bwiadomo\u015bci, umiej\u0119tno\u015bci oceny wp\u0142ywu i poszukiwania wzorc\u00f3w w klastrach. Oto kilka przyk\u0142ad\u00f3w z \u017cycia wzi\u0119tych:<\/p>\n<ul>\n<li> w przypadku krytycznej awarii us\u0142ugi produkcyjnej pojawiaj\u0105 si\u0119 problemy i musisz <b>znale\u017a\u0107 wszystkie zasoby Kubernetes wed\u0142ug nazwy we wszystkich klastrach<\/b>, aby usun\u0105\u0107 usterk\u0119;<\/li>\n<li> w\u0119z\u0142y zaczynaj\u0105 si\u0119 wy\u0142\u0105cza\u0107 podczas skalowania, a ty musisz <b>znale\u017a\u0107 wszystkie pod\u2019y ze statusem \u201ePending\u201d we wszystkich klastrach<\/b>, aby oceni\u0107 rozmiar problemu;<\/li>\n<li> poszczeg\u00f3lni u\u017cytkownicy zg\u0142aszaj\u0105 problemy z DaemonSet rozlokowanym we wszystkich klastrach i nale\u017cy ustali\u0107, <b>czy problem ma charakter powszechny<\/b>.<\/li>\n<\/ul>\n<p>\nMoim standardowym rozwi\u0105zaniem w takich przypadkach jest co\u015b w stylu <code>for i in $clusters; do kubectl ...; done<\/code>. Oczywi\u015bcie mo\u017cna opracowa\u0107 narz\u0119dzie, kt\u00f3re zapewnia podobne mo\u017cliwo\u015bci.<\/p>\n<h2>Istniej\u0105ce interfejsy webowe Kubernetes<\/h2>\n<p>\n\u015awiat Open Source-owych interfejs\u00f3w webowych do Kubernetes nie jest zbyt obszerny*, wi\u0119c spr\u00f3bowa\u0142em zebra\u0107 dodatkowe informacje za pomoc\u0105 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/try_except_\/status\/1153543128365850625\">Twitter<\/a><\/noindex>:<\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/75c26a70ec886700db2a81b57d672538.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Moje wyja\u015bnienie ograniczonej liczby interfejs\u00f3w webowych dla Kubernetes: us\u0142ugi chmurowe i dostawcy Kubernetes zazwyczaj oferuj\u0105 w\u0142asne frontendy, w zwi\u0105zku z czym rynek \u201edobrych\u201d darmowych UI Kubernetes jest stosunkowo ma\u0142y.<\/i><\/p>\n<p>Dzi\u0119ki tweetowi dowiedzia\u0142em si\u0119 o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/herbrandson\/k8dash\">K8Dash<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/smpio\/kubernator\">Kubernator<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\">Octant<\/a><\/noindex>. Przyjrzyjmy si\u0119 im oraz innym istniej\u0105cym rozwi\u0105zaniom Open Source i spr\u00f3bujmy zrozumie\u0107, co one sob\u0105 reprezentuj\u0105.<\/p>\n<h2>K8Dash<\/h2>\n<p>\n<i>\u201eK8Dash to najprostszy spos\u00f3b na zarz\u0105dzanie klastrem Kubernetes.\u201d<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/112e362486a294a1a39706fc32124889.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/herbrandson\/k8dash\">K8Dash<\/a><\/noindex> nie\u017ale wygl\u0105da i dzia\u0142a szybko, ale ma kilka niedoci\u0105gni\u0119\u0107 dla wymienionych powy\u017cej scenariuszy u\u017cycia:<\/p>\n<ul>\n<li> Dzia\u0142a tylko w ramach jednego klastra.<\/li>\n<li> Sortowanie i filtrowanie s\u0105 mo\u017cliwe, ale nie maj\u0105 sta\u0142ych link\u00f3w.<\/li>\n<li> Brak wsparcia dla Custom Resource Definitions (CRDs).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernator<\/h2>\n<p>\n<i>\u201eKubernator to alternatywny UI dla Kubernetes. W przeciwie\u0144stwie do wysokopoziomowego panelu Kubernetes Dashboard, zapewnia niskopoziomow\u0105 kontrol\u0119 i doskona\u0142y przegl\u0105d wszystkich obiekt\u00f3w w klastrze z mo\u017cliwo\u015bci\u0105 tworzenia nowych, edytowania ich i rozwi\u0105zywania konflikt\u00f3w. B\u0119d\u0105c ca\u0142kowicie aplikacj\u0105 klienck\u0105 (jak kubectl), nie wymaga \u017cadnego backendu, z wyj\u0105tkiem samego API serwera Kubernetes, a tak\u017ce uwzgl\u0119dnia zasady dost\u0119pu do klastra.\u201d<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/230115c88206d57443067a5b44ee9f31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo do\u015b\u0107 dok\u0142adny opis <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/smpio\/kubernator\">Kubernator<\/a><\/noindex>. Niestety, brakuje mu kilku mo\u017cliwo\u015bci:<\/p>\n<ul>\n<li> Obs\u0142uguje tylko jeden klaster.<\/li>\n<li> Nie ma trybu przegl\u0105dania w widoku listy (tzn. nie mo\u017cna wy\u015bwietli\u0107 wszystkich pod\u2019y ze statusem \u201ePending\u201d).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernetes Dashboard<\/h2>\n<p>\n<i>\u201eKubernetes Dashboard to uniwersalny interfejs webowy dla klastr\u00f3w Kubernetes. Umo\u017cliwia u\u017cytkownikom zarz\u0105dzanie aplikacjami dzia\u0142aj\u0105cymi w klastrze oraz rozwi\u0105zywanie problem\u00f3w, a tak\u017ce zarz\u0105dzanie samym klastrem.\u201d<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/10b37d00ed4c6cbb05a0eb9069a4371f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNiestety, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/dashboard\">Kubernetes Dashboard<\/a><\/noindex> nie pomaga szczeg\u00f3lnie w moich zadaniach zwi\u0105zanych z wsparciem i reagowaniem na incydenty, poniewa\u017c:<\/p>\n<ul>\n<li> brak sta\u0142ych link\u00f3w, na przyk\u0142ad podczas filtrowania zasob\u00f3w lub zmiany kolejno\u015bci sortowania;<\/li>\n<li> brak prostego sposobu na filtrowanie wed\u0142ug statusu \u2014 na przyk\u0142ad, aby zobaczy\u0107 wszystkie pod\u2019y ze statusem \u201ePending\u201d;<\/li>\n<li> obs\u0142ugiwany jest tylko jeden klaster;<\/li>\n<li> nie s\u0105 obs\u0142ugiwane CRD (ta funkcja jest w trakcie opracowywania);<\/li>\n<li> brak kolumn u\u017cytkownika (na przyk\u0142ad kolumn z etykietami typu <code>kubectl -L<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernetes Operational View (kube-ops-view)<\/h2>\n<p>\n<i>\u201ePanel systemowy do monitorowania przestrzeni klastr\u00f3w K8s.\u201d<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/0d63fcce4d54fbf5b40b15ad195e8ba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-ops-view\">Kubernetes Operational View<\/a><\/noindex> ca\u0142kowicie inne podej\u015bcie: to narz\u0119dzie tylko pokazuje w\u0119z\u0142y klastra i pod\u2019y za pomoc\u0105 WebGL, bez jakichkolwiek szczeg\u00f3\u0142owych informacji tekstowych o obiektach. Doskonale nadaje si\u0119 do szybkiego przegl\u0105du stanu klastra (\u201eczy pod\u2019y upadaj\u0105?\u201d), ale nie nadaje si\u0119 do opisanych powy\u017cej przypadk\u00f3w u\u017cycia w zakresie wsparcia i reagowania na incydenty.<\/p>\n<p><i>* <b>Przyp. t\u0142um.<\/b>: W tym sensie mo\u017ce Ci\u0119 r\u00f3wnie\u017c zainteresowa\u0107 nasza wtyczka <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/grafana-statusmap\">grafana-statusmap<\/a><\/noindex>, o kt\u00f3rej pisali\u015bmy szczeg\u00f3\u0142owo w <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423851\/\">w tym artykule<\/a><\/noindex>.<\/i><\/p>\n<h2>Kubernetes Resource Report (kube-resource-report)<\/h2>\n<p>\n<i>\u201eZbieraj informacje o zapytaniach dotycz\u0105cych zasob\u00f3w pod\u2019\u00f3w i klastra Kubernetes, por\u00f3wnuj je z zu\u017cyciem zasob\u00f3w i generuj statyczny HTML\u201d.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/11e64094ca3fb317959ab03ec7c07e0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-resource-report\/\">Raport o zasobach Kubernetes<\/a><\/noindex> generuje statyczne raporty HTML dotycz\u0105ce wykorzystania zasob\u00f3w i podzia\u0142u koszt\u00f3w wed\u0142ug zespo\u0142\u00f3w\/aplikacji w klastrach. Raport w pewnym stopniu jest przydatny w wsparciu i reagowaniu na incydenty, poniewa\u017c pozwala szybciej zlokalizowa\u0107 klaster, w kt\u00f3rym wdro\u017cono aplikacj\u0119.<\/p>\n<p><i><b>Przyp. t\u0142um.<\/b>: W przegl\u0105dzie informacji o podziale zasob\u00f3w i ich kosztach u dostawc\u00f3w chmurowych mo\u017ce r\u00f3wnie\u017c okaza\u0107 si\u0119 przydatny serwis i narz\u0119dzie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubecost.com\/\">Kubecost<\/a><\/noindex>, kt\u00f3rego przegl\u0105d <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/466659\/\">niedawno opublikowali\u015bmy<\/a><\/noindex>.<\/i><\/p>\n<h2>Octant<\/h2>\n<p>\n<i>\u201eRozszerzalna platforma internetowa dla deweloper\u00f3w, maj\u0105ca na celu lepsze zrozumienie z\u0142o\u017cono\u015bci klastr\u00f3w Kubernetes.\u201d<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/0f949ec05a6b403e7093ee38648eb493.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\">Octant<\/a><\/noindex>, stworzony w VMware, to nowy produkt, o kt\u00f3rym dowiedzia\u0142em si\u0119 stosunkowo niedawno. Umo\u017cliwia wygodne badanie klastra na lokalnej maszynie (s\u0105 nawet wizualizacje), jednak porusza problematyk\u0119 wsparcia i reakcji na incydenty tylko w ograniczonym zakresie. Wady Octant:<\/p>\n<ul>\n<li> Brak mo\u017cliwo\u015bci wyszukiwania w klastrach.<\/li>\n<li> Dzia\u0142a tylko na lokalnej maszynie (nie jest wdra\u017cany w klastrze).<\/li>\n<li> Brak mo\u017cliwo\u015bci sortowania\/filtracji obiekt\u00f3w (obs\u0142ugiwany jest tylko selektor etykiet).<\/li>\n<li> Nie mo\u017cna definiowa\u0107 kolumn u\u017cytkownika.<\/li>\n<li> Nie mo\u017cna wy\u015bwietli\u0107 listy obiekt\u00f3w wed\u0142ug przestrzeni nazw.<\/li>\n<\/ul>\n<p>\nMia\u0142em r\u00f3wnie\u017c problemy z stabilno\u015bci\u0105 dzia\u0142ania Octant z klastrami Zalando: w niekt\u00f3rych CRD <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\/issues\/72\">wiesza\u0142 si\u0119.<\/a><\/noindex>.<\/p>\n<h2>Przedstawiam Kubernetes Web View<\/h2>\n<p>\n<i>\u201ekubectl dla internetu\u201d.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/e7b0eb0650de76516bbe05305b9dea9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnalizuj\u0105c dost\u0119pne opcje interfejs\u00f3w dla Kubernetes, postanowi\u0142em stworzy\u0107 nowy: <noindex><a rel=\"nofollow\" href=\"https:\/\/codeberg.org\/hjacobs\/kube-web-view\/\">. Autorem tego artyku\u0142u i samego narz\u0119dzia jest Henning Jacobs z firmy Zalando, kt\u00f3ry w\u0142a\u015bnie pozycjonowa\u0142 nowink\u0119 jako \u201ekubectl dla sieci\u201d. Chcia\u0142 stworzy\u0107 narz\u0119dzie z wygodnymi mo\u017cliwo\u015bciami do interakcji w formacie wsparcia technicznego (na przyk\u0142ad szybko pokaza\u0107 problem za pomoc\u0105 linku internetowego) i do reagowania na incydenty, szukania problem\u00f3w w wielu klastrach jednocze\u015bnie. Jego dzie\u0142o wci\u0105\u017c si\u0119 rozwija (g\u0142\u00f3wnie dzi\u0119ki samemu autorowi).<\/a><\/noindex>. W ko\u0144cu potrzebuj\u0119 tylko ca\u0142ej mocy <code>kubectl<\/code> w internecie, a mianowicie:<\/p>\n<ul>\n<li> dost\u0119pno\u015bci wszystkich operacji (tylko do odczytu), w kt\u00f3rych u\u017cytkownicy preferuj\u0105 u\u017cywa\u0107 kubectl;<\/li>\n<li> wszystkie URL-e musz\u0105 by\u0107 sta\u0142e i przedstawia\u0107 stron\u0119 w oryginalnej formie, aby koledzy mogli nimi dzieli\u0107 si\u0119 i u\u017cywa\u0107 w innych narz\u0119dziach;<\/li>\n<li> wsparcia dla wszystkich obiekt\u00f3w Kubernetes, co pozwoli rozwi\u0105za\u0107 problem ka\u017cdego typu;<\/li>\n<li> listy zasob\u00f3w powinny by\u0107 mo\u017cliwe do pobrania do dalszej pracy (w arkuszach kalkulacyjnych, narz\u0119dziach CLI, takich jak <code>grep<\/code>) i przechowywania (na przyk\u0142ad w celu postmortem);<\/li>\n<li> wsparcia dla filtrowania zasob\u00f3w wed\u0142ug etykiet (analogicznie do <code>kubectl get .. -l<\/code>);<\/li>\n<li> mo\u017cliwo\u015bci tworzenia zgrupowanych list r\u00f3\u017cnych typ\u00f3w zasob\u00f3w (analogicznie do <code>kubectl get all<\/code>) w celu uzyskania og\u00f3lnego obrazu operacyjnego w\u015br\u00f3d koleg\u00f3w (na przyk\u0142ad w trakcie reakcji na incydent);<\/li>\n<li> mo\u017cliwo\u015bci dodawania konfigurowalnych \u201einteligentnych\u201d g\u0142\u0119bokich link\u00f3w do innych narz\u0119dzi, takich jak panele monitorowania, logi, rejestry aplikacji itp. w celu u\u0142atwienia wyszukiwania\/usuwania b\u0142\u0119d\u00f3w i reakcji na incydenty;<\/li>\n<li> frontend powinien by\u0107 maksymalnie prosty (czysty HTML), aby unikn\u0105\u0107 przypadkowych problem\u00f3w, takich jak zawieszenie JavaScript;<\/li>\n<li> wsparcia dla wielu klastr\u00f3w w celu uproszczenia interakcji podczas zdalnych konsultacji (na przyk\u0142ad, aby zapami\u0119ta\u0107 tylko jeden URL);<\/li>\n<li> w miar\u0119 mo\u017cliwo\u015bci powinien u\u0142atwia\u0107 analiz\u0119 sytuacyjn\u0105 (na przyk\u0142ad z linkami do pobrania zasob\u00f3w ze wszystkich klastr\u00f3w\/przestrzeni nazw);<\/li>\n<li> dodatkowe mo\u017cliwo\u015bci tworzenia elastycznych link\u00f3w oraz wyr\u00f3\u017cniania informacji tekstowej, na przyk\u0142ad umo\u017cliwiaj\u0105ce wskazywanie kolegom na konkretn\u0105 sekcj\u0119 w opisie zasobu (wiersz w YAML);<\/li>\n<li> mo\u017cliwo\u015b\u0107 dostosowania do wymaga\u0144 konkretnego klienta, na przyk\u0142ad umo\u017cliwiaj\u0105ca tworzenie specjalnych szablon\u00f3w wy\u015bwietlania dla CRD, w\u0142asnych widok\u00f3w tabelowych, zmienianie styl\u00f3w CSS;<\/li>\n<li> narz\u0119dzia do dalszego bada\u0144 w wierszu polece\u0144 (na przyk\u0142ad, pokazuj\u0105c pe\u0142ne komendy <code>kubectl<\/code>, gotowe do skopiowania);<\/li>\n<\/ul>\n<p>\nPoza zadaniami do rozwi\u0105zania w Kubernetes Web View <i>(non-goals)<\/i> pozosta\u0142y:<\/p>\n<ul>\n<li> abstrahowanie obiekt\u00f3w Kubernetes;<\/li>\n<li> zarz\u0105dzanie aplikacjami (na przyk\u0142ad zarz\u0105dzanie deployment\u2019ami, Helm-chartami itp.);<\/li>\n<li> operacje zapisu (musz\u0105 by\u0107 realizowane przez bezpieczne narz\u0119dzia CI\/CD i\/lub GitOps);<\/li>\n<li> \u0142adny interfejs (JavaScript, motywy itp.);<\/li>\n<li> wizualizacje (zob. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-ops-view\">kube-ops-view<\/a><\/noindex>);<\/li>\n<li> analiza koszt\u00f3w (zob. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-resource-report\/\">kube-resource-report<\/a><\/noindex>).<\/li>\n<\/ul>\n<p>\nJak Kubernetes Web View pomaga w utrzymaniu i reagowaniu na incydenty?<\/p>\n<h3>Wsparcie<\/h3>\n<p><\/p>\n<ul>\n<li> <b>Wszystkie linki s\u0105 sta\u0142e<\/b>, co u\u0142atwia wymian\u0119 informacji z kolegami.<\/li>\n<li> Mo\u017cna tworzy\u0107 <b>w\u0142asne widoki<\/b>, na przyk\u0142ad, aby wy\u015bwietli\u0107 wszystkie Deployment\u2019y i Pod\u2019y z okre\u015blon\u0105 etykiet\u0105 w dw\u00f3ch konkretnych klastrach (wiele nazw klastr\u00f3w i typ\u00f3w zasob\u00f3w mo\u017cna okre\u015bli\u0107 w \u0142\u0105czu, oddzielaj\u0105c je przecinkami).<\/li>\n<li> Mo\u017cna odwo\u0142ywa\u0107 si\u0119 do <b>okre\u015blonych wierszy w pliku YAML<\/b> obiektu, wskazuj\u0105c na potencjalne problemy ze specyfikacj\u0105 obiektu.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/9e0b3ab31181f8d93323c413d9185888.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Wyszukiwanie w klastrach w Kubernetes Web View<\/i><\/p>\n<h3>Reagowanie na incydenty<\/h3>\n<p><\/p>\n<ul>\n<li> <b>Globalne wyszukiwanie<\/b> <i>(global search)<\/i> umo\u017cliwia wyszukiwanie obiekt\u00f3w we wszystkich klastrach.<\/li>\n<li> <b>Widoki w postaci list<\/b> mog\u0105 wy\u015bwietla\u0107 wszystkie obiekty z okre\u015blonym stanem\/kolumn\u0105 we wszystkich klastrach (na przyk\u0142ad, musimy znale\u017a\u0107 wszystkie pod\u2019y ze statusem \u201ePending\u201d).<\/li>\n<li> <b>Listy obiekt\u00f3w mo\u017cna pobiera\u0107<\/b> w formacie warto\u015bci oddzielonych tabulacj\u0105 (TSV), do dalszej analizy.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.readthedocs.io\/en\/latest\/customization.html#external-links\">Konfigurowalne zewn\u0119trzne linki<\/a><\/noindex> umo\u017cliwiaj\u0105 prze\u0142\u0105czanie si\u0119 na odpowiednie pulpity nawigacyjne i inne narz\u0119dzia.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Zapowied\u017a interfejsu webowego Kubernetes Web View (i kr\u00f3tki przegl\u0105d innych interfejs\u00f3w UI webowych dla Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/ac275aa6b234988f40a2d0cde2ac4870.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes Web View: lista pod\u2019\u00f3w ze statusem \u201ePending\u201d we wszystkich klastrach<\/i><\/p>\n<p>Je\u015bli chcesz spr\u00f3bowa\u0107 Kubernetes Web View, rekomenduj\u0119 zapozna\u0107 si\u0119 z <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.readthedocs.io\/\">dokumentacj\u0105<\/a><\/noindex> lub zobaczy\u0107 <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.demo.j-serv.de\/\">na \u017cywo wersj\u0119 demonstracyjn\u0105<\/a><\/noindex>.<\/p>\n<p>Oczywi\u015bcie, interfejs m\u00f3g\u0142by by\u0107 lepszy, a na razie Kubernetes Web View jest narz\u0119dziem dla \u201ezaawansowanych u\u017cytkownik\u00f3w\u201d, kt\u00f3rzy nie boj\u0105 si\u0119 r\u0119cznie manipulowa\u0107 \u015bcie\u017ckami URL, je\u015bli zajdzie taka potrzeba. Je\u015bli masz uwagi\/uzupe\u0142nienia\/propozycje, prosz\u0119 skontaktuj si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/try_except_\">ze mn\u0105 na Twitterze<\/a><\/noindex>!<\/p>\n<p>Ten artyku\u0142 jest kr\u00f3tk\u0105 opowie\u015bci\u0105 o przes\u0142ankach, kt\u00f3re doprowadzi\u0142y do stworzenia Kubernetes Web View. Wkr\u00f3tce pojawi\u0105 si\u0119 inne! <i>(<b>Przyp. t\u0142um.<\/b>: Mo\u017cna ich oczekiwa\u0107 w <noindex><a rel=\"nofollow\" href=\"https:\/\/srcco.de\/\">blogu autora<\/a><\/noindex>.)<\/i><\/p>\n<h2>P.S. od t\u0142umacza<\/h2>\n<p>\nPrzeczytaj tak\u017ce na naszym blogu:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox i inne pow\u0142oki konsolowe dla Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/462707\/\">Narz\u0119dzia dla programist\u00f3w aplikacji dzia\u0142aj\u0105cych w Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/467433\/\">Pojawi\u0142o si\u0119 narz\u0119dzie konsolowe kubelive do interaktywnej pracy z Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/330198\/\">Przydatne narz\u0119dzia do pracy z Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u043e\u0432\u044b\u0439 Open Source-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u043b\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u044c\u0435. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b Kubernetes \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28800,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38369","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.\" \/>\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\/pl\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\u0410\u043d\u043e\u043d\u0441 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Kubernetes Web View (\u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0434\u0440\u0443\u0433\u0438\u0445 web UI \u0434\u043b\u044f Kubernetes) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-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-31T19:23:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:23:18+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\udd47Zapowied\u017a interfejsu webowego Kubernetes Web View (oraz kr\u00f3tki przegl\u0105d innych interfejs\u00f3w webowych dla Kubernetes) | ProHoster","description":"Przyp. t\u0142um.: Autor oryginalnego materia\u0142u \u2014 Henning Jacobs z firmy Zalando. Stworzy\u0142 on nowy interfejs webowy do pracy z Kubernetes, kt\u00f3ry jest promowany jako \u201ekubectl dla weba\u201d.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\u0410\u043d\u043e\u043d\u0441 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Kubernetes Web View (\u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0434\u0440\u0443\u0433\u0438\u0445 web UI \u0434\u043b\u044f Kubernetes) | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-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-31T19:23:18+00:00","article:modified_time":"2019-10-31T19:23:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38369","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-23 21:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:10:24","updated":"2026-01-23 21:44:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/38369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=38369"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/38369\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/28800"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=38369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=38369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=38369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}