{"id":52688,"date":"2019-11-14T00:00:00","date_gmt":"2019-11-13T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie"},"modified":"2020-02-18T14:00:29","modified_gmt":"2020-02-18T11:00:29","slug":"strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Bem. overs\u00e6ttelse:<\/b> Dette introduktionsmateriale fra Weaveworks pr\u00e6senterer de mest popul\u00e6re applikationsudrulningsstrategier og beskriver mulighederne for at implementere de mest avancerede af dem ved hj\u00e6lp af Kubernetes-operatoren Flagger. Det er skrevet i et forst\u00e5eligt sprog og indeholder illustrative diagrammer, der g\u00f8r det muligt selv for nybegyndere at forst\u00e5 emnet.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Diagrammet er hentet fra <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">et andet review<\/a><\/noindex> af udrulningsstrategier lavet hos Container Solutions<\/i><\/p>\n<p>En af de st\u00f8rste udfordringer ved udviklingen af cloud native-applikationer i dag er at fremskynde deployment. Med en mikrotjeneste-tilgang arbejder udviklerne allerede med fuldt modul\u00e6re applikationer og designer dem, s\u00e5 forskellige teams kan skrive kode og foretage \u00e6ndringer i applikationen samtidig.<\/p>\n<p>Kortere og hyppigere udrulninger har f\u00f8lgende fordele:<\/p>\n<ul>\n<li> Markedsf\u00f8ringstiden forkortes.<\/li>\n<li> Nye funktioner n\u00e5r hurtigere ud til brugerne.<\/li>\n<li> Brugerfeedback n\u00e5r hurtigere frem til udviklingsteamet. Dette indeb\u00e6rer, at teamet kan tilf\u00f8je funktioner og rette problemer hurtigere.<\/li>\n<li> Udviklernes moral \u00f8ges: Det er sjovere at arbejde med flere funktioner under udvikling.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMen med en \u00f8get udrulningsfrekvens \u00f8ges ogs\u00e5 risikoen for at p\u00e5virke applikationens stabilitet eller brugeroplevelsen negativt. Derfor er det vigtigt for driftsteams og DevOps at opbygge processer og styre udrulningsstrategier p\u00e5 en m\u00e5de, der minimerer risikoen for produktet og brugerne. (L\u00e6s mere om automatisering af CI\/CD-pipelinen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">her<\/a><\/noindex>.)<\/p>\n<p>I denne publikation vil vi diskutere forskellige udrulningsstrategier i Kubernetes, herunder rolling deployment og mere avancerede metoder som canary deployments og deres varianter.<\/p>\n<h2>Deploy-strategier<\/h2>\n<p>\nDer findes flere forskellige typer udrulningsstrategier, som man kan bruge afh\u00e6ngigt af form\u00e5let. For eksempel kan det v\u00e6re n\u00f8dvendigt at foretage \u00e6ndringer i et bestemt milj\u00f8 til videre test, eller til et undergruppe af brugere\/kunder, eller der kan opst\u00e5 behov for at udf\u00f8re begr\u00e6nset test p\u00e5 brugere, f\u00f8r en funktion bliver <i>offentlig tilg\u00e6ngelig<\/i>.<\/p>\n<h3>Rolling (progressiv, 'gradvis' udrulning)<\/h3>\n<p>\nDette er en standard implementeringsstrategi i Kubernetes. Den gradvist, \u00e9n ad gangen, erstatter pods med den gamle version af applikationen med pods med den nye version \u2014 uden nedetid for klyngen.<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/cbd490f1ef8311ff4c242726e947248c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes venter p\u00e5, at de nye pods er klar til drift (ved at tjekke dem med <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">readiness-tests<\/a><\/noindex>), f\u00f8r de gamle rulles tilbage. Hvis der opst\u00e5r et problem, kan en s\u00e5dan rullende opdatering stoppes uden at stoppe hele klyngen. I YAML-filen, der beskriver typen af deployment, erstatter det nye billede det gamle billede:<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp\nspec:\n  replicas: 3\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n    spec:\n      containers:\n        - name: awesomeapp\n          image: imagerepo-user\/awesomeapp:new\n          ports:\n            - containerPort: 8080<\/code><\/pre>\n<p>\nParametrene for den rullende opdatering kan pr\u00e6ciseres i manifestfilen:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n       maxSurge: 25%\n       maxUnavailable: 25%  \n  template:\n  ...\n<\/code><\/pre>\n<p><\/p>\n<h3>Recreate (genoprettelse)<\/h3>\n<p>\nI denne enkleste type implementering dr\u00e6bes de gamle pods alle p\u00e5 \u00e9n gang og erstattes med nye:<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet relevante manifest ser omtrent s\u00e5dan ud:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: Recreate\n  template:\n  ...<\/code><\/pre>\n<p><\/p>\n<h3>Blue\/Green (bl\u00e5\/gr\u00f8nne udrulninger)<\/h3>\n<p>\nStrategien for bl\u00e5\/gr\u00f8nne udrulninger (nogle gange kaldet r\u00f8d\/sort) indeb\u00e6rer samtidig udrulning af den gamle (gr\u00f8nne) og den nye (bl\u00e5) version af applikationen. Efter at begge versioner er placeret, f\u00e5r almindelige brugere adgang til den gr\u00f8nne, mens den bl\u00e5 er tilg\u00e6ngelig for QA-teamet til automatiserede tests via en separat service eller direkte port-forwarding:<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/6664b625c99e089acf01c92edce0b45a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp-02\nspec:\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n        version: \"02\"<\/code><\/pre>\n<p>\nN\u00e5r den bl\u00e5 (nye) version er testet og dens udgivelse er godkendt, skifter tjenesten til den, mens den gr\u00f8nne (gamle) rulles tilbage:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Service\nmetadata:\n  name: awesomeapp\nspec:\n  selector:\n    app: awesomeapp\n    version: \"02\"\n...<\/code><\/pre>\n<p><\/p>\n<h3>Canary (kanariefugleudrulninger)<\/h3>\n<p>\nKanariefugleudrulninger ligner de bl\u00e5\/gr\u00f8nne, men styres bedre og bruger <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">en progressiv<\/a><\/noindex> trinvist tilgang. Denne type inkluderer flere forskellige strategier, herunder 'skjulte' lanceringer og A\/B-test.<\/p>\n<p>Denne strategi anvendes, n\u00e5r det er n\u00f8dvendigt at teste en ny funktionalitet, typisk i backend af en applikation. Essensen af tilgangen er at oprette to n\u00e6sten identiske servere: den ene betjener n\u00e6sten alle brugere, mens den anden, med de nye funktioner, kun betjener en lille undergruppe af brugere, hvorefter resultaterne af deres arbejde sammenlignes. Hvis alt forl\u00f8ber uden fejl, rulles den nye version gradvist ud til hele infrastrukturen.<\/p>\n<p>Selvom denne strategi kan gennemf\u00f8res udelukkende med Kubernetes, ved at erstatte de gamle pods med nye, er det meget lettere og mere praktisk at bruge en service mesh som Istio.<\/p>\n<p>For eksempel kan du have to forskellige manifester i Git: en normal med tagget 0.1.0 og en 'kanariefugle' med tagget 0.2.0. Ved at \u00e6ndre v\u00e6gtene i Istios virtuelle gateway-manifest kan du styre trafikfordelingen mellem disse to deployment:<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/d75dc34fea187c4e67879d0f64f9251c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn trin-for-trin vejledning til implementering af kanariefugle deployments med Istio kan findes i materialet <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-workflows-for-istio-canary-deployments\">GitOps Workflows with Istio<\/a><\/noindex>. <i>(<b>Bem. overs.<\/b>: Vi har ogs\u00e5 oversat materialet om kanariefugle udrulninger i Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">her<\/a><\/noindex>.)<\/i><\/p>\n<h4>Kanariefugle deployments med Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> g\u00f8r det nemt og effektivt at styre kanariefugle udrulninger.<\/p>\n<p>Flagger automatiserer arbejdet med dem. Den bruger Istio eller AWS App Mesh til at dirigere og skifte trafik samt Prometheus-metrikker til at analysere resultaterne. Desuden kan analysen af kanariefugle udrulninger suppleres med webhooks til at udf\u00f8re accepttest, belastningstest og enhver anden type kontroller.<\/p>\n<p>Baseret p\u00e5 Kubernetes deployment og, om n\u00f8dvendigt, horisontal skalering af pods (HPA), opretter Flagger s\u00e6t af objekter (Kubernetes deployments, ClusterIP-tjenester og virtuelle tjenester i Istio eller App Mesh) til at udf\u00f8re analyser og implementere kanariefugle deployeringer:<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVed at implementere en kontrolsl\u00f8jfe <i>(control loop)<\/i>, Flagger skifter gradvist trafikken til kanariefugleserveren, mens den m\u00e5ler n\u00f8glepr\u00e6stationsindikatorer, s\u00e5som andelen af succesfulde HTTP-anmodninger, den gennemsnitlige anmodningstid og sundheden af pods. Baseret p\u00e5 analysen af KPI (n\u00f8glepr\u00e6stationsindikatorer) vokser kanariedelen eller schrinks, og analysens resultater offentligg\u00f8res i Slack. Beskrivelsen og demonstration af denne proces kan findes i materialet. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/progressive-delivery-for-aws-app-mesh\">Progressive Delivery for App Mesh<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Darker (skjulte) eller A\/B-udrulninger<\/h3>\n<p>\nSkjult udrulning er en anden variant af kanaristrategien (som Flagger ogs\u00e5 kan arbejde med). Forskellen mellem skjulte og kanariske udrulninger er, at skjulte udrulninger handler om frontend og ikke backend, som kanariske udrulninger.<\/p>\n<p>Et andet navn for disse udrulninger er A\/B-testning. I stedet for at \u00e5bne for en ny funktion for alle brugere, tilbys den kun til en begr\u00e6nset del af dem. Normalt ved disse brugere ikke, at de fungerer som testere (deraf termen \"skjult udrulning\").<\/p>\n<p>Ved hj\u00e6lp af funktionalitetsomskiftere <i>(feature toggles)<\/i> og andre v\u00e6rkt\u00f8jer kan man overv\u00e5ge, hvordan brugerne interagerer med den nye funktion, om den fanger deres opm\u00e6rksomhed, eller om de finder den nye brugergr\u00e6nseflade forvirrende, samt andre typer metrics.<\/p>\n<p><img decoding=\"async\" alt=\"Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger og A\/B-udrulninger<\/h4>\n<p>\nUd over v\u00e6gtet routing kan Flagger ogs\u00e5 dirigere trafik til en kanariseret server baseret p\u00e5 HTTP-parametre. Ved A\/B-testning kan man bruge HTTP-headers eller cookies til at omdirigere en bestemt brugergruppe. Dette er s\u00e6rligt effektivt for frontend-applikationer, der kr\u00e6ver session-affinitet til serveren <i>(session affinity)<\/i>. Yderligere information kan findes i Flagger-dokumentationen.<\/p>\n<p><i>Forfatteren takker <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, ingeni\u00f8r hos Weaveworks (og skaber af Flagger), for alle disse fantastiske udrulningsskemaer.<\/i><\/p>\n<h2>P.S. fra overs\u00e6tteren<\/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\/447180\/\">Oversigt og sammenligning af Ingress controllere til Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 vores v\u00e6rkt\u00f8j til CI\/CD i Kubernetes (oversigt og video af pr\u00e6sentationen)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Bygning og udrulning af ensartede mikrotjenester med werf og GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">Hvad er GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/471620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u042d\u0442\u043e\u0442 \u043e\u0431\u0437\u043e\u0440\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 Weaveworks \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f\u043c\u0438 \u0432\u044b\u043a\u0430\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kubernetes-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 Flagger. \u041e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u0434\u0430\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c. \u0421\u0445\u0435\u043c\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0432\u044b\u043a\u0430\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u0432 Container Solutions \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 [&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-52688","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=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\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\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\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\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\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-11-13T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:29+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\udd47Udrulningsstrategier i Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testning) | ProHoster","description":"Bem.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","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\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","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-11-13T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52688","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-24 04:27:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:03:32","updated":"2026-01-24 04:27:20","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\/52688","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=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}