{"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\/no\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"Er det enkelt og praktisk \u00e5 sette opp et Kubernetes-kluster? Vi lanserer addon-operator","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Er det enkelt og praktisk \u00e5 sette opp et Kubernetes-kluster? Vi lanserer addon-operator\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI kj\u00f8lvannet av <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">shell-operator<\/a><\/noindex> vi presenterer hans eldre bror \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. Dette er et Open Source-prosjekt som brukes til \u00e5 installere systemkomponenter i en Kubernetes-klynge, som samlet kan kalles tillegg.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hvorfor trenger vi i det hele tatt noen tillegg?<\/h2>\n<p>\nDet er ingen hemmelighet at Kubernetes ikke er et klart produkt alt-i-ett, og for \u00e5 bygge en 'moden' klynge vil det v\u00e6re behov for ulike tillegg. Addon-operatoren vil hjelpe med \u00e5 installere, konfigurere og holde disse tilleggene oppdatert.<\/p>\n<p>Behovet for ekstra komponenter i klyngen er tatt opp i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">foredraget<\/a><\/noindex> kolleger <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. Kort sagt, situasjonen med Kubernetes i dag er slik at for enkel installasjon for \u00e5 'leke' kan man klare seg med innebygde komponenter, for utvikling og testing kan man legge til Ingress, men for en fullverdig installasjon, hvor man kan si 'produksjonen er klar', m\u00e5 man legge til rundt ti forskjellige tillegg: noe for overv\u00e5king, noe for logger, ikke glem ingress og cert-manager, tildele grupper av noder, legge til nettverksregler, krydre med sysctl-innstillinger og pod autoscaler\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Er det enkelt og praktisk \u00e5 sette opp et Kubernetes-kluster? Vi lanserer addon-operator\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Hva er spesifisiteten ved \u00e5 jobbe med dem?<\/h2>\n<p>\nSom praksis viser, er det ikke nok med en enkel installasjon. For komfortabelt arbeid med klyngen, m\u00e5 tilleggene oppdateres, deaktiveres (fjernes fra klyngen), og noe vil man kanskje teste f\u00f8r installasjon i produksjonsklyngen.<\/p>\n<p>S\u00e5, kanskje Ansible er tilstrekkelig her? Kanskje. Men <b>fullverdige tillegg lever vanligvis ikke uten konfigurasjoner<\/b>. Disse innstillingene kan variere avhengig av klyngealternativet (aws, gce, azure, bare-metal, do, \u2026). Noen innstillinger kan ikke defineres p\u00e5 forh\u00e5nd \u2014 de m\u00e5 hentes fra klyngen. Og klyngen er ikke statisk: for enkelte innstillinger m\u00e5 man f\u00f8lge med p\u00e5 endringene. Her er ikke Ansible tilstrekkelig: man trenger et program som lever i klyngen, dvs. Kubernetes Operator.<\/p>\n<p>De som har pr\u00f8vd det i praksis <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, vil si at oppgavene med \u00e5 installere og oppdatere tillegg og holde \u00f8ye med konfigurasjoner, ganske enkelt kan l\u00f8ses med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">hookene<\/a><\/noindex> for shell-operator. Man kan skrive et skript som gj\u00f8r en betinget <code>kubectl apply<\/code> og holder \u00f8ye med for eksempel ConfigMap, hvor konfigurasjonene vil bli lagret. Omtrent dette er implementert i addon-operator.<\/p>\n<h2>Hvordan er dette organisert i addon-operator?<\/h2>\n<p>\nN\u00e5r vi skapte en ny l\u00f8sning, baserte vi oss p\u00e5 f\u00f8lgende prinsipper:<\/p>\n<ul>\n<li> Installeringsverkt\u00f8yet for tillegg m\u00e5 st\u00f8tte <b>malbasert og deklarativ konfigurasjon<\/b>. Vi lager ikke magiske skript som installerer tillegg. Addon-operat\u00f8ren bruker Helm for \u00e5 installere tillegg. For installasjon m\u00e5 du opprette et chart og spesifisere verdier som skal brukes til konfigurasjon. <\/li>\n<li> Innstillingene kan <b>genereres ved installasjon<\/b>, de kan <b>hentes fra klyngen<\/b>, eller <b>motta oppdateringer<\/b>, ved \u00e5 overv\u00e5ke ressursene til klyngen. Disse operasjonene kan implementeres med hjelp av hooks.<\/li>\n<li> Innstillingene kan <b>lagres i klyngen<\/b>. For \u00e5 lagre innstillinger i klyngen opprettes en ConfigMap\/addon-operator, og Addon-operat\u00f8ren overv\u00e5ker endringer i denne ConfigMap. Addon-operat\u00f8ren gir hooks tilgang til innstillingene gjennom enkle konvensjoner.<\/li>\n<li> <b>Tillegget avhenger av innstillingene<\/b>. Hvis innstillingene endres, ruller Addon-operat\u00f8ren ut Helm-chartet med nye verdier. Sammenkoblingen av Helm-chartet, verdiene for det og hooks har vi kalt et modul (se mer under).<\/li>\n<li> <b>Staging<\/b>. Det finnes ingen magiske utgivelsesskript. Oppdateringsmekanismen er lik en vanlig applikasjon - samle tillegg og addon-operat\u00f8ren i et bilde, tagge det og rulle det ut.<\/li>\n<li> <b>Resultatkontroll<\/b>. Addon-operat\u00f8ren kan gi metrikker for Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hva er et tillegg i addon-operat\u00f8ren?<\/h2>\n<p>\nEt tillegg kan betraktes som alt som legger til nye funksjoner i klyngen. For eksempel er installasjon av Ingress et utmerket eksempel p\u00e5 et tillegg. Dette kan v\u00e6re hvilken som helst operator eller kontroller med sin egen CRD: prometheus-operator, cert-manager, kube-controller-manager, osv. Eller noe lite, men som forenkler driften - som en secret copier som kopierer registry-hemmeligheter til nye navnerom, eller en sysctl tuner som konfigurerer sysctl-innstillinger p\u00e5 nye noder.<\/p>\n<p>For \u00e5 implementere tillegg gir Addon-operat\u00f8ren flere konsepter:<\/p>\n<ul>\n<li> <b>Helm-diagram<\/b> brukes for \u00e5 installere forskjellig programvare i klyngen - for eksempel Prometheus, Grafana, nginx-ingress. Hvis den n\u00f8dvendige komponenten har et Helm-chart, vil det v\u00e6re veldig enkelt \u00e5 installere det med Addon-operat\u00f8ren.<\/li>\n<li> <b>Lager for verdier<\/b>. Helm-charts har vanligvis mange forskjellige innstillinger som kan endres over tid. Addon-operat\u00f8ren st\u00f8tter lagring av disse innstillingene og kan overv\u00e5ke endringene for \u00e5 reinstallere Helm-chartet med nye verdier.<\/li>\n<li> <b>Hooks<\/b> \u2014 er utfyllingsfiler som Addon-operat\u00f8ren kj\u00f8rer ved hendelser og som f\u00e5r tilgang til lagringen av verdier. En hook kan overv\u00e5ke endringer i klyngen og oppdatere verdiene i lagringen av verdier. Det vil si at ved hjelp av hooks kan man gj\u00f8re discovery for \u00e5 samle verdier fra klyngen ved oppstart eller etter en tidsplan, eller man kan gj\u00f8re kontinuerlig discovery ved \u00e5 samle verdier fra klyngen p\u00e5 endringer i klyngen.<\/li>\n<li> <b>Modul<\/b> \u2014 er en sammenslutning av Helm-diagram, lagring av verdier og hooks. Moduler kan sl\u00e5s av og p\u00e5. Avslutning av en modul inneb\u00e6rer \u00e5 slette alle utgivelsene av Helm-diagrammet. Moduler kan dynamisk inkludere seg selv, for eksempel hvis alle n\u00f8dvendige moduler er aktivert eller hvis discovery i hooks har funnet de n\u00f8dvendige parameterne \u2014 dette gj\u00f8res ved hjelp av en hjelpeskript for enabled.<\/li>\n<li> <b>Globale hooks<\/b>. Det er hooks \"for seg selv\", de er ikke inkludert i moduler og har tilgang til den globale lagringen av verdier, verdiene fra dette er tilgjengelig for alle hooks i modulene.<\/li>\n<\/ul>\n<p>\nHvordan fungerer disse delene sammen? La oss se p\u00e5 bildet fra dokumentasjonen:<\/p>\n<p><img decoding=\"async\" alt=\"Er det enkelt og praktisk \u00e5 sette opp et Kubernetes-kluster? Vi lanserer addon-operator\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er to arbeidscenarioer:<\/p>\n<ol>\n<li> Den globale hooken kj\u00f8res ved en hendelse \u2014 for eksempel n\u00e5r en ressurs i klyngen endres. Denne hooken behandler endringer og skriver nye verdier til den globale lagringen av verdier. Addon-operat\u00f8ren merker at den globale lagringen har endret seg og starter alle modulene. Hver modul bestemmer med sine hooks om den skal aktiveres, og oppdaterer sin egen lagring av verdier. Hvis modulen er aktivert, starter Addon-operat\u00f8ren installasjonen av Helm-diagrammet. Helm-diagrammet har da tilgang til verdiene fra lagringen av modulen og fra den globale lagringen.<\/li>\n<li> Det andre scenarioet er enklere: den modul\u00e6re hooken kj\u00f8res ved en hendelse og endrer verdier i lagringen av verdiene for modulen. Addon-operat\u00f8ren merker dette og starter Helm-diagrammet med oppdaterte verdier.<\/li>\n<\/ol>\n<p>\nTillegget kan implementeres som \u00e9n enkelt hook eller som ett Helm-diagram, eller <b>til og med som flere avhengige moduler<\/b> \u2014 dette avhenger av kompleksiteten av komponenten som installeres i klyngen og \u00f8nsket fleksibilitetsniv\u00e5 i innstillingene. For eksempel, i depotet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) finnes det et tillegg som heter sysctl-tuner, som er implementert b\u00e5de som et enkelt modul med hook og Helm-diagram, og med bruk av lagring av verdier, noe som gir mulighet til \u00e5 legge til innstillinger gjennom redigering av ConfigMap.<\/p>\n<h2>Levering av oppdateringer<\/h2>\n<p>\nNoen ord om organisering av oppdateringer av komponentene som installeres av Addon-operator.<\/p>\n<p>For \u00e5 starte Addon-operator i klyngen, m\u00e5 man <b>bygge et bilde med tillegg<\/b> i form av hook-filer og Helm-diagrammer, legge til bin\u00e6rfilen <code>addon-operator<\/code> og alt som trengs for hookene: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> osv. Deretter kan dette bildet distribueres til klyngen som en vanlig applikasjon, og det er sannsynlig at du vil organisere en eller annen merkestruktur. Hvis det er f\u00e5 klynger, kan den samme tiln\u00e6rmingen som med applikasjoner fungere: ny utgave, ny versjon, g\u00e5 gjennom alle klyngene og oppdatere image p\u00e5 Pod'ene. Imidlertid, n\u00e5r det gjelder \u00e5 distribueres til et betydelig antall klynger, passer konsepter for selvoppdatering fra kanalen bedre. <\/p>\n<p>Vi har dette strukturert slik:<\/p>\n<ul>\n<li>Kanalen er i hovedsak en identifikator som kan settes til hva som helst (for eksempel dev\/stage\/ea\/stable).<\/li>\n<li>Kanalnavnet er taggen for bildet. N\u00e5r det er behov for \u00e5 rulle ut oppdateringer til kanalen, bygges et nytt bilde og tagges med kanalnavnet.<\/li>\n<li>N\u00e5r det kommer et nytt bilde i registry, restartes Addon-operator og startes med det nye bildet.<\/li>\n<\/ul>\n<p>\nDette er ikke en best practice, som beskrevet i <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">Kubernetes-dokumentasjonen<\/a><\/noindex>. Det anbefales ikke \u00e5 gj\u00f8re dette, men det dreier seg om <i>en vanlig applikasjon som lever i \u00e9n klynge<\/i>. I tilfelle av Addon-operator er applikasjonen et antall Deployments spredt over klyngene, og selvoppdatering er sv\u00e6rt nyttig og forenkler livet. <\/p>\n<p>Kanalene hjelper ogs\u00e5 <b>i testing<\/b>: hvis det finnes en hjelpeklynge, kan man konfigurere den til en kanal <code>stage<\/code> og rulle ut oppdateringer til den f\u00f8r de rulles ut til kanalene. <code>ea<\/code> og <code>stable<\/code>. Hvis det oppst\u00e5r en feil med klyngen i kanalen, kan den bli byttet til <code>ea<\/code> , mens unders\u00f8kelsen av problemet med denne klyngen p\u00e5g\u00e5r. Hvis klyngen er fjernet fra aktiv st\u00f8tte, bytter den til sin 'fryst' kanal \u2013 for eksempel, <code>stable<\/code>freeze-2019-03-20 <code>I tillegg til oppdateringer av hookene og Helm-diagrammene kan det v\u00e6re n\u00f8dvendig \u00e5<\/code>.<\/p>\n<p>oppdatere en tredjeparts komponent <b>. For eksempel, hvis du har oppdaget en feil i den hypotetiske node-exporteren og til og med har funnet en l\u00f8sning for \u00e5 patch den. Deretter \u00e5pnet du en PR og venter p\u00e5 en ny utgave for \u00e5 g\u00e5 gjennom alle klyngene og oppgradere bildet. For ikke \u00e5 vente ubegripelig lenge, kan man bygge sin egen node-exporter og bytte til den f\u00f8r PR-en blir godkjent.<\/b>.<\/p>\n<p>Generelt kan dette gj\u00f8res uten Addon-operator, men med Addon-operator blir modulen for \u00e5 installere node-exporter synlig i ett repository, Dockerfile for \u00e5 bygge sitt eget bilde kan holdes der, og alle involverte f\u00e5r en lettere forst\u00e5else av hva som skjer... Og hvis det er flere klynger, blir det enklere b\u00e5de \u00e5 teste sin PR og \u00e5 rulle ut en ny versjon!<\/p>\n<p>Denne organisasjonen for oppdatering av komponenter fungerer godt hos oss, men det er mulig \u00e5 implementere enhver annen passende ordning \u2014 for <b>i dette tilfellet er Addon-operator en enkel bin\u00e6rfil.<\/b>.<\/p>\n<h2>Konklusjon<\/h2>\n<p>\nPrinsippene som er implementert i Addon-operator, gj\u00f8r det mulig \u00e5 etablere en transparent prosess for oppretting, testing, installasjon og oppdatering av tillegg i klyngen, sammenlignbart med prosessene for utvikling av vanlige applikasjoner.<\/p>\n<p>Tillegg for Addon-operator i modulformat (Helm-chart + hooks) kan legges ut for allmennheten. Vi, selskapet Flant, planlegger \u00e5 publisere v\u00e5re utviklinger i form av slike tillegg i l\u00f8pet av sommeren. Bli med i utviklingen 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>), pr\u00f8v \u00e5 lage ditt eget tillegg basert p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">eksempler<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/blob\/master\/README.md\">dokumentasjonen<\/a><\/noindex>, f\u00f8lg med p\u00e5 nyheter p\u00e5 Habr\u00e9 og 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>\nAlso read in our blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Utvider og supplere Kubernetes (oversikt og video av foredraget)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Vi presenterer shell-operator: det er blitt enda enklere \u00e5 lage operat\u00f8rer for Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Kilde: <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.5 - 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\/no\/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.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Er det enkelt og praktisk \u00e5 forberede Kubernetes-klyngen? Vi kunngj\u00f8r addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}