{"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\/it\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","title":{"rendered":"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell'implementazione. Parte 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes \u00e8 uno strumento eccellente per eseguire contenitori Docker in un ambiente produttivo clusterizzato. Tuttavia, esistono compiti che Kubernetes non \u00e8 in grado di gestire. Con distribuzioni frequenti in un ambiente di lavoro, abbiamo bisogno di un deployment Blue\/Green completamente automatizzato per evitare inattivit\u00e0 in questo processo, durante il quale \u00e8 anche necessario gestire le richieste HTTP esterne e gestire il caricamento SSL. Ci\u00f2 richiede integrazione con un bilanciatore di carico, come ha-proxy. Un altro compito \u00e8 il ridimensionamento semi-automatico del cluster Kubernetes stesso quando opera in un ambiente cloud, ad esempio, una riduzione parziale della dimensione del cluster durante la notte.<\/p>\n<p>Sebbene Kubernetes non disponga di queste funzionalit\u00e0 'out of the box', fornisce un'API che pu\u00f2 essere utilizzata per affrontare tali compiti. Gli strumenti per il deployment Blue\/Green automatizzato e il ridimensionamento del cluster Kubernetes sono stati sviluppati nell'ambito del progetto Cloud RTI, che \u00e8 stato creato sulla base di open-source.<\/p>\n<p>In questo articolo, nella trascrizione del video, si discute di come configurare Kubernetes insieme ad altri componenti open source per ottenere un ambiente pronto per la produzione, che riceve il codice dalla modifica git commit senza downtime in produzione.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 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 in produzione: deployment Blue\/Green, autoscaling e automazione del deployment. Parte 1<\/a><\/noindex><\/p>\n<p>Quindi, una volta che hai accesso alle tue applicazioni dal mondo esterno, puoi iniziare a configurare completamente l'automazione, portandola a uno stato in cui puoi eseguire un git commit e assicurarti che quel git commit si concluda in produzione. Naturalmente, durante l'implementazione di questi passaggi e durante il deployment, non vogliamo affrontare downtime. Quindi, ogni automazione in Kubernetes inizia con l'API. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/aa470c1562e49d98a164e0485196426e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes non \u00e8 uno strumento che pu\u00f2 essere utilizzato produttivamente 'out of the box'. Certo, puoi farlo, utilizzare kubectl e cos\u00ec via, ma l'API rimane la parte pi\u00f9 interessante e utile di questa piattaforma. Usando l'API come un insieme di funzioni, puoi accedere praticamente a tutto quello che desideri fare in Kubernetes. Anche kubectl utilizza REST API. <\/p>\n<p>Questo \u00e8 REST, quindi puoi utilizzare qualsiasi linguaggio e strumento per lavorare con questa API, ma le librerie utente possono semplificarti significativamente la vita. Il mio team ha scritto 2 di queste librerie: una per Java \/ OSGi e una per Go. Quest'ultima non viene utilizzata spesso, ma in ogni caso hai a disposizione queste cose utili. Rappresentano un progetto open-source parzialmente licenziato. Ci sono molte di queste librerie per diversi linguaggi, quindi puoi scegliere quelle pi\u00f9 adatte. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/808865e4cda6023c6775ec9e581fc46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, prima di iniziare l'automazione del deployment, \u00e8 necessario assicurarsi che questo processo non sar\u00e0 soggetto a fermi. Ad esempio, il nostro team effettua il deployment in produzione a met\u00e0 giornata, quando le persone utilizzano al massimo le applicazioni, quindi \u00e8 molto importante evitare ritardi in questo processo. Per evitare fermi, vengono utilizzati 2 metodi: il deployment blue\/green o l'aggiornamento continuo rolling update. Nel secondo caso, se hai 5 repliche dell'applicazione in esecuzione, vengono aggiornate una dopo l'altra. Questo metodo funziona molto bene, ma non \u00e8 adatto se durante il processo di deployment hai versioni diverse dell'applicazione in esecuzione contemporaneamente. In tal caso, puoi aggiornare l'interfaccia utente mentre il backend funziona con la vecchia versione, e il funzionamento dell'applicazione sar\u00e0 interrotto. Pertanto, dal punto di vista della programmazione, lavorare in tali condizioni \u00e8 piuttosto complicato. <\/p>\n<p>Questa \u00e8 una delle ragioni per cui preferiamo utilizzare il deployment blue\/green per automatizzare il deployment delle nostre applicazioni. Con questo metodo, devi assicurarti che in un dato momento sia attiva solo una versione dell'applicazione. <\/p>\n<p>Il meccanismo del deployment blue\/green funziona come segue. Riceviamo il traffico per le nostre applicazioni tramite ha-proxy, che lo indirizza alle repliche dell'applicazione della stessa versione in esecuzione. <\/p>\n<p>Quando viene effettuato un nuovo deployment, utilizziamo Deployer, al quale vengono forniti nuovi componenti, e lui effettua il deployment della nuova versione. Il deployment della nuova versione dell'applicazione significa che viene \"sollevato\" un nuovo set di repliche, dopo di che queste repliche della nuova versione vengono avviate in un pod separato e nuovo. Tuttavia, ha-proxy non sa nulla di esse e non indirizza ancora alcun carico di lavoro a loro.<\/p>\n<p>Pertanto, \u00e8 necessario innanzitutto eseguire un controllo di funzionalit\u00e0 delle nuove versioni health checking, per assicurarsi che le repliche siano pronte a gestire il carico.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutti i componenti del deployment devono supportare qualche forma di health check. Questo pu\u00f2 essere un controllo HTTP molto semplice in cui si riceve un codice di stato 200, o un controllo pi\u00f9 approfondito in cui si verifica la connessione delle repliche al database e ad altri servizi, la stabilit\u00e0 delle connessioni nell'ambiente dinamico, se tutto viene avviato e funziona correttamente. Questo processo pu\u00f2 essere piuttosto complesso. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDopo che il sistema si sar\u00e0 assicurato della funzionalit\u00e0 di tutte le repliche aggiornate, Deployer aggiorner\u00e0 la configurazione e passer\u00e0 il confd corretto, il quale riconfigurer\u00e0 ha-proxy. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSolo dopo questo il traffico sar\u00e0 diretto nel pod con le repliche della nuova versione, mentre il vecchio pod scomparir\u00e0. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto meccanismo non \u00e8 una peculiarit\u00e0 di Kubernetes. Il concetto di Blue\/green deployment esiste da molto tempo e ha sempre utilizzato un bilanciatore di carico. Inizialmente si indirizza tutto il traffico alla vecchia versione dell'applicazione, e dopo l'aggiornamento lo si sposta completamente sulla nuova versione. Questo principio non \u00e8 utilizzato solo in Kubernetes.<\/p>\n<p>Ora vi presenter\u00f2 un nuovo componente di deployment \u2013 Deployer, che esegue i controlli di funzionalit\u00e0, riconfigura il proxy e cos\u00ec via. \u00c8 un concetto che non riguarda il mondo esterno e esiste all'interno di Kubernetes. Vi mostrer\u00f2 come creare il proprio concetto Deployer utilizzando strumenti open-source. <\/p>\n<p>Quindi, la prima cosa che fa Deployer \u00e8 creare un controller di replicazione RC utilizzando l'API Kubernetes. Questa API crea pod e servizi per il successivo deployment, ovvero crea un nuovo cluster per le nostre applicazioni. Una volta che l'RC verifica che le repliche siano state avviate, eseguir\u00e0 un controllo di salute Health check. A tal fine, nel Deployer viene utilizzato il comando GET \/health. Questo avvia i componenti di verifica appropriati e controlla tutti gli elementi che garantiscono il funzionamento del cluster. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDopo che tutti i pod hanno segnalato il loro \"stato di salute\", Deployer crea un nuovo elemento di configurazione: un archivio distribuito etcd, utilizzato all'interno di Kubernetes, incluso per memorizzare la configurazione del bilanciatore di carico. Scriviamo i dati in etcd, e un piccolo strumento confd tiene traccia di etcd per eventuali nuovi dati. <\/p>\n<p>Se rileva delle modifiche alla configurazione iniziale, genera un nuovo file di configurazione e lo trasmette a ha-proxy. In questo caso, ha-proxy si riavvia senza perdere alcuna connessione e indirizza il carico verso i nuovi services, che garantiscono il funzionamento della nuova versione delle nostre applicazioni. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome vedete, nonostante la variet\u00e0 di componenti, non c'\u00e8 nulla di complicato. \u00c8 sufficiente prestare maggiore attenzione all'API e a etcd. Voglio parlarvi di un deployer open-source che utilizziamo noi stessi: Amdatu Kubernetes Deployer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 uno strumento per l'orchestrazione dei deployment di Kubernetes, dotato delle seguenti funzionalit\u00e0: <\/p>\n<ul>\n<li>deployment Blue\/Green;<\/li>\n<li>configurazione di un bilanciatore di carico esterno;<\/li>\n<li>gestione dei descrittori di deployment;<\/li>\n<li>gestione del deployment effettivo;<\/li>\n<li>verifica di salute Health checks durante il deployment;<\/li>\n<li>inserimento di variabili d'ambiente nei pod.<\/li>\n<\/ul>\n<p>\nQuesto Deployer \u00e8 costruito sulla base dell'API Kubernetes e offre un'API REST per la gestione dei descrittori e dei deployment, oltre a un'API Websocket per i log in tempo reale durante il processo di deployment.<\/p>\n<p>Inserisce i dati di configurazione del bilanciatore di carico in etcd, quindi puoi non utilizzare ha-proxy con supporto \"pronto all'uso\", ma facilmente utilizzare il tuo file di configurazione del bilanciatore. Amdatu Deployer \u00e8 scritto in Go, proprio come Kubernetes, e ha licenza Apache.<\/p>\n<p>Prima di iniziare a utilizzare questa versione del deployer, ho usato il seguente descrittore di distribuzione, in cui sono indicati i parametri necessari. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/14e9ecca6ad772a43afcf95a4950fad8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUno dei parametri importanti di questo codice \u00e8 l'attivazione del flag \"useHealthCheck\". Dobbiamo specificare che durante il processo di distribuzione \u00e8 necessario effettuare il controllo di funzionalit\u00e0. Questo parametro pu\u00f2 essere disattivato quando nella distribuzione vengono utilizzati contenitori di terze parti che non necessitano di essere controllati. In questo descrittore sono indicati anche il numero di repliche e l'URL del frontend necessario per ha-proxy. Infine, \u00e8 indicato il flag della specifica del pod \"podspec\", che si rivolge a Kubernetes per ottenere informazioni sulla configurazione delle porte, sull'immagine, ecc. Questo \u00e8 un descrittore piuttosto semplice in formato JSON. <\/p>\n<p>Un altro strumento che fa parte del progetto open-source Amdatu \u00e8 Deploymentctl. Ha un'interfaccia utente UI per configurare la distribuzione, memorizza la cronologia delle distribuzioni e contiene webhook per i callback da parte di utenti e sviluppatori esterni. Puoi anche non utilizzare l'UI, poich\u00e9 il Deployer Amdatu \u00e8 essenzialmente un'API REST, ma questa interfaccia pu\u00f2 semplificarti notevolmente la distribuzione senza dover ricorrere a nessuna API. Deploymentctl \u00e8 scritto in OSGi\/Vertx utilizzando Angular 2. <\/p>\n<p>Ora mostrer\u00f2 quanto detto sopra sullo schermo, utilizzando una registrazione preesistente, cos\u00ec non dovrete aspettare. Distribuiremo una semplice applicazione in Go. Non preoccupatevi se non avete mai avuto a che fare con Go, \u00e8 un'applicazione molto semplice, quindi tutto dovrebbe esservi chiaro. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui stiamo creando un server HTTP che risponde solo a \/health, quindi questa applicazione verifica solo il controllo di stato e nient'altro. Se il controllo passa, viene attivata la struttura JSON mostrata in basso. Contiene la versione dell'applicazione che sar\u00e0 distribuita dal deployer, un messaggio che vedete nella parte superiore del file e un tipo di dato booleano \u2014 se la nostra applicazione \u00e8 funzionante oppure no.<\/p>\n<p>Con l'ultima riga ho un po' barato, perch\u00e9 ho inserito in cima al file un valore booleano fisso, che mi aiuter\u00e0 successivamente a distribuire anche un'applicazione \"non sana\". Pi\u00f9 tardi ci occuperemo di questo. <\/p>\n<p>Iniziamo. Prima di tutto, controlliamo la presenza di eventuali pod in esecuzione utilizzando il comando ~ kubectl get pods e, in assenza di risposta dall'URL del frontend, ci assicuriamo che non siano in corso distribuzioni al momento. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoi, sullo schermo vedrete l'interfaccia Deploymentctl che ho menzionato, in cui vengono impostati i parametri di distribuzione: il namespace, il nome dell'applicazione, la versione della distribuzione, il numero di repliche, l'URL del frontend, il nome del contenitore, l'immagine, i limiti delle risorse, il numero di porta per il controllo di salute, ecc. I limiti delle risorse sono molto importanti perch\u00e9 consentono di sfruttare al massimo la potenza di calcolo disponibile. Qui \u00e8 possibile anche visualizzare il registro della distribuzione Deployment log.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe ora ripetiamo il comando ~ kubectl get pods, si nota che il sistema 'si blocca' per 20 secondi, durante i quali avviene la riconfigurazione di ha-proxy. Dopo di ci\u00f2, il pod viene avviato e la nostra replica pu\u00f2 essere vista nel registro della distribuzione. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/c6c8f6335e00d3a9cfcf4d4792ecf795.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHo tagliato dal video l'attesa di 20 secondi, e ora vedete sullo schermo che la prima versione dell'applicazione \u00e8 stata distribuita. Tutto ci\u00f2 \u00e8 stato fatto solamente utilizzando l'interfaccia utente. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/d21fa9ad71e22b2bb9efdfc7bc9c8771.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOra proviamo la seconda versione. A questo scopo, modifico il messaggio dell'applicazione da 'Hello, Kubernetes!' a 'Hello, Deployer!', il sistema crea questa immagine e la posiziona nel registro Docker, dopo di che premere ancora una volta il pulsante 'Deploy' nella finestra di Deploymentctl. In questo modo il registro della distribuzione si avvier\u00e0 automaticamente esattamente come \u00e8 avvenuto durante la distribuzione della prima versione dell'applicazione. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/e4ef784649fd18b1580d2562b318ac0f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl comando ~ kubectl get pods mostra che attualmente sono in esecuzione 2 versioni dell'applicazione, tuttavia il frontend mostra che abbiamo ancora in esecuzione la versione 1. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl bilanciatore di carico attende che venga eseguito il controllo di salute, dopodich\u00e9 reindirizzer\u00e0 il traffico sulla nuova versione. Dopo 20 secondi ci spostiamo su curl e vediamo che ora \u00e8 distribuita la versione 2 dell'applicazione, mentre la prima \u00e8 stata rimossa. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesta \u00e8 stata la distribuzione di un'applicazione 'sana' \u2014 healthy. Vediamo cosa accadr\u00e0 se per la nuova versione dell'applicazione modifico il valore del parametro Healthy da true a false, ovvero cercher\u00f2 di distribuire un'applicazione non sana, che non ha superato il controllo di funzionamento. Questo pu\u00f2 accadere se durante lo sviluppo dell'applicazione sono state commesse delle errori di configurazione, e in tale stato \u00e8 stata inviata in produzione. <\/p>\n<p>Come potete vedere, il deployment passa attraverso tutte le fasi precedentemente indicate, e ~ kubectl get pods mostra che entrambe le pod sono in esecuzione. Ma a differenza del precedente deployment, i log mostrano uno stato di timeout. Questo significa che, poich\u00e9 il controllo di health check non \u00e8 andato a buon fine, la nuova versione dell'app non pu\u00f2 essere distribuita. Di conseguenza, vedete che il sistema \u00e8 tornato a usare la vecchia versione dell'app, mentre la nuova versione \u00e8 stata semplicemente rimossa. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa cosa positiva \u00e8 che anche se avete un enorme numero di richieste simultanee che arrivano all'app, queste non noteranno nemmeno un'interruzione durante l'esecuzione della procedura di deployment. Se testate questa applicazione utilizzando il framework Gatling, che le invia il massimo numero possibile di richieste, nessuna di queste verr\u00e0 scartata. Questo significa che i nostri utenti non noteranno nemmeno l'aggiornamento delle versioni in tempo reale. Se fallir\u00e0, il lavoro continuer\u00e0 sulla vecchia versione, se avr\u00e0 successo, gli utenti passeranno alla nuova versione. <\/p>\n<p>C'\u00e8 solo una cosa che pu\u00f2 portare al fallimento: se il controllo di health check \u00e8 andato a buon fine e l'app ha avuto un crash non appena ha ricevuto il carico di lavoro, cio\u00e8 il collasso si verificher\u00e0 solo dopo che il deployment \u00e8 completato. In questo caso dovrete tornare manualmente alla vecchia versione. Quindi, abbiamo esaminato come utilizzare Kubernetes con strumenti open-source progettati per questo. La procedura di deployment sar\u00e0 molto pi\u00f9 semplice se integrate questi strumenti nei pipeline di Build\/Deploy. A questo punto, potete utilizzare sia l'interfaccia utente che automatizzare completamente questo processo, applicando, ad esempio, un commit al master. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl nostro Build Server creer\u00e0 un'immagine Docker, la caricher\u00e0 su Docker Hub o su qualsiasi altro registro che utilizzate. Docker Hub supporta webhook, quindi possiamo avviare un deployment remoto tramite Deployer seguendo il percorso sopra indicato. In questo modo \u00e8 possibile automatizzare completamente il deployment dell'app in un potenziale ambiente di produzione. <\/p>\n<p>Passiamo a esaminare il tema successivo: la scalabilit\u00e0 del cluster Kubernetes. Noter\u00f2 che il comando kubectl \u00e8 il comando per la scalabilit\u00e0. Con esso, \u00e8 possibile aumentare facilmente il numero di repliche nel cluster che abbiamo. Tuttavia, nella pratica, di solito desideriamo aumentare il numero dei nodi, non dei pod. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn questo contesto, durante l'orario lavorativo potrebbe essere necessaria un'espansione, mentre durante la notte, per ridurre i costi dei servizi Amazon, sar\u00e0 necessario ridurre il numero delle istanze dell'applicazione in esecuzione. Ci\u00f2 non significa che sia sufficiente scalare solo il numero dei pod, perch\u00e9 anche se uno dei nodi \u00e8 inattivo, dovrete comunque pagare Amazon per esso. Cio\u00e8, insieme alla scalabilit\u00e0 dei pod, dovrete scalare anche il numero delle macchine utilizzate. <\/p>\n<p>Questo pu\u00f2 causare difficolt\u00e0, perch\u00e9 indipendentemente dal fatto che stiamo utilizzando Amazon o un altro servizio cloud, Kubernetes non sa nulla sul numero delle macchine in uso. Non esiste uno strumento interno per scalare il sistema a livello di nodi. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi dovremo occuparci sia dei nodi che dei pod. Possiamo facilmente scalare l'avvio di nuovi nodi utilizzando l'API di AWS e i gruppi di scalabilit\u00e0 per configurare il numero di nodi di lavoro di Kubernetes. \u00c8 anche possibile utilizzare cloud-init o uno script simile per registrare i nodi nel cluster Kubernetes. <\/p>\n<p>Una nuova macchina si avvia nel gruppo di scaling, si autoinizializza come nodo, si registra nel registro del master e inizia a lavorare. Dopodich\u00e9, \u00e8 possibile aumentare il numero di repliche da utilizzare sui nodi creati. La riduzione delle dimensioni richiede maggiori sforzi, in quanto \u00e8 necessario assicurarsi che tale passo non porti alla distruzione di applicazioni gi\u00e0 in esecuzione dopo lo spegnimento delle macchine 'non necessarie'. Per prevenire tale scenario, \u00e8 necessario portare i nodi allo stato di 'unschedulable'. Ci\u00f2 significa che il pianificatore per impostazione predefinita, durante la pianificazione dei pod DaemonSet, ignorer\u00e0 questi nodi. Il pianificatore non rimuover\u00e0 nulla da questi server, ma non avvier\u00e0 nemmeno nuovi container su di essi. Il passo successivo consiste nel drenare il nodo, ovvero spostare i pod in esecuzione su un'altra macchina o su altri nodi dotati di capacit\u00e0 sufficiente per questo. Dopo aver verificato che non ci siano pi\u00f9 container su questi nodi, \u00e8 possibile eliminarli da Kubernetes. Dopodich\u00e9, per Kubernetes, smetteranno semplicemente di esistere. Infine, \u00e8 necessario utilizzare l'API AWS per disattivare i nodi o le macchine non necessarie. <br \/>\nPuoi utilizzare Amdatu Scalerd, un altro strumento open-source per il scaling, simile all'API AWS. Offre una CLI per aggiungere o rimuovere nodi dal cluster. Una delle sue caratteristiche interessanti \u00e8 la possibilit\u00e0 di configurare il pianificatore tramite il seguente file json. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/f70c7c722cacb4792c316e9f80a7500a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl codice mostrato riduce della met\u00e0 la capacit\u00e0 del cluster durante il periodo notturno. \u00c8 configurato sia per il numero di repliche esistenti che per la capacit\u00e0 desiderata del cluster Amazon. L'uso di questo pianificatore ridurr\u00e0 automaticamente il numero di nodi di notte e li aumenter\u00e0 al mattino, consentendo di risparmiare sui costi di utilizzo dei nodi di un servizio cloud come Amazon. Questa funzione non \u00e8 integrata in Kubernetes, ma l'uso di Scalerd ti permetter\u00e0 di scalare questa piattaforma come vuoi. <\/p>\n<p>Vorrei attirare la vostra attenzione sul fatto che molte persone mi dicono: \u00abTutto ci\u00f2 va bene, ma che dire del mio database, che di solito rimane in uno stato statico?\u00bb Come \u00e8 possibile avviare qualcosa di simile in un ambiente dinamico come Kubernetes? A mio avviso, non dovreste farlo, non dovreste cercare di organizzare il funzionamento di un repository dati in Kubernetes. Tecnologicamente \u00e8 possibile, e ci sono guide sull'argomento su Internet, ma complicher\u00e0 seriamente la vostra vita. <\/p>\n<p>S\u00ec, in Kubernetes esiste il concetto di storage persistente e potreste provare a eseguire repository dati come Mongo o MySQL, ma \u00e8 un compito piuttosto laborioso. Questo perch\u00e9 i repository dati non supportano completamente l'interazione con un ambiente dinamico. La maggior parte dei database richiede una notevole configurazione, compresa la configurazione manuale del cluster, non ama il ridimensionamento automatico e altre cose simili. <br \/>\nQuindi non complicatevi la vita cercando di avviare un repository dati in Kubernetes. Organizzate il loro funzionamento in modo tradizionale utilizzando i servizi abituali e semplicemente date a Kubernetes l'opportunit\u00e0 di utilizzarli.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer concludere, voglio presentarvi la piattaforma Cloud RTI basata su Kubernetes, su cui lavora il mio team. Essa garantisce una gestione centralizzata dei log, il monitoraggio delle applicazioni e dei cluster e offre molte altre funzioni utili che vi torneranno utili. Utilizza diversi strumenti open-source, come Grafana, per visualizzare il monitoraggio.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 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 in produzione: Blue\/Green deployment, automazione della scalabilit\u00e0 e dell&#039;implementazione. Parte 2\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 stata posta la domanda su perch\u00e9 utilizzare un bilanciatore di carico ha-proxy con Kubernetes. \u00c8 una buona domanda, perch\u00e9 attualmente ci sono 2 livelli di bilanciamento del carico. I servizi di Kubernetes sono ancora su indirizzi IP virtuali. Non potete usarli per le porte delle macchine host esterne, perch\u00e9 se Amazon sovraccarica il suo host cloud, l'indirizzo cambia. Ecco perch\u00e9 posizioniamo ha-proxy davanti ai servizi: per creare una struttura pi\u00f9 statica per il flusso di traffico senza interruzioni con Kubernetes. <\/p>\n<p>Un'altra buona domanda \u00e8: come si pu\u00f2 gestire la modifica dello schema del database durante un deployment blue\/green? Il fatto \u00e8 che, indipendentemente dall'uso di Kubernetes, la modifica dello schema del database \u00e8 un compito complesso. \u00c8 necessario garantire la compatibilit\u00e0 tra il vecchio e il nuovo schema, dopo di che sar\u00e0 possibile aggiornare il database e successivamente aggiornare le applicazioni stesse. \u00c8 possibile eseguire un \u00abhot swapping\u00bb del database e quindi aggiornare le applicazioni. Conosco persone che hanno caricato un intero nuovo cluster di database con un nuovo schema, questa \u00e8 un'opzione se si dispone di un database schemaless come Mongo, ma in ogni caso non \u00e8 un compito semplice. Se non ci sono altre domande, grazie per l'attenzione!<\/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=\"Guarda il 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>Un po' di pubblicit\u00e0 \ud83d\ude42<\/h3>\n<p>\nGrazie per rimanere con noi. Ti piacciono i nostri articoli? Vuoi vedere pi\u00f9 contenuti interessanti? Supportaci effettuando un ordine o raccomandandoci a qualcuno. <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">VPS cloud per sviluppatori a partire da $4.99.<\/a><\/noindex>, <b>unica alternativa ai server entry-level, concepita da noi per te:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Tutta la verit\u00e0 sui VPS (KVM) E5-2697 v3 (6 Core) 10GB DDR4 480GB SSD 1Gbps a partire da $19 o come dividere correttamente un server?<\/a><\/noindex> (sono disponibili opzioni con RAID1 e RAID10, fino a 24 core e fino a 40GB DDR4).<\/p>\n<p><b>Dell R730xd a met\u00e0 prezzo nel data center Equinix Tier IV ad Amsterdam?<\/b> Solo da noi <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 a partire da $199<\/a><\/noindex> nei Paesi Bassi! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 a partire da $99!<\/b><\/b> Leggi di <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Come costruire un'infrastruttura di livello enterprise utilizzando server Dell R730xd E5-2650 v4 del valore di 9000 euro a pochi spiccioli?<\/a><\/noindex><br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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 in produzione: Deployment Blue\/Green, autoscalabilit\u00e0 e automazione del rilascio. Parte 2 | ProHoster","description":"Kubernetes \u00e8 uno strumento eccellente per eseguire container Docker in un ambiente di produzione clusterizzato. Tuttavia, ci sono compiti che Kubernetes non \u00e8 in grado di risolvere.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/83787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=83787"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/83787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/83788"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=83787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=83787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=83787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}