{"id":83787,"date":"2020-06-03T07:42:26","date_gmt":"2020-06-03T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2"},"modified":"2020-06-03T07:42:26","modified_gmt":"2020-06-03T05:42:26","slug":"devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","title":{"rendered":"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes er et fremragende v\u00e6rkt\u00f8j til at k\u00f8re Docker-containere i en klyngemilj\u00f8 i produktion. Men der er opgaver, som Kubernetes ikke kan l\u00f8se. Ved hyppig implementering i produktionsmilj\u00f8et har vi brug for en fuldt automatiseret Blue\/Green deployment for at undg\u00e5 nedetid i denne proces, hvor det ogs\u00e5 er n\u00f8dvendigt at h\u00e5ndtere eksterne HTTP-anmodninger og udf\u00f8re SSL-udtr\u00e6kning. Dette kr\u00e6ver integration med en lastbalancer, s\u00e5som ha-proxy. En anden udfordring er semi-automatiseret skalering af selve Kubernetes-klyngen, n\u00e5r man arbejder i et cloud-milj\u00f8, for eksempel delvis nedskalering af klyngen om natten.<\/p>\n<p>Selvom Kubernetes ikke har disse funktioner lige \u00abud af boksen\u00bb, giver det API'er, som kan udnyttes til at l\u00f8se s\u00e5danne opgaver. V\u00e6rkt\u00f8jer til automatiseret Blue\/Green deployment og skalering af Kubernetes-klyngen er blevet udviklet under Cloud RTI-projektet, som er baseret p\u00e5 open-source.<\/p>\n<p>I denne artikel, som er en transskription af en video, beskrives, hvordan man konfigurerer Kubernetes sammen med andre open-source komponenter for at opn\u00e5 et produktionsklart milj\u00f8, der uden nedetid i produktionen modtager koden fra git commit-\u00e6ndringer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/43a4ba56526a91b6f3d1fb16c159cc1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504666\/\">DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 1<\/a><\/noindex><\/p>\n<p>S\u00e5 snart du har f\u00e5et adgang til dine applikationer fra den eksterne verden, kan du g\u00e5 videre med at fuldautomatisere ops\u00e6tningen, det vil sige n\u00e5 til det punkt, hvor du kan udf\u00f8re en git commit og sikre, at denne git commit ender i produktion. Det er indlysende, at n\u00e5r disse skridt implementeres, og implementeringen finder sted, \u00f8nsker vi ikke at opleve nedetid. S\u00e5 enhver automatisering i Kubernetes starter med API'et. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/aa470c1562e49d98a164e0485196426e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes er ikke det v\u00e6rkt\u00f8j, der kan bruges produktivt \u00ablige ud af boksen\u00bb. Selvf\u00f8lgelig kan du g\u00f8re det s\u00e5dan, bruge kubectl osv., men API'et er virkelig den mest interessante og nyttige del af denne platform. Ved at bruge API'et som et s\u00e6t funktioner kan du f\u00e5 adgang til n\u00e6sten alt, hvad du \u00f8nsker at g\u00f8re i Kubernetes. Selve kubectl bruger ogs\u00e5 REST API. <\/p>\n<p>Dette er REST, s\u00e5 du kan bruge ethvert sprog og v\u00e6rkt\u00f8j til at arbejde med dette API, men brugerbibliotekerne vil g\u00f8re dit liv meget lettere. Mit team har skrevet to s\u00e5danne biblioteker: et til Java \/ OSGi og et til Go. Det andet bruges ikke s\u00e5 ofte, men uanset hvad har du disse nyttige v\u00e6rkt\u00f8jer til r\u00e5dighed. De udg\u00f8r delvist et licenseret open-source projekt. Der findes mange s\u00e5danne biblioteker til forskellige sprog, s\u00e5 du kan v\u00e6lge dem, der passer bedst til dine behov. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/808865e4cda6023c6775ec9e581fc46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 f\u00f8r du g\u00e5r i gang med at automatisere implementeringen, skal du s\u00f8rge for, at denne proces ikke vil v\u00e6re udsat for nedetid. For eksempel udf\u00f8rer vores team produktionsimplementering midt p\u00e5 dagen, n\u00e5r folk bruger applikationerne mest, s\u00e5 det er meget vigtigt at undg\u00e5 forsinkelser i denne proces. For at undg\u00e5 nedetid anvendes der to metoder: blue\/green-implementering eller rolling update. I det sidstn\u00e6vnte tilf\u00e6lde, hvis du har 5 replikaer af applikationen, bliver de opdateret \u00e9n efter \u00e9n. Denne metode fungerer fremragende, men den egner sig ikke, hvis der k\u00f8rer forskellige versioner af applikationen samtidigt under implementeringen. I s\u00e5 fald kan du opdatere brugergr\u00e6nsefladen, mens backenden k\u00f8rer den gamle version, og applikationen vil stoppe med at fungere. Derfor er det ret udfordrende at arbejde under s\u00e5danne forhold. <\/p>\n<p>Dette er en af grundene til, at vi foretr\u00e6kker at bruge blue\/green-implementering til automatisk at implementere vores applikationer. Ved denne metode skal du sikre dig, at der kun er \u00e9n aktiv version af applikationen p\u00e5 et givent tidspunkt. <\/p>\n<p>Mechanismen for blue\/green-implementering ser s\u00e5ledes ud. Vi modtager trafik til vores applikationer gennem ha-proxy, som dirigerer den til de aktive replikaer af applikationen med samme version. <\/p>\n<p>N\u00e5r der udf\u00f8res en ny implementering, bruger vi Deployer, som f\u00e5r nye komponenter, og den implementerer den nye version. Implementeringen af den nye version af applikationen betyder, at et nyt s\u00e6t replikaer \"opstilles\", hvorefter disse replikaer af den nye version startes i en separat, ny pod. Men ha-proxy ved endnu ikke noget om dem og dirigerer i \u00f8jeblikket ingen arbejdsbyrde til dem.<\/p>\n<p>Derfor er det f\u00f8rst n\u00f8dvendigt at udf\u00f8re en sundhedstjek af de nye versioner for at sikre, at replikaerne er klar til at h\u00e5ndtere arbejdsbyrden.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle implementeringskomponenter skal underst\u00f8tte en form for sundhedstjek. Dette kan v\u00e6re et meget simpelt HTTP-kald, hvor du f\u00e5r en statuskode 200, eller en mere dybdeg\u00e5ende kontrol, hvor du tjekker forbindelsen mellem replikaerne og databasen samt andre tjenester, stabiliteten af forbindelserne i det dynamiske milj\u00f8, samt om alt k\u00f8rer og fungerer korrekt. Denne proces kan v\u00e6re ret kompliceret. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r systemet har sikret sig, at alle opdaterede replikaer fungerer korrekt, vil Deployer opdatere konfigurationen og videresende den korrekte confd, der omkonfigurerer ha-proxy. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f8rst efter dette vil trafikken blive sendt til pod'en med replikaerne af den nye version, og den gamle pod forsvinder. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDenne mekanisme er ikke en funktion af Kubernetes. Konceptet Blue\/green deployment har eksisteret i lang tid og har altid brugt en belastningsbalance. F\u00f8rst dirigerer du al trafik til den gamle version af applikationen, og efter opdateringen flytter du det helt til den nye version. Dette princip anvendes ikke kun i Kubernetes.<\/p>\n<p>Nu vil jeg pr\u00e6sentere en ny implementeringskomponent \u2013 Deployer, som udf\u00f8rer sundhedstjek, rekonfigurerer proxyen og s\u00e5 videre. Dette er et koncept, der ikke henviser til den ydre verden og eksisterer inden i Kubernetes. Jeg vil vise, hvordan man kan oprette sit eget Deployer-koncept ved hj\u00e6lp af open-source v\u00e6rkt\u00f8jer. <\/p>\n<p>S\u00e5 det f\u00f8rste, som Deployer g\u00f8r, er at oprette en Replikations Controller (RC) ved hj\u00e6lp af Kubernetes API'en. Denne API opretter pods og services til yderligere udrulning, det vil sige den opretter et helt nyt cluster til vores applikationer. S\u00e5 snart RC'en har sikret sig, at replikaerne er startet, udf\u00f8res en sundhedstjek for deres funktionalitet. Til dette bruger Deployer kommandoen GET \/health. Den starter de relevante kontrolkomponenter og tjekker alle elementer, der er n\u00f8dvendige for, at clusteren fungerer. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r alle pods har rapporteret om deres \"sundhed\", opretter Deployer et nyt konfigurationselement \u2013 et distribueret lager etcd, som bruges indenfor Kubernetes, herunder til at gemme konfigurationen for belastningsfordeleren. Vi skriver data til etcd, og et lille v\u00e6rkt\u00f8j, confd, overv\u00e5ger etcd for nye data. <\/p>\n<p>Hvis det opdager \u00e6ndringer i den oprindelige konfiguration, genererer det en ny konfigurationsfil og sender den til ha-proxy. I dette tilf\u00e6lde genstartes ha-proxy uden at miste nogen forbindelser, og den adresserer belastningen til de nye services, som underst\u00f8tter den nye version af vores applikationer. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom du kan se, er der ikke noget kompliceret her p\u00e5 trods af m\u00e6ngden af komponenter. Du skal blot v\u00e6re opm\u00e6rksom p\u00e5 API'en og etcd. Jeg vil gerne fort\u00e6lle om en open-source deployer, som vi selv bruger \u2013 Amdatu Kubernetes Deployer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er et v\u00e6rkt\u00f8j til orkestrering af Kubernetes-udrulninger med f\u00f8lgende funktioner: <\/p>\n<ul>\n<li>Blue\/Green deployment;<\/li>\n<li>konfiguration af ekstern belastningsfordeler;<\/li>\n<li>h\u00e5ndtering af deployments beskrivelser;<\/li>\n<li>h\u00e5ndtering af den faktiske udrulning;<\/li>\n<li>sundhedstjek under udrulning;<\/li>\n<li>indf\u00f8relse af milj\u00f8variabler i pods.<\/li>\n<\/ul>\n<p>\nDenne Deployer er bygget ovenp\u00e5 Kubernetes API'en og tilbyder et REST API til at styre beskrivelser og udrulninger samt et Websocket API til streaming af logs under udrulningen.<\/p>\n<p>Den placerer konfigurationsdata for belastningsfordeleren i etcd, s\u00e5 du kan v\u00e6lge ikke at bruge ha-proxy med underst\u00f8ttelse 'out-of-the-box' og nemt anvende din egen konfigurationsfil til belastningsfordeleren. Amdatu Deployer er skrevet i Go, ligesom Kubernetes selv, og er licenseret under Apache.<\/p>\n<p>F\u00f8r jeg begyndte at bruge denne version af deployeren, benyttede jeg f\u00f8lgende deploy-beskrivelse, der angiver de parametre, jeg har brug for. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/14e9ecca6ad772a43afcf95a4950fad8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn af de vigtige parametre i denne kode er aktiveringen af flaget \"useHealthCheck\". Vi skal angive, at der under deployment skal udf\u00f8res en sundhedstjek. Dette parameter kan deaktiveres, n\u00e5r der anvendes containere fra tredjepart, som ikke skal kontrolleres. I denne beskrivelse er antallet af replikaer og URL'en til front-enden, som ha-proxyen har brug for, ogs\u00e5 angivet. Til sidst er flaget for podspecifikationen \"podspec\", som henvender sig til Kubernetes for at hente oplysninger om portkonfigurationen, billedet osv. Dette er en ret simpel beskrivelse i JSON-format. <\/p>\n<p>Et andet v\u00e6rkt\u00f8j, der er en del af open-source-projektet Amdatu, er Deploymentctl. Det har et brugergr\u00e6nseflade UI til konfiguration af deployment, gemmer deploymentshistorik og indeholder webhooks til tilbagekaldelser af tredjepartsbrugere og udviklere. Du kan v\u00e6lge ikke at bruge UI, da Amdatu Deployer selv er et REST API, men dette interface kan g\u00f8re deployment meget lettere for dig uden at skulle involvere et API. Deploymentctl er skrevet i OSGi\/Vertx ved hj\u00e6lp af Angular 2. <\/p>\n<p>Nu vil jeg demonstrere det, jeg lige har sagt onscreen, ved at bruge en forudindspillet optagelse, s\u00e5 du ikke skal vente. Vi vil deployere en simpel applikation skrevet i Go. Bekymr dig ikke, hvis du ikke har arbejdet med Go f\u00f8r; det er en meget simpel applikation, s\u00e5 du b\u00f8r kunne f\u00f8lge med. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer opretter vi en HTTP-server, der kun svarer p\u00e5 \/health, s\u00e5 denne applikation kun kontrollerer sundhedstjek og ikke mere. Hvis tjekket g\u00e5r igennem, aktiveres den JSON-struktur, som vises nedenfor. Den indeholder versionen af den applikation, der skal deployeres af deployeren, message, som du ser \u00f8verst i filen, og en boolean datatyper \u2014 om vores applikation fungerer eller ej.<\/p>\n<p>Jeg var lidt smart med den sidste linje, fordi jeg i toppen af filen satte en fast boolean-v\u00e6rdi, som senere vil hj\u00e6lpe mig med at deployere selv en \"usund\" applikation. Det vender vi tilbage til senere. <\/p>\n<p>Lad os komme i gang. F\u00f8rst tjekker vi for nogen k\u00f8rende pods ved hj\u00e6lp af kommandoen ~ kubectl get pods, og ved frav\u00e6ret af svar fra frontend-URL\u2019en bekr\u00e6fter vi, at der i \u00f8jeblikket ikke er nogen implementeringer i gang. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDern\u00e6st kan I p\u00e5 sk\u00e6rmen se det interface, jeg n\u00e6vnte, kaldet Deploymentctl, hvor parametre for implementering fasts\u00e6ttes: navnerum, applikationsnavn, implementeringsversion, antal replikater, frontend-URL, containerens navn, billede, ressourcegr\u00e6nser, portnummer til health check osv. Ressourcegr\u00e6nser er meget vigtige, da de tillader maksimal udnyttelse af hardware. Her kan man ogs\u00e5 se loggen for implementeringen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis vi gentager kommandoen ~ kubectl get pods, kan vi se, at systemet \"fryser\" i 20 sekunder, hvor ha-proxy rekonfigureres. Herefter starter pod\u2019en, og vi kan se vores replika i implementeringsloggen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/c6c8f6335e00d3a9cfcf4d4792ecf795.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJeg har klippet det 20-sekunders ventetid ud fra videoen, og nu ser I p\u00e5 sk\u00e6rmen, at den f\u00f8rste version af applikationen er implementeret. Alt dette blev gjort udelukkende ved hj\u00e6lp af UI. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/d21fa9ad71e22b2bb9efdfc7bc9c8771.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad os nu pr\u00f8ve den anden version. Til dette \u00e6ndrer jeg meddelelsen i applikationen fra \"Hello, Kubernetes!\" til \"Hello, Deployer!\", systemet opretter dette billede og placerer det i Docker-registeret, hvorefter vi blot trykker p\u00e5 knappen \"Deploy\" igen i vinduet Deploymentctl. Under denne proces starter loggen for implementeringen automatisk p\u00e5 samme m\u00e5de, som det skete ved implementeringen af den f\u00f8rste version af applikationen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/e4ef784649fd18b1580d2562b318ac0f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKommandoen ~ kubectl get pods viser, at der i \u00f8jeblikket k\u00f8rer 2 versioner af applikationen, men frontend viser, at vi stadig k\u00f8rer version 1. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLastbalancer venter p\u00e5, at health check skal gennemf\u00f8res, hvorefter den vil omdirigere trafikken til den nye version. Efter 20 sekunder skifter vi til curl og ser, at vi nu har den 2. version af applikationen implementeret, mens den f\u00f8rste er blevet fjernet. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDette var implementeringen af en \"sund\" - healthy - applikation. Lad os se hvad der sker, hvis jeg \u00e6ndrer v\u00e6rdien af parameteren Healthy for den nye applikation fra true til false, dvs. hvis jeg pr\u00f8ver at implementere en unhealthy applikation, der ikke bestod health check. Dette kan ske, hvis der i udviklingen er blevet gjort konfigurationsfejl i applikationen, og den p\u00e5 den m\u00e5de blev sendt til produktion. <\/p>\n<p>Som du kan se, gennemg\u00e5r implementeringen alle de tidligere n\u00e6vnte trin, og ~ kubectl get pods viser, at begge pods k\u00f8rer. Men i mods\u00e6tning til den tidligere implementering viser loggen en timeout-status. Det vil sige, at den nye version af applikationen ikke kan implementeres, fordi health check ikke bestod. Som et resultat ser du, at systemet er vendt tilbage til at bruge den gamle version af applikationen, mens den nye version blot er blevet slettet. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet gode ved dette er, at selv hvis du har et stort antal samtidige foresp\u00f8rgsler, der kommer ind i applikationen, vil de overhovedet ikke bem\u00e6rke nedetid under implementeringsproceduren. Hvis man tester denne applikation med Gatling-rammen, som sender det maksimale antal foresp\u00f8rgsler til den, bliver ingen af disse foresp\u00f8rgsler droppet. Det betyder, at vores brugere slet ikke vil bem\u00e6rke opdateringen af versionerne i realtid. Hvis det fejler, forts\u00e6tter driften med den gamle version. Hvis det lykkes, vil brugerne overg\u00e5 til den nye version. <\/p>\n<p>Der er kun \u00e9n ting, der kan f\u00f8re til fejl \u2013 hvis health check bestod, men applikationen fejler, s\u00e5 snart den modtager arbejdsbelastningen, det vil sige, at kollapsen kun vil indtr\u00e6ffe efter implementeringen er gennemf\u00f8rt. I s\u00e5 fald skal du manuelt rulle tilbage til den gamle version. S\u00e5ledes har vi set p\u00e5, hvordan man bruger Kubernetes sammen med dedikerede open-source v\u00e6rkt\u00f8jer til det. Implementeringsproceduren vil v\u00e6re meget simplere, hvis du integrerer disse v\u00e6rkt\u00f8jer i Build\/Deploy pipelines. Du kan bruge b\u00e5de brugergr\u00e6nsefladen og helt automatisere denne proces, for eksempel ved at anvende commit til master. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVores Build Server vil oprette et Docker-image, uploade det til Docker Hub eller en anden registrering, du bruger. Docker Hub underst\u00f8tter webhook, s\u00e5 vi kan starte en fjernimplementering via Deployer som beskrevet ovenfor. Dette g\u00f8r det muligt at automatisere implementeringen af applikationen til potentiel produktion fuldst\u00e6ndigt. <\/p>\n<p>Lad os g\u00e5 videre til emnet for skalering af Kubernetes-klyngen. Jeg vil bem\u00e6rke, at kubectl-kommandoen er en skalering-kommando. Med den kan man nemt \u00f8ge antallet af replikaer i den eksisterende klynge. I praksis \u00f8nsker vi dog ofte at \u00f8ge antallet af ikke pods, men noder. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI arbejdstiden kan du have behov for at \u00f8ge antallet, mens det om natten, for at reducere omkostningerne ved Amazon-tjenesterne, kan v\u00e6re n\u00f8dvendigt at reducere antallet af aktive programinstanser. Dette betyder ikke, at det er tilstr\u00e6kkeligt kun at skalere antallet af pods, fordi selv hvis en af noderne er ubenyttet, skal du stadig betale for den til Amazon. Det vil sige, at du ud over at skalere pods ogs\u00e5 skal skalere antallet af anvendte maskiner. <\/p>\n<p>Dette kan skabe udfordringer, fordi uanset om vi bruger Amazon eller en anden cloud-tjeneste, har Kubernetes ingen information om antallet af anvendte maskiner. Den mangler et v\u00e6rkt\u00f8j til at skalere systemet p\u00e5 nodeniveau. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 vi m\u00e5 tage os af b\u00e5de noderne og pods. Vi kan nemt skalere oprettelsen af nye noder ved hj\u00e6lp af AWS API og autoskaleringsgrupper til at indstille antallet af arbejdsenheder i Kubernetes. Det er ogs\u00e5 muligt at bruge cloud-init eller et lignende script til at registrere noder i Kubernetes-klyngen. <\/p>\n<p>Den nye maskine starter i Scaling-gruppen, registrerer sig som en node, registreres i masterregisteret og begynder at arbejde. Derefter kan antallet af replikaer \u00f8ges til brug p\u00e5 de dannede noder. Nedskalering kr\u00e6ver st\u00f8rre indsats, da det er n\u00f8dvendigt at sikre, at denne handling ikke f\u00f8rer til \u00f8del\u00e6ggelse af allerede k\u00f8rende applikationer efter frakobling af \"un\u00f8dvendige\" maskiner. For at forhindre et s\u00e5dant scenarie skal noderne bringes til status \"unschedulable\". Dette betyder, at planl\u00e6ggeren som standard ved planl\u00e6gning af DaemonSet-pods vil ignorere disse noder. Planl\u00e6ggeren vil ikke slette noget fra disse servere, men vil heller ikke starte nye containere der. Det n\u00e6ste skridt er at dr\u00e6ne noden, hvilket indeb\u00e6rer at overf\u00f8re k\u00f8rende pods til en anden maskine eller andre noder, der har tilstr\u00e6kkelig kapacitet til dette. N\u00e5r det er bekr\u00e6ftet, at der ikke l\u00e6ngere er nogen containere p\u00e5 disse noder, kan de slettes fra Kubernetes. For Kubernetes vil de derefter blot oph\u00f8re med at eksistere. Derefter skal AWS API bruges til at slukke for de un\u00f8dvendige noder eller maskiner. <br \/>\nDu kan bruge Amdatu Scalerd \u2014 et andet open-source v\u00e6rkt\u00f8j til skalering, der ligner AWS API. Det leverer CLI til at tilf\u00f8je eller fjerne noder i klyngen. En interessant funktion ved det er muligheden for at konfigurere planl\u00e6ggeren med f\u00f8lgende json-fil. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/f70c7c722cacb4792c316e9f80a7500a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen viste kode reducerer halvdelen af klyngens kapacitet i natperioden. Den er konfigureret b\u00e5de med antallet af nuv\u00e6rende replikaer og den \u00f8nskede kapacitet i Amazon-klyngen. Brug af denne planl\u00e6gger vil automatisk reducere antallet af noder om natten og \u00f8ge dem om morgenen, hvilket sparer omkostningerne ved at bruge noder i en cloud-service som Amazon. Denne funktion er ikke indbygget i Kubernetes, men brug af Scalerd vil give dig mulighed for at skalere denne platform, som du vil. <\/p>\n<p>Jeg vil gerne p\u00e5pege, at mange mennesker siger til mig: \"Alt dette er godt, men hvad med min database, som normalt befinder sig i en statisk tilstand?\" Hvordan kan man k\u00f8re noget lignende i et s\u00e5 dynamisk milj\u00f8 som Kubernetes? Efter min mening b\u00f8r du ikke g\u00f8re det; du b\u00f8r ikke fors\u00f8ge at organisere datalagring i Kubernetes. Teknisk set er det muligt, og der er vejledninger om emnet p\u00e5 internettet, men det vil alvorligt komplicere dit liv. <\/p>\n<p>Ja, i Kubernetes findes der begrebet vedholdende lagringsl\u00f8sninger, og du kan fors\u00f8ge at k\u00f8re datalagringsl\u00f8sninger som Mongo eller MySQL, men det er en ret ressourcekr\u00e6vende opgave. Dette skyldes, at datalagringsl\u00f8sninger ikke fuldt ud underst\u00f8tter interaktionen med dynamiske milj\u00f8er. De fleste databaser kr\u00e6ver betydelig konfiguration, herunder manuel cluster-konfiguration, og de kan ikke lide autoskalering og lignende. <br \/>\nDerfor b\u00f8r du ikke komplicere dit liv ved at fors\u00f8ge at k\u00f8re datalagring i Kubernetes. Organiser deres drift p\u00e5 den traditionelle m\u00e5de ved at bruge velkendte tjenester og lad Kubernetes f\u00e5 mulighed for at anvende dem.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTil slut vil jeg introducere jer for platformen Cloud RTI baseret p\u00e5 Kubernetes, som mit team arbejder p\u00e5. Den giver centraliseret logf\u00f8ring, applikations- og clusteroverv\u00e5gning og har mange andre nyttige funktioner, som du f\u00e5r brug for. Den bruger forskellige open-source v\u00e6rkt\u00f8jer, s\u00e5som Grafana til overv\u00e5gning.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/a0e79033dbc0a2683e3567934c9ba014.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af implementering. Del 2\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer blev stillet et sp\u00f8rgsm\u00e5l om, hvorfor man skulle bruge en load balancer ha-proxy med Kubernetes. Det er et godt sp\u00f8rgsm\u00e5l, for i \u00f8jeblikket findes der 2 niveauer af load balancing. Kubernetes-tjenester forbliver stadig p\u00e5 virtuelle IP-adresser. Du kan ikke bruge dem til portene p\u00e5 eksterne v\u00e6rtmaskiner, fordi hvis Amazon overbelaster sin cloud-v\u00e6rt, \u00e6ndres adressen. Derfor placerer vi ha-proxy foran tjenesterne \u2014 for at skabe en mere statisk struktur for uafbrudt trafikinteraktion med Kubernetes. <\/p>\n<p>Et andet godt sp\u00f8rgsm\u00e5l \u2013 hvordan kan man h\u00e5ndtere \u00e6ndringer i databasen under blue\/green deployment? Uanset om du bruger Kubernetes, er det en kompleks opgave at \u00e6ndre databasen. Du skal sikre, at den gamle og den nye skema er kompatible, hvorefter du kan opdatere databasen og derefter opdatere selve applikationerne. Du kan udf\u00f8re 'hot swapping' af databasen og derefter opdatere applikationerne. Jeg kender folk, der har indl\u00e6st et helt nyt databasekluster med det nye skema, hvilket er en mulighed, hvis du har en schema-less database som Mongo, men det er under alle omst\u00e6ndigheder ikke en simpel opgave. Hvis der ikke er flere sp\u00f8rgsm\u00e5l, tak for opm\u00e6rksomheden!<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"-Ci4vd4rh4M\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/-Ci4vd4rh4M\/hqdefault.jpg\" alt=\"Afspil video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Lidt reklame \ud83d\ude42<\/h3>\n<p>\nTak fordi du bliver hos os. Kan du lide vores artikler? \u00d8nsker du at se flere interessante materialer? St\u00f8t os ved at bestille eller anbefale os til dine bekendte, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloud VPS til udviklere fra 4,99 $<\/a><\/noindex>, <b>en unik analog til entry-level servere, som vi har designet til dig:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Alt om VPS (KVM) E5-2697 v3 (6 kerner) 10 GB DDR4 480 GB SSD 1 Gbps fra 19 $ eller hvordan man deler serveren korrekt?<\/a><\/noindex> (tilg\u00e6ngelige muligheder med RAID1 og RAID10, op til 24 kerner og op til 40 GB DDR4).<\/p>\n<p><b>Dell R730xd til halv pris i datacenteret Equinix Tier IV i Amsterdam?<\/b> Kun hos os <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB fra 199 $<\/a><\/noindex> i Holland! <b>Dell R420 - 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - fra 99 $!<\/b><\/b> L\u00e6s om hvordan <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">man bygger enterprise-infrastruktur ved hj\u00e6lp af Dell R730xd E5-2650 v4 servere til 9000 euro for en br\u00f8kdel af prisen?<\/a><\/noindex><br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504672\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\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\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\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\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-03T05:42:26+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\udd47DEVOXX UK. Kubernetes i produktion: Blue\/Green deployment, autoskalering og automatisering af udrulning. Del 2 | ProHoster","description":"Kubernetes er et fremragende v\u00e6rkt\u00f8j til at k\u00f8re Docker-containere i en klynget levende produktionsmilj\u00f8. Dog er der opgaver, som Kubernetes ikke kan l\u00f8se.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","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\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-03T05:42:26+00:00","article:modified_time":"2020-06-03T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83787","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:11:01","updated":"2022-09-28 11:45:41","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\/83787","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=83787"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/83787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/83788"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=83787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=83787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=83787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}