{"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\/da\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"Er det enkelt og bekvemt at forberede et Kubernetes-kluster? Vi annoncerer addon-operator.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Er det enkelt og bekvemt at forberede et Kubernetes-kluster? Vi annoncerer addon-operator.\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI k\u00f8lvandet p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">shell-operator<\/a><\/noindex> pr\u00e6senterer vi hans store bror \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. Dette er et Open Source-projekt, der bruges til at installere systemkomponenter i en Kubernetes-klynge, som man kan kalde med det overordnede ord \u2014 tilf\u00f8jelser.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hvorfor kr\u00e6ves der overhovedet nogle tilf\u00f8jelser?<\/h2>\n<p>\nDet er ingen hemmelighed, at Kubernetes ikke er et f\u00e6rdigt alt-i-\u00e9t produkt, og for at opbygge en 'fungerende' klynge kr\u00e6ves der forskellige tilf\u00f8jelser. Addon-operatoren hj\u00e6lper med at installere, konfigurere og holde disse tilf\u00f8jelser opdaterede.<\/p>\n<p>Behovet for yderligere komponenter i klyngen er beskrevet i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">pr\u00e6sentation<\/a><\/noindex> kolleger <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. Kort sagt, situationen med Kubernetes er i \u00f8jeblikket s\u00e5dan, at for en simpel installation til 'leg' kan man klare sig med komponenter fra kassen, til udviklere og testere kan man tilf\u00f8je Ingress, men for en fuld installation, som man kan sige 'din produktion er klar', skal man tilf\u00f8je et dusin forskellige tilf\u00f8jelser: noget til overv\u00e5gning, noget til logs, husk ingress og cert-manager, allokere node-grupper, tilf\u00f8je netv\u00e6rkspolitikker, krydre med sysctl- og pod autoscaler-indstillinger...<\/p>\n<p><img decoding=\"async\" alt=\"Er det enkelt og bekvemt at forberede et Kubernetes-kluster? Vi annoncerer addon-operator.\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Hvad er specifikationen for arbejdet med dem?<\/h2>\n<p>\nSom praksis viser, er det ikke nok bare at installere. For at arbejde komfortabelt med klyngen skal tilf\u00f8jelserne opdateres, deaktiveres (fjernes fra klyngen), og noget skal testes f\u00f8r installationen i produktionsklyngen.<\/p>\n<p>S\u00e5 m\u00e5ske er Ansible nok her? M\u00e5ske. Men <b>fuldgyldige tilf\u00f8jelser lever generelt ikke uden konfigurationer<\/b>. Disse indstillinger kan variere afh\u00e6ngigt af cluster-varianten (aws, gce, azure, bare-metal, do, &#8230;). Nogle indstillinger kan ikke angives p\u00e5 forh\u00e5nd \u2013 de skal hentes fra clusteren. Og clusteren er ikke statisk: for nogle indstillinger er man n\u00f8dt til at overv\u00e5ge \u00e6ndringerne. Her er Ansible ikke nok: der er brug for et program, der lever i clusteren, dvs. Kubernetes Operator.<\/p>\n<p>De, der har pr\u00f8vet at arbejde med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, vil sige, at opgaverne med installation og opdatering af tilf\u00f8jelser samt overv\u00e5gning af konfigurationer fint kan l\u00f8ses med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">hooks<\/a><\/noindex> til shell-operatoren. Man kan skrive et script, der g\u00f8r betinget <code>kubectl apply<\/code> og holder \u00f8je for eksempel med ConfigMap, hvor indstillingerne vil blive opbevaret. Det er omtrent det, der implementeres i addon-operatoren.<\/p>\n<h2>Hvordan er det organiseret i addon-operatoren?<\/h2>\n<p>\nVed oprettelsen af en ny l\u00f8sning tog vi udgangspunkt i f\u00f8lgende principper:<\/p>\n<ul>\n<li> Installationsprogrammet for tilf\u00f8jelser skal underst\u00f8tte <b>skabelonbearbejdning og deklarativ konfiguration<\/b>. Vi laver ikke magiske scripts, der installerer tilf\u00f8jelser. Addon-operator bruger Helm til at installere tilf\u00f8jelser. For at installere skal der oprettes et chart, og der skal udv\u00e6lges v\u00e6rdier, der skal bruges til konfigurationen. <\/li>\n<li> Indstillinger kan <b>genereres ved installationen<\/b>, de kan <b>hentes fra klyngen<\/b>, eller <b>modtage opdateringer<\/b>, ved at overv\u00e5ge klyngens ressourcer. Disse operationer kan implementeres ved hj\u00e6lp af hooks.<\/li>\n<li> Indstillinger kan <b>lagres i klyngen<\/b>. For at gemme indstillinger i klyngen oprettes en ConfigMap\/addon-operator, og Addon-operatoren overv\u00e5ger \u00e6ndringerne i denne ConfigMap. Addon-operatoren giver hooks adgang til indstillingerne ved hj\u00e6lp af enkle konventioner.<\/li>\n<li> <b>Tilf\u00f8jelsen afh\u00e6nger af indstillingerne<\/b>. Hvis indstillingerne \u00e6ndrer sig, vil Addon-operatoren udsende Helm-chartet med de nye v\u00e6rdier. Kombinationen af Helm-chartet, v\u00e6rdierne til det og hooks kalder vi et modul (l\u00e6s mere nedenfor).<\/li>\n<li> <b>Staging<\/b>. Der er ingen magiske release-scripts. Opdateringsmekanismen svarer til et almindeligt program - samle tilf\u00f8jelserne og addon-operatoren i et billede, tagge og udsende.<\/li>\n<li> <b>Resultatkontrol<\/b>. Addon-operatoren kan returnere m\u00e5linger til Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hvad er en tilf\u00f8jelse i addon-operatoren?<\/h2>\n<p>\nEn tilf\u00f8jelse kan betragtes som alt, der tilf\u00f8jer nye funktioner til klyngen. For eksempel er installationen af Ingress et fremragende eksempel p\u00e5 en tilf\u00f8jelse. Det kan v\u00e6re enhver operator eller controller med sin CRD: prometheus-operator, cert-manager, kube-controller-manager osv. Eller noget lille, men som forenkler driften - for eksempel en secret copier, der kopierer registry-hemmeligheder til nye navneomr\u00e5der, eller en sysctl tuner, der justerer sysctl-parametre p\u00e5 nye noder.<\/p>\n<p>For at implementere tilf\u00f8jelser giver Addon-operatoren flere koncepter:<\/p>\n<ul>\n<li> <b>Helm-chart<\/b> bruges til at installere forskellige software i klyngen - for eksempel Prometheus, Grafana, nginx-ingress. Hvis den p\u00e5kr\u00e6vede komponent har et Helm-chart, vil det v\u00e6re meget let at installere det med hj\u00e6lp fra Addon-operatoren.<\/li>\n<li> <b>Opbevaring af v\u00e6rdier<\/b>. Helm-charts har normalt mange forskellige indstillinger, der kan \u00e6ndre sig over tid. Addon-operatoren underst\u00f8tter opbevaring af disse indstillinger og kan overv\u00e5ge deres \u00e6ndringer for at geninstallere Helm-chartet med nye v\u00e6rdier.<\/li>\n<li> <b>Hooks<\/b> \u2014 er eksekverbare filer, som Addon-operatoren k\u00f8rer ved h\u00e6ndelser og som f\u00e5r adgang til v\u00e6rdilageret. Et hook kan overv\u00e5ge \u00e6ndringer i klyngen og opdatere v\u00e6rdierne i v\u00e6rdilageret. Det vil sige, at med hooks kan der laves discovery for at indsamle v\u00e6rdier fra klyngen ved opstart eller efter en tidsplan, eller man kan foretage kontinuerlig discovery ved at indsamle v\u00e6rdier fra klyngen ved \u00e6ndringer i klyngen.<\/li>\n<li> <b>Module<\/b> \u2014 er en samling af Helm-chart, v\u00e6rdilager og hooks. Moduler kan aktiveres og deaktiveres. Deaktivering af et modul betyder fjernelse af alle udgivelser af Helm-chartet. Moduler kan dynamisk inkludere sig selv, for eksempel hvis alle n\u00f8dvendige moduler er aktiveret, eller hvis discovery i hooks har fundet de n\u00f8dvendige parametre \u2014 dette g\u00f8res ved hj\u00e6lp af et hj\u00e6lpe-script til enabled.<\/li>\n<li> <b>Globale hooks<\/b>. Dette er hooks \"i sig selv\", de er ikke inkluderet i moduler og har adgang til det globale v\u00e6rdilager, hvis v\u00e6rdier er tilg\u00e6ngelige for alle hooks i modulerne.<\/li>\n<\/ul>\n<p>\nHvordan arbejder disse dele sammen? Lad os se p\u00e5 et billede fra dokumentationen:<\/p>\n<p><img decoding=\"async\" alt=\"Er det enkelt og bekvemt at forberede et Kubernetes-kluster? Vi annoncerer addon-operator.\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer er to scenarier:<\/p>\n<ol>\n<li> Den globale hook aktiveres af en h\u00e6ndelse \u2014 for eksempel ved \u00e6ndring af en ressource i klyngen. Denne hook behandler \u00e6ndringerne og skriver nye v\u00e6rdier i det globale v\u00e6rdilager. Addon-operatoren bem\u00e6rker, at det globale v\u00e6rdilager er \u00e6ndret, og aktiverer alle moduler. Hvert modul bestemmer ved hj\u00e6lp af sine hooks, om det skal aktiveres, og opdaterer sit v\u00e6rdilager. Hvis modulet er aktiveret, aktiverer Addon-operatoren installationen af Helm-chartet. Helm-chartet har adgang til v\u00e6rdier fra modulens v\u00e6rdilager og fra det globale v\u00e6rdilager.<\/li>\n<li> Det andet scenario er enklere: modul-hooken aktiveres ved en h\u00e6ndelse og \u00e6ndrer v\u00e6rdierne i modulens v\u00e6rdilager. Addon-operatoren bem\u00e6rker dette og aktiverer Helm-chartet med de opdaterede v\u00e6rdier.<\/li>\n<\/ol>\n<p>\nEt supplement kan implementeres som en enkelt hook, eller som et Helm-chart, eller <b>endda som flere afh\u00e6ngige moduler<\/b> \u2014 det afh\u00e6nger af kompleksiteten af den komponent, der installeres i klyngen, og det \u00f8nskede niveau af tilpasningsmuligheder. For eksempel findes der i repositoryet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) et supplement sysctl-tuner, som er implementeret b\u00e5de som et simpelt modul med en hook og et Helm-chart, samt ved brug af v\u00e6rdilager, hvilket giver mulighed for at tilf\u00f8je indstillinger ved at redigere ConfigMap.<\/p>\n<h2>Levering af opdateringer<\/h2>\n<p>\nEt par ord om organiseringen af opdateringer til komponenter, som Addon-operator installerer.<\/p>\n<p>For at k\u00f8re Addon-operator i klyngen skal man <b>samle et billede med tilf\u00f8jelser<\/b> i form af hook-filer og Helm-diagrammer, tilf\u00f8je det bin\u00e6re fil <code>addon-operator<\/code> og alt, hvad der er n\u00f8dvendigt for hooks: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> og s\u00e5 videre. Derefter kan dette billede udrulles i klyngen som en almindelig applikation, og det er sandsynligt, at du \u00f8nsker at organisere en eller anden form for tagging. Hvis der kun er f\u00e5 klynger, kan den samme tilgang som med applikationer v\u00e6re passende: ny udgivelse, ny version, g\u00e5 gennem alle klynger og opdatere billedet hos Pod\u2019erne. Men i tilf\u00e6lde af udruldning til et betydeligt antal klynger, passer konceptet med selvopdatering fra en kanal os bedre. <\/p>\n<p>Vi har det organiseret s\u00e5dan:<\/p>\n<ul>\n<li>En kanal er i bund og grund en identifikator, som kan angives til enhver (f.eks. dev\/stage\/ea\/stable).<\/li>\n<li>Kanalens navn er billedets tag. N\u00e5r opdateringer skal sendes til kanalen, samles et nyt billede og tagges med kanalens navn.<\/li>\n<li>N\u00e5r et nyt billede dukker op i registreringen, genstartes Addon-operatoren og k\u00f8rer med det nye billede.<\/li>\n<\/ul>\n<p>\nDette er ikke best practice, som beskrevet i <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">Kubernetes-dokumentation<\/a><\/noindex>. Det anbefales ikke at g\u00f8re s\u00e5dan, men det handler om <i>en almindelig applikation, der lever i en enkelt klynge<\/i>. I tilf\u00e6lde af Addon-operator er applikationen et antal Deployments, der er fordelt over klyngerne, og selvopdatering er en stor hj\u00e6lp og forenkler livet. <\/p>\n<p>Kanaler hj\u00e6lper ogs\u00e5 <b>i testning<\/b>: hvis der er en hj\u00e6lpende klynge, kan den indstilles til kanalen <code>stage<\/code> og k\u00f8re opdateringer til den, f\u00f8r de udrulles til kanalerne <code>ea<\/code> og <code>stable<\/code>. Hvis der er opst\u00e5et en fejl med klyngen p\u00e5 kanalen <code>ea<\/code> , kan den skiftes til <code>stable<\/code>, mens efterforskningen af problemet med denne klynge st\u00e5r p\u00e5. Hvis klyngen er taget fra aktiv st\u00f8tte, skifter den til sin \"frosne\" kanal \u2014 for eksempel, <code>freeze-2019-03-20<\/code>.<\/p>\n<p>Udover opdateringer af hooks og Helm-diagrammer kan det v\u00e6re n\u00f8dvendigt at <b>opdatere en tredjepartskomponent<\/b>. For eksempel, hvis du har bem\u00e6rket en fejl i en hypotetisk node-exporter og endda har t\u00e6nkt over, hvordan du kan patche den. Derefter \u00e5bnede du en PR og venter p\u00e5 en ny udgivelse for at g\u00e5 igennem alle klynger og \u00f8ge versionen af billedet. For ikke at vente i uforudsigelig tid kan du samle din egen node-exporter og skifte til den, indtil PR'en er godkendt.<\/p>\n<p>Generelt set kan det ogs\u00e5 g\u00f8res uden Addon-operator, men med Addon-operator vil modulet til installation af node-exporter v\u00e6re synligt i et repository, Dockerfile til at bygge sin egen image kan holdes der, og det bliver lettere for alle deltagere at forst\u00e5, hvad der foreg\u00e5r... Og hvis der er flere klynger, bliver det lettere b\u00e5de at teste sin PR og at rulle en ny version ud!<\/p>\n<p>Denne organisation af komponentopdateringer fungerer godt for os, men man kan ogs\u00e5 implementere enhver anden passende ordning \u2014 for <b>i dette tilf\u00e6lde er Addon-operator en simpel bin\u00e6r fil<\/b>.<\/p>\n<h2>Konklusion<\/h2>\n<p>\nPrincipperne, der er implementeret i Addon-operator, muligg\u00f8r en gennemsigtig proces for oprettelse, test, installation og opdatering af tilf\u00f8jelser i klyngen, der ligner processerne til udvikling af almindelige applikationer.<\/p>\n<p>Tilf\u00f8jelser til Addon-operator i modulformat (Helm-diagram + hooks) kan g\u00f8res bredt tilg\u00e6ngelige. Vi, Flant Company, planl\u00e6gger at udgive vores arbejde i form af s\u00e5danne tilf\u00f8jelser i l\u00f8bet af sommeren. Deltag i udviklingen 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 at lave dit eget tilf\u00f8jelse baseret 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\">dokumentationen<\/a><\/noindex>, vent p\u00e5 nyheder p\u00e5 Habr og p\u00e5 vores <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\u00e6s ogs\u00e5 p\u00e5 vores blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Udvikler Kubernetes (oversigt og videopr\u00e6sentation)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Pr\u00e6senterer shell-operator: det er blevet endnu lettere at skabe operatorer til 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.3 - 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\/da\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 Er det nemt og bekvemt at forberede en Kubernetes-klynge? Vi annoncerer addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}