{"id":35226,"date":"2019-10-31T22:03:05","date_gmt":"2019-10-31T19:03:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\/"},"modified":"2019-10-31T22:03:05","modified_gmt":"2019-10-31T19:03:05","slug":"gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"Att f\u00f6rbereda en Kubernetes-kluster \u00e4r enkelt och bekv\u00e4mt? Vi presenterar addon-operatorn","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Att f\u00f6rbereda en Kubernetes-kluster \u00e4r enkelt och bekv\u00e4mt? Vi presenterar addon-operatorn\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI takt med <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">shell-operator<\/a><\/noindex> introducerar vi hans \u00e4ldre bror \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. Detta \u00e4r ett Open Source-projekt som anv\u00e4nds f\u00f6r att installera systemkomponenter i Kubernetes-klustret, som vi kan kalla med ett gemensamt ord \u2014 till\u00e4gg.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Varf\u00f6r \u00f6verhuvudtaget n\u00e5gra till\u00e4gg?<\/h2>\n<p>\nDet \u00e4r ingen hemlighet att Kubernetes inte \u00e4r en f\u00e4rdig produkt allt-i-ett, och f\u00f6r att bygga en 'vuxen' kluster beh\u00f6vs olika till\u00e4gg. Addon-operator hj\u00e4lper till att installera, konfigurera och h\u00e5lla dessa till\u00e4gg uppdaterade.<\/p>\n<p>Behovet av ytterligare komponenter i klustret redovisas i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">rapporten<\/a><\/noindex> fr\u00e5n kollegan <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. Kort sagt, situationen med Kubernetes just nu \u00e4r s\u00e5dan att f\u00f6r enkel installation f\u00f6r att 'leka' kan man klara sig med de inbyggda komponenterna, f\u00f6r utvecklare och testning kan man l\u00e4gga till Ingress, men f\u00f6r en fullst\u00e4ndig installation, som kan s\u00e4gas 'er produktion \u00e4r klar', beh\u00f6ver man l\u00e4gga till ett dussin olika till\u00e4gg: n\u00e5got f\u00f6r \u00f6vervakning, n\u00e5got f\u00f6r loggar, att inte gl\u00f6mma ingress och cert-manager, att avs\u00e4tta grupper av noder, l\u00e4gga till n\u00e4tverkspolicyer, krydda med sysctl-inst\u00e4llningar och pod autoscaler...<\/p>\n<p><img decoding=\"async\" alt=\"Att f\u00f6rbereda en Kubernetes-kluster \u00e4r enkelt och bekv\u00e4mt? Vi presenterar addon-operatorn\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Vad \u00e4r specifikationen f\u00f6r att arbeta med dem?<\/h2>\n<p>\nSom erfarenhet visar, \u00e4r det inte bara en installation som kr\u00e4vs. F\u00f6r att arbeta bekv\u00e4mt med klustret m\u00e5ste till\u00e4gg uppdateras, inaktiveras (ta bort fr\u00e5n klustret), och n\u00e5got vill man testa innan installationen i produktionsklustret.<\/p>\n<p>S\u00e5, kanske r\u00e4cker det med Ansible? Kanske. Men <b>fullst\u00e4ndiga till\u00e4gg lever vanligtvis inte utan inst\u00e4llningar<\/b>. \u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (aws, gce, azure, bare-metal, do, &#8230;). \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0434\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u2014 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0410 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u043d: \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0418 \u0442\u0443\u0442 \u0443\u0436\u0435 Ansible \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442: \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0436\u0438\u0432\u0451\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0442.\u0435. Kubernetes Operator.<\/p>\n<p>De som har provat att arbeta med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, kommer att s\u00e4ga att uppgifterna f\u00f6r att installera och uppdatera till\u00e4gg och f\u00f6lja inst\u00e4llningarna helt klart kan l\u00f6sas med hj\u00e4lp av <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">hooks<\/a><\/noindex> f\u00f6r shell-operator. Man kan skriva ett skript som g\u00f6r ett hypotetiskt <code>kubectl apply<\/code> och \u00f6vervaka, till exempel, ConfigMap d\u00e4r inst\u00e4llningar kommer att lagras. Ungef\u00e4r s\u00e5 h\u00e4r \u00e4r det genomf\u00f6rt i addon-operator.<\/p>\n<h2>Hur \u00e4r detta organiserat i addon-operator?<\/h2>\n<p>\nN\u00e4r vi skapade denna nya l\u00f6sning utgick vi fr\u00e5n f\u00f6ljande principer:<\/p>\n<ul>\n<li> Till\u00e4ggsinstallat\u00f6ren ska st\u00f6dja <b>mallning och deklarativ konfiguration<\/b>. Vi anv\u00e4nder inte magiska skript f\u00f6r att installera till\u00e4gg. Addon-operator anv\u00e4nder Helm f\u00f6r att installera till\u00e4gg. F\u00f6r installation beh\u00f6vs en chart och ange de v\u00e4rden som ska anv\u00e4ndas f\u00f6r konfiguration. <\/li>\n<li> Inst\u00e4llningar kan <b>genereras vid installation<\/b>, de kan <b>h\u00e4mtas fr\u00e5n klustret<\/b>, eller <b>f\u00e5 uppdateringar<\/b>, genom att f\u00f6lja klustrets resurser. Dessa operationer kan implementeras med hj\u00e4lp av hooks.<\/li>\n<li> Inst\u00e4llningar kan <b>lagras i klustret<\/b>. F\u00f6r att lagra inst\u00e4llningarna i klustret skapas en ConfigMap\/addon-operator, och Addon-operator \u00f6vervakar \u00e4ndringar i denna ConfigMap. Addon-operator ger hooks \u00e5tkomst till inst\u00e4llningarna genom enkla \u00f6verenskommelser.<\/li>\n<li> <b>Till\u00e4gget beror p\u00e5 inst\u00e4llningarna<\/b>. Om inst\u00e4llningarna \u00e4ndras, rullar Addon-operator ut Helm-chartet med nya v\u00e4rden. Kombinationen av Helm-charten, v\u00e4rdena f\u00f6r den och hooks kallar vi f\u00f6r en modul (se mer nedan).<\/li>\n<li> <b>Staging<\/b>. Det finns inga magiska release-skript. Uppdateringsmekanismen \u00e4r lik den f\u00f6r en vanlig applikation \u2014 samla till\u00e4gg och addon-operator i en bild, tagga och rulla ut.<\/li>\n<li> <b>Resultatkontroll<\/b>. Addon-operator kan ge metrics till Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vad \u00e4r ett till\u00e4gg i addon-operator?<\/h2>\n<p>\nEtt till\u00e4gg kan ses som allt som l\u00e4gger till nya funktioner i klustret. Till exempel, installation av Ingress \u2014 ett utm\u00e4rkt exempel p\u00e5 ett till\u00e4gg. Det kan vara vilken operator eller controller som helst med sin egen CRD: prometheus-operator, cert-manager, kube-controller-manager, etc. Eller n\u00e5got litet men som f\u00f6renklar drift \u2014 exempelvis en secret copier som kopierar registry-hemligheter till nya namnrymder, eller en sysctl tuner som justerar sysctl-parametrar p\u00e5 nya noder.<\/p>\n<p>F\u00f6r att implementera till\u00e4gg tillhandah\u00e5ller Addon-operator flera koncept:<\/p>\n<ul>\n<li> <b>Helm-chart<\/b> anv\u00e4nds f\u00f6r att installera olika mjukvaror i klustret \u2014 till exempel Prometheus, Grafana, nginx-ingress. Om en komponent har ett Helm-chart, blir det mycket enkelt att installera det med Addon-operator.<\/li>\n<li> <b>V\u00e4rdeslager<\/b>. Helm-charts har vanligtvis m\u00e5nga olika inst\u00e4llningar som kan f\u00f6r\u00e4ndras \u00f6ver tid. Addon-operator st\u00f6der lagring av dessa inst\u00e4llningar och kan \u00f6vervaka deras \u00e4ndringar f\u00f6r att reinstallera Helm-charten med nya v\u00e4rden.<\/li>\n<li> <b>Hooks<\/b> \u2014 \u00e4r exekverbara filer som Addon-operator k\u00f6r vid h\u00e4ndelser och ger \u00e5tkomst till v\u00e4rdef\u00f6rr\u00e5det. Hook kan \u00f6vervaka \u00e4ndringar i klustret och uppdatera v\u00e4rdena i v\u00e4rdef\u00f6rr\u00e5det. Det vill s\u00e4ga, med hj\u00e4lp av hooks kan man g\u00f6ra discovery f\u00f6r att samla v\u00e4rden fr\u00e5n klustret vid uppstart eller enligt schema, eller s\u00e5 kan man g\u00f6ra continous discovery, och samla v\u00e4rden fr\u00e5n klustret vid \u00e4ndringar i klustret.<\/li>\n<li> <b>Modul<\/b> \u2014 \u00e4r en kombination av Helm-chart, v\u00e4rdef\u00f6rr\u00e5d och hooks. Moduler kan aktiveras och deaktiveras. Att deaktivera en modul inneb\u00e4r att ta bort alla versioner av Helm-charten. Moduler kan dynamiskt aktivera sig sj\u00e4lva, till exempel om alla n\u00f6dv\u00e4ndiga moduler \u00e4r aktiverade eller om discovery i hooks har hittat n\u00f6dv\u00e4ndiga parametrar \u2014 detta g\u00f6rs med hj\u00e4lp av ett hj\u00e4lpskript med namnet enabled.<\/li>\n<li> <b>Globala hooks<\/b>. Detta \u00e4r hooks 'p\u00e5 egen hand', de ing\u00e5r inte i moduler och har \u00e5tkomst till det globala v\u00e4rdef\u00f6rr\u00e5det, vars v\u00e4rden \u00e4r tillg\u00e4ngliga f\u00f6r alla hooks i moduler.<\/li>\n<\/ul>\n<p>\nHur fungerar dessa delar tillsammans? L\u00e5t oss titta p\u00e5 en bild fr\u00e5n dokumentationen:<\/p>\n<p><img decoding=\"async\" alt=\"Att f\u00f6rbereda en Kubernetes-kluster \u00e4r enkelt och bekv\u00e4mt? Vi presenterar addon-operatorn\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet finns tv\u00e5 scenarier:<\/p>\n<ol>\n<li> Det globala hooket k\u00f6rs vid en h\u00e4ndelse \u2014 till exempel vid \u00e4ndring av resurser i klustret. Detta hook hanterar \u00e4ndringar och skriver nya v\u00e4rden i det globala v\u00e4rdef\u00f6rr\u00e5det. Addon-operator m\u00e4rker att det globala f\u00f6rr\u00e5det har \u00e4ndrats och k\u00f6r alla moduler. Varje modul best\u00e4mmer via sina hooks om den beh\u00f6ver aktiveras och uppdaterar sitt v\u00e4rdef\u00f6rr\u00e5d. Om modulen \u00e4r aktiverad, k\u00f6r Addon-operator installerar Helm-charten. Helm-charten har \u00e5tkomst till v\u00e4rden fr\u00e5n modulens f\u00f6rr\u00e5d och det globala f\u00f6rr\u00e5det.<\/li>\n<li> Det andra scenariot \u00e4r enklare: modulens hook k\u00f6rs vid en h\u00e4ndelse och \u00e4ndrar v\u00e4rden i modulens v\u00e4rdef\u00f6rr\u00e5d. Addon-operator m\u00e4rker detta och k\u00f6r Helm-charten med uppdaterade v\u00e4rden.<\/li>\n<\/ol>\n<p>\nEtt till\u00e4gg kan implementeras i form av en enda hook eller som en enda Helm-chart, eller <b>\u00e4ven som flera beroende moduler<\/b> \u2014 detta beror p\u00e5 komplexiteten hos den komponent som ska installeras i klustret och den \u00f6nskade niv\u00e5n av flexibilitet i inst\u00e4llningarna. Till exempel, i f\u00f6rr\u00e5det (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) finns till\u00e4gget sysctl-tuner, som implementeras b\u00e5de som en enkel modul med hook och Helm-chart, samt med anv\u00e4ndning av ett v\u00e4rdef\u00f6rr\u00e5d, vilket g\u00f6r det m\u00f6jligt att l\u00e4gga till inst\u00e4llningar genom att redigera ConfigMap.<\/p>\n<h2>Leverans av uppdateringar<\/h2>\n<p>\nN\u00e5gra ord om organisationen av uppdateringar av komponenter som Addon-operator installerar.<\/p>\n<p>F\u00f6r att k\u00f6ra Addon-operator i klustret m\u00e5ste man <b>samla en bild med till\u00e4gg<\/b> i form av hook-filer och Helm-diagram, l\u00e4gga till bin\u00e4rfilen <code>addon-operator<\/code> och allt som beh\u00f6vs f\u00f6r hookar: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> och s\u00e5 vidare. D\u00e4refter kan denna bild distribueras i klustret som en vanlig applikation och du kommer troligtvis att vilja organisera n\u00e5gon typ av taggningsschema. Om det finns f\u00e5 kluster kan samma tillv\u00e4gag\u00e5ngss\u00e4tt som med applikationer fungera: ny version, nya uppdateringar, g\u00e5 igenom alla kluster och justera bildnamnet i Pod:arna. Men i fallet med distribution till ett betydande antal kluster passar konceptet sj\u00e4lvuppdatering fr\u00e5n kanalen oss b\u00e4ttre. <\/p>\n<p>S\u00e5 h\u00e4r \u00e4r det ordnat:<\/p>\n<ul>\n<li>En kanal \u00e4r i princip en identifierare som kan st\u00e4llas in p\u00e5 valfritt s\u00e4tt (till exempel dev\/stage\/ea\/stable).<\/li>\n<li>Kanalnamnet \u00e4r taggen f\u00f6r bilden. N\u00e4r uppdateringar beh\u00f6ver distribueras till kanalen, samlas en ny bild och taggas med kanalens namn.<\/li>\n<li>N\u00e4r en ny bild dyker upp i registret, startar Addon-operator om och k\u00f6rs med den nya bilden.<\/li>\n<\/ul>\n<p>\nDetta \u00e4r inte en b\u00e4sta praxis, vilket beskrivs i <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">dokumentationen f\u00f6r Kubernetes<\/a><\/noindex>. S\u00e5 h\u00e4r rekommenderas det inte att g\u00f6ras, men det handlar om <i>en vanlig applikation som lever i ett kluster.<\/i>I fallet med Addon-operator \u00e4r applikationen en serie distributioner spridda \u00f6ver kluster, och sj\u00e4lvuppdatering underl\u00e4ttar verkligen livet. <\/p>\n<p>Kanalernas funktioner hj\u00e4lper ocks\u00e5 <b>vid testning<\/b>: om det finns ett hj\u00e4lpkkluster kan det st\u00e4llas in p\u00e5 kanalen <code>stage<\/code> och distribuera uppdateringar till det innan de g\u00e5r till kanalerna <code>ea<\/code> och <code>stable<\/code>. Om det uppst\u00e5r ett fel med klustret p\u00e5 kanalen <code>ea<\/code> kan det bytas till <code>stable<\/code>, medan problemet med detta kluster unders\u00f6ks. Om klustret tas ur aktivt st\u00f6d, byts det till sin 'frysta' kanal \u2014 till exempel, <code>freeze-2019-03-20<\/code>.<\/p>\n<p>F\u00f6rutom uppdateringar av hookar och Helm-diagram kan det ocks\u00e5 beh\u00f6vas <b>uppdatera en tredjeparts komponent<\/b>. Till exempel, om du uppt\u00e4ckte ett fel i den hypotetiska node-exporter och \u00e4ven kommit p\u00e5 hur man kan patcha det. Sedan \u00f6ppnade du en PR och v\u00e4ntar p\u00e5 en ny version, s\u00e5 att du kan g\u00e5 igenom alla kluster och \u00f6ka bildversionen. F\u00f6r att inte beh\u00f6va v\u00e4nta en os\u00e4ker tid kan du samla din egen node-exporter och byta till den tills PR:n har godk\u00e4nts.<\/p>\n<p>I allm\u00e4nhet kan detta g\u00f6ras utan Addon-operator, men med Addon-operator blir modulen f\u00f6r att installera node-exporter synlig i ett och samma katalog, Dockerfile f\u00f6r att bygga din egen bild kan h\u00e5llas h\u00e4r, och alla deltagare i processen f\u00e5r en enklare f\u00f6rst\u00e5else f\u00f6r vad som h\u00e4nder\u2026 Om det finns flera kluster blir det l\u00e4ttare att b\u00e5de testa din PR och att rulla ut en ny version!<\/p>\n<p>Denna organisation f\u00f6r att uppdatera komponenter fungerar framg\u00e5ngsrikt f\u00f6r oss, men man kan ocks\u00e5 implementera vilken annan l\u00e4mplig mekanism som helst \u2014 f\u00f6r <b>i detta fall \u00e4r Addon-operator en enkel bin\u00e4rfil<\/b>.<\/p>\n<h2>Slutsats<\/h2>\n<p>\nPrinciperna implementerade i Addon-operator g\u00f6r det m\u00f6jligt att bygga en transparent process f\u00f6r skapande, testning, installation och uppdatering av till\u00e4gg i klustret, liknande processerna f\u00f6r utveckling av vanliga applikationer.<\/p>\n<p>Till\u00e4gg f\u00f6r Addon-operator i modulformat (Helm-chart + hooks) kan publiceras f\u00f6r allm\u00e4nheten. Vi, f\u00f6retaget Flant, planerar att under sommaren g\u00f6ra v\u00e5ra bidrag tillg\u00e4ngliga i form av s\u00e5dana till\u00e4gg. Delta i utvecklingen p\u00e5 GitHub (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\"><b>addon-operator<\/b><\/a><\/noindex>), f\u00f6rs\u00f6k g\u00f6ra ditt eget till\u00e4gg baserat p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">exempel<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/blob\/master\/README.md\">dokumentationen<\/a><\/noindex>, h\u00e5ll utkik efter nyheter p\u00e5 Habr\u00e9 och p\u00e5 v\u00e5r <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/c\/%D0%A4%D0%BB%D0%B0%D0%BD%D1%82\">YouTube-kanal<\/a><\/noindex>!<\/p>\n<h2>P.S.<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Ut\u00f6kar och kompletterar Kubernetes (\u00f6versikt och videof\u00f6rel\u00e4sning)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Presenterar shell-operator: att skapa operat\u00f6rer f\u00f6r Kubernetes har blivit \u00e4nnu enklare<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u043b\u0435\u0434 \u0437\u0430 shell-operator \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0442\u0430 \u2014 addon-operator. \u042d\u0442\u043e Open Source-\u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f? \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e Kubernetes \u044d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0432\u0441\u0451-\u0432-\u043e\u0434\u043d\u043e\u043c, \u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e\u00bb \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. Addon-operator \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35226","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\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\/sv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\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:03:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:03:05+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\u00c4r det enkelt och bekv\u00e4mt att s\u00e4tta upp en Kubernetes-kluster? Vi meddelar addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","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:03:05+00:00","article:modified_time":"2019-10-31T19:03:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35226","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 22:25:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:07:29","updated":"2026-01-21 22:25:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}