{"id":89143,"date":"2020-07-19T07:42:22","date_gmt":"2020-07-19T05:42:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/avtogeneracziya-sekretov-v-helm"},"modified":"2020-07-19T07:42:22","modified_gmt":"2020-07-19T05:42:22","slug":"avtogeneracziya-sekretov-v-helm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/avtogeneracziya-sekretov-v-helm","title":{"rendered":"Automatick\u00e1 generace tajemstv\u00ed v Helmu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Automatick\u00e1 generace tajemstv\u00ed v Helmu\" src=\"\/wp-content\/uploads\/2020\/07\/e2ba6ab1bf5b50c7cfcbf62d56ff15da.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>T\u00fdm <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/containers\/\">Kubernetes aaS od Mail.ru<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/workfloplus\/reusing-auto-generated-helm-secrets-a7426403d4bb\">p\u0159elo\u017eila kr\u00e1tkou pozn\u00e1mku<\/a><\/noindex> o tom, jak automaticky generovat tajn\u00e9 kl\u00ed\u010de Helm p\u0159i aktualizaci. N\u00ed\u017ee je text od autora \u010dl\u00e1nku \u2014 technick\u00e9ho \u0159editele Intoware, spole\u010dnosti vyv\u00edjej\u00edc\u00ed SaaS \u0159e\u0161en\u00ed. <\/p>\n<p>Kontejnery jsou skv\u011bl\u00e9. Zpo\u010d\u00e1tku jsem byl proti nim (hanba p\u0159iznat), ale te\u010f pln\u011b podporuji pou\u017e\u00edv\u00e1n\u00ed t\u00e9to technologie. Pokud to \u010dtete, douf\u00e1m, \u017ee jste \u00fasp\u011b\u0161n\u011b pluli po mo\u0159\u00edch Docker, uv\u011bdomili si v\u00fdhody Kubernetes a v\u00fdrazn\u011b si usnadnili \u017eivot s Helm.<\/p>\n<p>Nicm\u00e9n\u011b n\u011bkter\u00e9 v\u011bci jsou jasn\u011b slo\u017eit\u011bj\u0161\u00ed, ne\u017e by m\u011bly b\u00fdt.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJak automaticky generovat tajn\u00e9 kl\u00ed\u010de p\u0159i aktualizaci?<\/p>\n<p>Tajn\u00fd kl\u00ed\u010d Kubernetes je zdroj, kter\u00fd obsahuje p\u00e1ry kl\u00ed\u010d\/hodnota, kter\u00e9 chcete pou\u017e\u00edt ve sv\u00e9m k\u00f3du. M\u016f\u017ee to b\u00fdt p\u0159ipojen\u00ed k datab\u00e1zi, e-mailov\u00e9 hesla atd. Pou\u017eit\u00edm tajn\u00fdch kl\u00ed\u010d\u016f vytv\u00e1\u0159\u00edte jasn\u00e9 odd\u011blen\u00ed mezi k\u00f3dem a nastaven\u00edmi, co\u017e umo\u017e\u0148uje snadno konfigurovat r\u016fzn\u00e1 nasazen\u00ed bez zm\u011bny k\u00f3dov\u00e9 z\u00e1kladny.<\/p>\n<p>\u010casto se setk\u00e1v\u00e1me se situac\u00ed, kdy dva moduly mus\u00ed komunikovat pomoc\u00ed spole\u010dn\u00e9ho kl\u00ed\u010de. Nikdo mimo cluster by nem\u011bl tento kl\u00ed\u010d zn\u00e1t, proto\u017ee je ur\u010den pro spojen\u00ed \"z jednoho na druh\u00fd\" uvnit\u0159 clustera.<\/p>\n<h2>Vytv\u00e1\u0159en\u00ed tajn\u00fdch kl\u00ed\u010d\u016f<\/h2>\n<p>\nObvykle, abyste vytvo\u0159ili tajn\u00fd kl\u00ed\u010d v Helmu, mus\u00edte:<\/p>\n<ul>\n<li>popisovat tajn\u00fd kl\u00ed\u010d v souboru hodnot;<\/li>\n<li>p\u0159epsat ho b\u011bhem procesu nasazen\u00ed;<\/li>\n<li>odkazovat na n\u011bj uvnit\u0159 nasazen\u00ed\/podu;<\/li>\n<li>\u2026 profit!<\/li>\n<\/ul>\n<p>\nObvykle to vypad\u00e1 p\u0159ibli\u017en\u011b takto:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Secret\nmetadata:\n  name: my-super-awesome-api-key\ntype: Opaque\nstringData:\n  apiKey: {{ .Values.MyApiKeySecret | quote }}\n<\/code><\/pre>\n<p>\n<i>Jednoduch\u00fd tajn\u00fd kl\u00ed\u010d Kubernetes, kter\u00fd pou\u017e\u00edv\u00e1 hodnoty z values.yml<\/i><\/p>\n<p>Ale \u0159ekn\u011bme, \u017ee nechcete zad\u00e1vat sv\u016fj tajn\u00fd kl\u00ed\u010d v souboru hodnot.<\/p>\n<p>Existuje mnoho variant, kdy pro nasazen\u00ed pot\u0159ebujete spole\u010dn\u00fd kl\u00ed\u010d, kter\u00fd by m\u011bl b\u00fdt vygenerov\u00e1n b\u011bhem instalace.<\/p>\n<p>V uveden\u00e9m v\u00fd\u0161e p\u0159\u00edkladu se sd\u00edlen\u00edm mezi moduly nen\u00ed \u017e\u00e1douc\u00ed sd\u00edlet tajn\u00fd kl\u00ed\u010d mimo nasazen\u00ed. Proto je velmi \u017e\u00e1douc\u00ed, aby Helm m\u011bl mechanismy pro automatick\u00e9 vytvo\u0159en\u00ed tajn\u00e9ho kl\u00ed\u010de bez nutnosti jej p\u0159\u00edmo zad\u00e1vat.<\/p>\n<h2>Huky<\/h2>\n<p>\nHooky umo\u017e\u0148uj\u00ed spou\u0161t\u011bt k\u00f3d na ur\u010dit\u00fdch m\u00edstech b\u011bhem procesu instalace. M\u016f\u017ee b\u00fdt \u00fakol pro nastaven\u00ed, kter\u00fd je t\u0159eba spustit po prvn\u00edm instalaci, nebo m\u016f\u017ee b\u00fdt pot\u0159eba prov\u00e9st \u010di\u0161t\u011bn\u00ed p\u0159ed jakoukoliv aktualizac\u00ed.<\/p>\n<p>Pro na\u0161i pot\u0159ebu p\u0159id\u00e1n\u00ed kl\u00ed\u010de, kter\u00fd je generov\u00e1n b\u011bhem instalace, jsou p\u0159edinstala\u010dn\u00ed hooky ide\u00e1ln\u00ed. Ale je tu jeden h\u00e1\u010dek: nem\u016f\u017eete automaticky vygenerovat tajemstv\u00ed jednou p\u0159i aktualizaci. Hooky budou fungovat p\u0159i ka\u017ed\u00e9 aktualizaci.<\/p>\n<p>Pokud jste vygenerovali sv\u00e9 tajemstv\u00ed a va\u0161e prvn\u00ed instalace je\u0161t\u011b neprob\u011bhla, p\u0159esta\u0148te \u010d\u00edst, p\u0159edinstala\u010dn\u00ed hook je pro v\u00e1s ide\u00e1ln\u00ed.<\/p>\n<p>Ale pokud je tajemstv\u00ed sou\u010d\u00e1st\u00ed aktualizace (mo\u017en\u00e1 nov\u00e9 funkce, kter\u00e1 nebyla k dispozici b\u011bhem instalace), je nep\u0159\u00edjemn\u00e9, \u017ee nen\u00ed mo\u017en\u00e9 vytvo\u0159it p\u0159edinstala\u010dn\u00ed hook, kter\u00fd by se spustil pouze jednou.<\/p>\n<h2>Funkce<\/h2>\n<p>\nFunkce Helm umo\u017e\u0148uje p\u0159id\u00e1vat r\u016fzn\u00e9 prvky skript\u016f do nasazovac\u00edch sc\u00e9n\u00e1\u0159\u016f.<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Secret\nmetadata:\n  name: my-super-awesome-api-key\ntype: Opaque\nstringData:\n  apiKey: {{ uuidv4 | quote }} #Vygenerujte nov\u00fd UUID a citujte jej\n<\/code><\/pre>\n<p>\nV tomto p\u0159\u00edkladu je hodnotou tajemstv\u00ed apiKey nov\u00fd UUID generovan\u00fd b\u011bhem instalace.<\/p>\n<p>Helm obsahuje opravdu rozs\u00e1hlou knihovnu funkc\u00ed, kter\u00e1 vyu\u017e\u00edv\u00e1 \u00fa\u017easn\u00e9 \u0161ablonovac\u00ed funkce GO a knihovnu funkc\u00ed Sprig pro vytv\u00e1\u0159en\u00ed p\u0159izp\u016fsobiteln\u00fdch nasazen\u00ed.<\/p>\n<h3>Funkce Lookup<\/h3>\n<p>\nVe verzi Helm 3.1 byla p\u0159id\u00e1na <noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/docs\/chart_template_guide\/functions_and_pipelines\/\">funkce Lookup<\/a><\/noindex>, kter\u00e1 umo\u017e\u0148uje dot\u00e1zat se na existuj\u00edc\u00ed nasazen\u00ed a:<\/p>\n<ul>\n<li>ov\u011b\u0159it existenci zdroj\u016f;<\/li>\n<li>vr\u00e1tit hodnotu existuj\u00edc\u00edho zdroje pro dal\u0161\u00ed pou\u017eit\u00ed.<\/li>\n<\/ul>\n<p>\nPou\u017eit\u00edm obou t\u011bchto mo\u017enost\u00ed m\u016f\u017eeme vytvo\u0159it jednor\u00e1zov\u00e9 dynamicky generovan\u00e9 tajemstv\u00ed!<\/p>\n<pre><code class=\"plaintext\"># 1. \u0417\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u0430 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 $secret\n{{- $secret := (lookup &quot;v1&quot; &quot;Secret&quot; .Release.Namespace &quot;some-awesome-secret&quot; -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: some-awesome-secret\ntype: Opaque\n\n# 2. \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0432\u0437\u044f\u0442\u044c \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a apiKey (\u0441\u0435\u043a\u0440\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Base64, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447 &quot;data&quot;)\n{{ if $secret -}}\ndata:\n  apiKey: {{ $secret.data.apiKey }}\n\n# 3. \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0433\u043e (\u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 &quot;stringData&quot;, \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)!\n{{ else -}}\nstringData:\n  apiKey: {{ uuidv4 | quote }}\n{{ end }}\n<\/code><\/pre>\n<p>\nKdykoliv se na serveru pou\u017eije nov\u00e1 aktualizace, Helm bu\u010f vygeneruje novou hodnotu tajemstv\u00ed (pokud tajemstv\u00ed je\u0161t\u011b neexistuje), nebo znovu pou\u017eije existuj\u00edc\u00ed hodnotu.<\/p>\n<p>Hodn\u011b \u0161t\u011bst\u00ed!<\/p>\n<p><strong>Co dal\u0161\u00edho si p\u0159e\u010d\u00edst na toto t\u00e9ma<\/strong>:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ikh-effektivno-ispolzovat\">T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes a jak je efektivn\u011b vyu\u017e\u00edvat<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/490362\/\">Kubernetes v pir\u00e1tsk\u00e9m duchu s \u0161ablonou pro nasazen\u00ed<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">N\u00e1\u0161 kan\u00e1l Kolem Kubernetes na Telegramu<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/507376\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 Kubernetes aaS \u043e\u0442 Mail.ru \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b Helm \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438. \u0414\u0430\u043b\u0435\u0435 \u0442\u0435\u043a\u0441\u0442 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0430 Intoware, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 SaaS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u2014 \u044d\u0442\u043e \u043a\u0440\u0443\u0442\u043e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0431\u044b\u043b \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (\u0441\u0442\u044b\u0434\u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f), \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u044d\u0442\u043e, \u0442\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u043b\u0430\u0432\u0430\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89144,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89143","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=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430\" \/>\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\/avtogeneracziya-sekretov-v-helm\" \/>\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\u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0432 Helm | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/avtogeneracziya-sekretov-v-helm\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-19T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-19T05:42:22+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\udd47 Automatick\u00e9 generov\u00e1n\u00ed tajemstv\u00ed v Helm | ProHoster","description":"T\u00fdm","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/avtogeneracziya-sekretov-v-helm","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\u0410\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0432 Helm | ProHoster","og:description":"\u041a\u043e\u043c\u0430\u043d\u0434\u0430","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/avtogeneracziya-sekretov-v-helm","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-19T05:42:22+00:00","article:modified_time":"2020-07-19T05:42:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89143","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:15:24","updated":"2022-10-05 12:06:33","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\/89143","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=89143"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/89143\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/89144"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=89143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=89143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=89143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}