{"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, autoscaling e automazione del deployment. Parte 2.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes \u00e8 un ottimo strumento per l'esecuzione di container Docker in un ambiente di produzione clusterizzato. Tuttavia, ci sono compiti che Kubernetes non \u00e8 in grado di risolvere. Durante il deployment frequente in un ambiente operativo, abbiamo bisogno di un sistema di Blue\/Green deployment completamente automatizzato per evitare downtime in questo processo, che deve anche gestire le richieste HTTP esterne e gestire il caricamento SSL. Ci\u00f2 richiede l'integrazione con un bilanciatore di carico, come ha-proxy. Un'altra sfida \u00e8 il ridimensionamento semi-automatico del cluster Kubernetes stesso quando si opera in un ambiente cloud, ad esempio una diminuzione parziale della dimensione del cluster durante la notte.<\/p>\n<p>Sebbene Kubernetes non disponga di queste funzionalit\u00e0 direttamente 'out of the box', offre API che possono essere utilizzate per affrontare compiti simili. Gli strumenti per il deployment automatizzato Blue\/Green e il ridimensionamento del cluster Kubernetes sono stati sviluppati all'interno del progetto Cloud RTI, creato sulla base di software open-source.<\/p>\n<p>In questo articolo, la trascrizione video spiega come configurare Kubernetes insieme ad altri componenti open source per creare un ambiente di produzione che gestisce il codice dal commit git senza interruzioni in produzione.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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, autoscalabilit\u00e0 e automazione del deployment. Parte 1<\/a><\/noindex><\/p>\n<p>Quindi, una volta che hai accesso alle tue applicazioni dal mondo esterno, puoi procedere con la configurazione completa dell'automazione, raggiungendo il punto in cui puoi eseguire un commit git e assicurarti che questo commit git si conclusa in produzione. Naturalmente, durante l'implementazione di questi passaggi e nel processo di deployment, non vogliamo affrontare interruzioni. Pertanto, ogni automazione in Kubernetes inizia con l'API. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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 in modo produttivo \u00abcos\u00ec com'\u00e8\u00bb. Certo, puoi farlo, utilizzare kubectl e cos\u00ec via, ma l'API \u00e8 la parte pi\u00f9 interessante e utile di questa piattaforma. Utilizzando l'API come un insieme di funzioni, puoi accedere praticamente a tutto ci\u00f2 che desideri fare in Kubernetes. Anche kubectl stesso utilizza l'API REST. <\/p>\n<p>\u00c8 REST, quindi puoi utilizzare qualsiasi linguaggio e strumento per lavorare con questa API, ma le librerie client renderanno la tua vita molto pi\u00f9 semplice. Il mio team ha scritto 2 di queste librerie: una per Java \/ OSGi e una per Go. La seconda non viene utilizzata spesso, ma in ogni caso hai a disposizione queste risorse utili. Sono progetti open-source con licenza parziale. Ci sono molte di queste librerie disponibili 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, autoscaling e automazione del deployment. 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 fondamentale assicurarsi che questo processo non subisca interruzioni. Ad esempio, il nostro team esegue il deployment in produzione a met\u00e0 giornata, quando le persone utilizzano maggiormente le applicazioni, quindi \u00e8 molto importante evitare ritardi in questo processo. Per prevenire downtime, si utilizzano 2 metodi: il deployment blue\/green o l'aggiornamento rolling. 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 deployment hai versioni diverse dell'applicazione in esecuzione contemporaneamente. In tal caso, puoi aggiornare l'interfaccia utente mentre il backend continua a lavorare con la vecchia versione, comportando l'interruzione del funzionamento dell'applicazione. Pertanto, sotto il profilo della programmazione, lavorare in tali condizioni \u00e8 piuttosto complicato. <\/p>\n<p>Questa \u00e8 una delle ragioni per cui preferiamo utilizzare il blue\/green deployment per automatizzare il dispiegamento delle nostre applicazioni. Con questo approccio, \u00e8 necessario assicurarsi che solo una versione dell'applicazione sia attiva in un dato momento. <\/p>\n<p>Il meccanismo del blue\/green deployment funziona nel seguente modo. Riceviamo il traffico per le nostre applicazioni attraverso ha-proxy, che lo instrada verso le repliche in esecuzione della stessa versione dell'applicazione. <\/p>\n<p>Quando viene effettuato un nuovo dispiegamento, utilizziamo Deployer, a cui vengono forniti i nuovi componenti, e si occupa del deploy della nuova versione. Il deploy della nuova versione dell'applicazione significa che viene \"attivato\" un nuovo insieme di repliche, che vengono quindi avviate in un pod separato e nuovo. Tuttavia, ha-proxy non \u00e8 a conoscenza di esse e al momento non instrada alcun carico di lavoro verso di esse.<\/p>\n<p>Pertanto, \u00e8 fondamentale eseguire prima il controllo della salute delle nuove versioni, per garantire che le repliche siano pronte a gestire il carico.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutti i componenti di distribuzione devono supportare una qualche forma di health check. Pu\u00f2 trattarsi di un semplice controllo HTTP in cui si ottiene un codice di stato 200, oppure di un controllo pi\u00f9 approfondito in cui si verifica la connessione tra le repliche e il database e altri servizi, la stabilit\u00e0 delle connessioni nell'ambiente dinamico, e se tutto si avvia 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDopo che il sistema ha verificato il funzionamento di tutte le repliche aggiornate, Deployer aggiorner\u00e0 la configurazione e trasmetter\u00e0 il confd corretto, che riconfigurer\u00e0 ha-proxy. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSolo dopo questo il traffico verr\u00e0 diretto al 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto meccanismo non \u00e8 una caratteristica esclusiva di Kubernetes. Il concetto di Blue\/green deployment esiste da molto tempo e ha sempre utilizzato un bilanciatore di carico. Inizialmente si dirige tutto il traffico verso la vecchia versione dell'applicazione, e dopo l'aggiornamento si trasferisce completamente sulla nuova versione. Questo principio \u00e8 utilizzato non solo in Kubernetes.<\/p>\n<p>Ora vi presenter\u00f2 un nuovo componente di distribuzione - Deployer, che esegue il controllo delle funzionalit\u00e0, riconfigura il proxy e cos\u00ec via. Questo \u00e8 un concetto che non \u00e8 rivolto al mondo esterno e esiste all'interno di Kubernetes. Vi mostrer\u00f2 come creare il proprio concetto di Deployer utilizzando strumenti open-source. <\/p>\n<p>Quindi, la prima cosa che fa Deployer \u00e8 creare un controller di replica RC, utilizzando l'API di Kubernetes. Quest'API crea pod e servizi per la successiva distribuzione, ovvero crea un nuovo cluster per le nostre applicazioni. Una volta che RC verifica che le repliche siano state avviate, eseguir\u00e0 un controllo delle loro funzionalit\u00e0 tramite il Health check. A questo scopo, Deployer utilizza il comando GET \/health. Questo esegue i componenti di controllo appropriati e verifica tutti gli elementi che garantiscono il funzionamento del cluster. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDopo che tutti i nodi hanno segnalato il loro stato di \u00absalute\u00bb, Deployer crea un nuovo elemento di configurazione: uno storage distribuito etcd, che viene utilizzato internamente in Kubernetes, inclusa la memorizzazione della configurazione del bilanciatore di carico. Registriamo i dati in etcd e un piccolo strumento confd monitora etcd per eventuali nuovi dati. <\/p>\n<p>Se rileva eventuali modifiche alla configurazione originale, 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 ai nuovi servizi, 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome potete vedere, nonostante l'abbondanza di componenti, non c'\u00e8 nulla di complicato. Dovete solo 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 uno strumento per l'orchestrazione dei deployment di Kubernetes, dotato delle seguenti funzionalit\u00e0: <\/p>\n<ul>\n<li>implementazione di Blue\/Green deployment;<\/li>\n<li>configurazione del bilanciatore di carico esterno;<\/li>\n<li>gestione dei manifesti di deployment;<\/li>\n<li>gestione del deployment effettivo;<\/li>\n<li>verifica della funzionalit\u00e0 dei controlli di salute durante il deployment;<\/li>\n<li>introduzione di variabili d'ambiente nei pod.<\/li>\n<\/ul>\n<p>\nQuesto Deployer \u00e8 costruito sopra l'API di Kubernetes e fornisce un'API REST per gestire i manifesti e i deployment, oltre a un'API Websocket per lo streaming dei log durante il deployment.<\/p>\n<p>Inserisce i dati di configurazione del bilanciatore di carico in etcd, pertanto puoi evitare di utilizzare ha-proxy con supporto 'out of the box', facilitando l'uso del tuo file di configurazione del bilanciatore. Amdatu Deployer \u00e8 scritto in Go, proprio come Kubernetes, ed \u00e8 concesso in licenza Apache.<\/p>\n<p>Prima di iniziare ad utilizzare questa versione del deployer, ho utilizzato il seguente manifesto di deployment, in cui sono specificati i parametri necessari. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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'inclusione del flag \"useHealthCheck\". Dobbiamo specificare che, durante il processo di deployment, \u00e8 necessario effettuare un controllo dello stato. Questo parametro pu\u00f2 essere disattivato quando nel deployment vengono utilizzati contenitori di terze parti che non richiedono verifiche. In questo descrittore \u00e8 anche indicato il numero di repliche e l'URL del frontend necessario per ha-proxy. Alla fine, viene menzionato il flag della specifica del pod \"podspec\", che si rivolge a Kubernetes per ottenere informazioni sulla configurazione delle porte, sull'immagine e cos\u00ec via. Si tratta di un descrittore piuttosto semplice in formato JSON. <\/p>\n<p>Un altro strumento che fa parte del progetto open-source Amdatu \u00e8 Deploymentctl. Dispone di un'interfaccia utente UI per configurare il deployment, conserva la cronologia dei deployment e contiene webhook per callback da parte di utenti e sviluppatori esterni. \u00c8 possibile non utilizzare l'UI, poich\u00e9 Amdatu Deployer \u00e8 un REST API, ma questa interfaccia pu\u00f2 semplificare notevolmente il deployment senza dover ricorrere a nessun API. Deploymentctl \u00e8 scritto in OSGi\/Vertx utilizzando Angular 2. <\/p>\n<p>Ora mostrer\u00f2 quanto detto sopra sullo schermo, utilizzando una registrazione pre-creata, cos\u00ec non dovrete aspettare. Deployremo una semplice applicazione in Go. Non preoccupatevi se non avete mai avuto a che fare con Go, si tratta di un'applicazione molto semplice, quindi dovrebbe esservi tutto chiaro. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui creiamo un server HTTP che risponde solo a \/health, quindi questa applicazione controlla solo lo stato del health check e nient'altro. Se il controllo ha esito positivo, verr\u00e0 mostrata la struttura JSON qui sotto. Essa contiene la versione dell'applicazione che sar\u00e0 distribuita dal deployer, un messaggio che vedete nella parte superiore del file, e un valore booleano che indica se la nostra applicazione \u00e8 attiva o meno.<\/p>\n<p>Con l'ultima riga sono stato un po' furbo, perch\u00e9 ho inserito un valore booleano fisso in cima al file, che in seguito mi aiuter\u00e0 a distribuire anche un'applicazione \"non sana\". Pi\u00f9 tardi ne parleremo. <\/p>\n<p>Quindi, iniziamo. Per prima cosa controlliamo la presenza di eventuali pod in esecuzione usando il comando ~ kubectl get pods e, non ricevendo risposta dall'URL del frontend, ci assicuriamo che non ci siano deployment in corso al momento. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSuccessivamente, sullo schermo vedete l'interfaccia Deploymentctl di cui parlavo, in cui vengono impostati i parametri di distribuzione: namespace, nome dell'applicazione, versione di distribuzione, numero di repliche, URL del frontend, nome del container, immagine, limiti delle risorse, numero di porta per il health check, e cos\u00ec via. I limiti delle risorse sono molto importanti, poich\u00e9 permettono di sfruttare al massimo la capacit\u00e0 dell'hardware. Qui \u00e8 possibile anche visualizzare il registro di distribuzione.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe adesso ripetiamo il comando ~ kubectl get pods, possiamo vedere che il sistema 'si blocca' per 20 secondi, durante i quali avviene la riconfigurazione dell'ha-proxy. Dopo di che, il pod si avvia e la nostra replica pu\u00f2 essere vista nel registro di distribuzione. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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 questo \u00e8 stato fatto solo tramite l'interfaccia utente. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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 \u00abHello, Kubernetes!\u00bb a \u00abHello, Deployer!\u00bb, il sistema crea questa immagine e la colloca nel registro Docker, dopodich\u00e9 premiamo nuovamente il pulsante \u00abDeploy\u00bb nella finestra Deploymentctl. In questo modo, viene avviato automaticamente il log del deployment proprio come \u00e8 avvenuto per il deployment della prima versione dell'applicazione. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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 indica che stiamo ancora utilizzando la versione 1. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl bilanciatore di carico attende finch\u00e9 non viene eseguita la verifica di salute, dopodich\u00e9 reindirizzer\u00e0 il traffico alla nuova versione. Dopo 20 secondi passiamo a curl e vediamo che ora abbiamo distribuito la versione 2 dell'applicazione, mentre la prima \u00e8 stata eliminata. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi \u00e8 trattato di un deployment di un'applicazione \"sana\" \u2014 healthy. Vediamo cosa succede se modifico il valore del parametro Healthy da true a false per la nuova versione dell'applicazione, provando a distribuire un'applicazione non sana, che non ha superato il controllo di funzionalit\u00e0. Questo pu\u00f2 accadere se, durante la fase di sviluppo, sono stati commessi errori di configurazione e l'applicazione \u00e8 stata inviata in produzione in quel modo. <\/p>\n<p>Come potete vedere, il deployment attraversa tutte le fasi sopra indicate, e ~ kubectl get pods mostra che entrambi i pod sono in esecuzione. Ma a differenza del precedente deployment, il log mostra uno stato di timeout. Questo significa che, a causa del fallimento del controllo di integrit\u00e0, la nuova versione dell'applicazione non pu\u00f2 essere distribuita. Di conseguenza, vedete che il sistema \u00e8 tornato a utilizzare la vecchia versione dell'applicazione, mentre la nuova versione \u00e8 stata semplicemente rimossa. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl vantaggio \u00e8 che anche se ricevi un numero enorme di richieste simultanee nell'applicazione, queste non noteranno nemmeno un'interruzione durante il processo di implementazione. Se testi questa applicazione utilizzando il framework Gatling, che gli invia il massimo numero possibile di richieste, nessuna di queste verr\u00e0 scartata. Ci\u00f2 significa che i nostri utenti non noteranno nemmeno gli aggiornamenti delle versioni in tempo reale. Se la modifica dovesse fallire, si continuer\u00e0 a lavorare 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 a un fallimento: se il health check \u00e8 passato con successo, ma l'applicazione si \u00e8 bloccata non appena ha ricevuto il carico di lavoro, significa che il collasso si verificher\u00e0 solo dopo il completamento del deployment. In questo caso, dovrai tornare manualmente a una versione precedente. Abbiamo quindi visto come utilizzare Kubernetes con gli strumenti open-source a lui dedicati. La procedura di deployment sar\u00e0 molto pi\u00f9 semplice se integrerai questi strumenti nei pipeline di creazione\/deployment. Puoi utilizzare sia l'interfaccia utente sia 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl nostro server di build creer\u00e0 un'immagine Docker, la inserir\u00e0 in Docker Hub o in qualsiasi altro registro che utilizzi. Docker Hub supporta webhook, quindi possiamo avviare un deployment remoto tramite Deployer come indicato sopra. In questo modo \u00e8 possibile automatizzare completamente il deployment dell'applicazione in un ambiente di produzione potenziale. <\/p>\n<p>Passiamo a considerare il tema successivo: la scalabilit\u00e0 del cluster Kubernetes. \u00c8 importante notare che il comando kubectl \u00e8 uno strumento per la scalabilit\u00e0. Con esso, possiamo facilmente aumentare il numero di repliche nel nostro cluster esistente. Tuttavia, nella pratica, vogliamo generalmente aumentare il numero di nodi, piuttosto che di pod. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn questo contesto, durante le ore lavorative potrebbe essere necessario aumentare il numero di istanze, mentre durante la notte, per ridurre i costi dei servizi Amazon, si potrebbe voler diminuire il numero di istanze dell'applicazione. Questo non significa che sia sufficiente scalare solo il numero dei pod, poich\u00e9 anche se uno dei nodi \u00e8 inattivo, si dovr\u00e0 comunque pagare per esso a Amazon. Quindi, oltre a scalare i pod, sar\u00e0 necessario scalare anche il numero di macchine utilizzate. <\/p>\n<p>Questo pu\u00f2 presentare delle difficolt\u00e0, perch\u00e9 indipendentemente dal fatto che si utilizzi Amazon o un altro servizio cloud, Kubernetes non ha alcuna conoscenza riguardo al numero di macchine in uso. Non esiste uno strumento in grado di scalare il sistema a livello di nodi. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDunque, dovremo occuparci sia dei nodi che dei pod. Possiamo facilmente scalare il lancio di nuovi nodi utilizzando l'API di AWS e le istanze del gruppo di scaling 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 registra come nodo, si iscrive nel registro del master e inizia a lavorare. Successivamente, \u00e8 possibile aumentare il numero di repliche da utilizzare sui nodi creati. La riduzione della scala richiede maggiore attenzione, poich\u00e9 \u00e8 necessario garantire che tale operazione non porti alla distruzione delle applicazioni gi\u00e0 in esecuzione dopo la disattivazione delle macchine \"non necessarie\". Per prevenire tale scenario, \u00e8 necessario portare i nodi allo stato di \"unschedulable\". Questo significa che il pianificatore predefinito ignorer\u00e0 questi nodi quando pianifica i pod DaemonSet. Il pianificatore non rimuover\u00e0 nulla da questi server, ma non avvier\u00e0 nuovi contenitori l\u00ec. Il passo successivo consiste nel drenare il nodo, ossia spostare i pod attivi su un'altra macchina o su altri nodi che abbiano sufficiente capacit\u00e0 per farlo. Una volta verificato che non ci sono pi\u00f9 contenitori su questi nodi, possono essere eliminati da Kubernetes. Dopo di che, per Kubernetes, semplicemente smetteranno di esistere. Infine, \u00e8 necessario utilizzare l'API AWS per disattivare i nodi o le macchine non necessari. <br \/>\nPuoi utilizzare Amdatu Scalerd, un altro strumento open-source per la scalabilit\u00e0 simile all'API di AWS. Offre un'interfaccia a riga di comando per aggiungere o rimuovere nodi in un cluster. Una caratteristica interessante \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, autoscaling e automazione del deployment. 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 le ore notturne. \u00c8 configurato sia per il numero di repliche esistenti che per la capacit\u00e0 desiderata del cluster Amazon. Utilizzare questo pianificatore ridurr\u00e0 automaticamente il numero di nodi durante la 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 meglio credi. <\/p>\n<p>Vorrei attirare la vostra attenzione sul fatto che molte persone mi dicono: \u00abVa bene, ma cosa ne \u00e8 del mio database, che di solito rimane in uno stato statico?\u00bb Come si pu\u00f2 eseguire qualcosa di simile in un ambiente cos\u00ec dinamico come Kubernetes? A mio avviso, non dovreste farlo, non dovreste cercare di organizzare il funzionamento di un data store in Kubernetes. Tecnicamente \u00e8 possibile, e ci sono guide in merito su Internet, ma complicherebbe seriamente la vostra vita. <\/p>\n<p>S\u00ec, in Kubernetes esiste il concetto di storage persistente e potete tentare di far funzionare data store come Mongo o MySQL, ma \u00e8 un compito piuttosto impegnativo. Questo perch\u00e9 i data store non supportano completamente l'interazione con un ambiente dinamico. La maggior parte dei database richiede una configurazione significativa, compresa la configurazione manuale del cluster, non ama l'auto-scaling e altre cose simili. <br \/>\nQuindi non complicatevi la vita cercando di avviare uno storage in Kubernetes. Organizzate il loro funzionamento nel modo tradizionale con l'uso di servizi familiari e semplicemente consentite a Kubernetes di utilizzarli.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn conclusione, voglio presentarvi la piattaforma Cloud RTI basata su Kubernetes, su cui lavora il mio team. Essa fornisce una gestione centralizzata dei log, il monitoraggio delle applicazioni e dei cluster e possiede molte altre funzioni utili che vi saranno preziose. Utilizza vari strumenti open-source, come Grafana per la visualizzazione del monitoraggio.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in produzione: Blue\/Green deployment, autoscaling e automazione del deployment. 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, autoscaling e automazione del deployment. Parte 2.\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 sorta una 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 si trovano ancora su indirizzi IP virtuali. Non potete usarli per le porte delle macchine ospitanti esterne, perch\u00e9 se Amazon sovraccarica il proprio host cloud, l'indirizzo cambia. Ecco perch\u00e9 posizioniamo ha-proxy davanti ai servizi \u2014 per creare una struttura pi\u00f9 statica per un'interazione continua del traffico con Kubernetes. <\/p>\n<p>Un'altra buona domanda \u00e8: come possiamo gestire le modifiche allo schema del database durante il blue\/green deployment? Infatti, 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, dopodich\u00e9 \u00e8 possibile aggiornare il database e successivamente aggiornare le applicazioni stesse. \u00c8 possibile eseguire un 'hot swapping' del database e poi aggiornare le applicazioni. Conosco persone che hanno avviato un nuovo cluster 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=\"Riproduci 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 essere con noi. Ti piacciono i nostri articoli? Vuoi vedere pi\u00f9 contenuti interessanti? Supportaci effettuando un ordine o raccomandandoci ai tuoi conoscenti, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">VPS cloud per sviluppatori a partire da $4,99<\/a><\/noindex>, <b>un'alternativa unica ai server entry-level, che abbiamo creato per te:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Tutta la verit\u00e0 su VPS (KVM) E5-2697 v3 (6 Core) 10GB DDR4 480GB SSD 1Gbps a partire da $19. Come dividere il server correttamente?<\/a><\/noindex> (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> Scopri di pi\u00f9 su <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Come costruire un'infrastruttura di classe enterprise con server Dell R730xd E5-2650 v4 dal costo di 9000 euro a prezzi stracciati?<\/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 4.9.10 - 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. \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\" \/>\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) 4.9.10\" \/>\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. \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\" \/>\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, autoscaling e automazione del deployment. Parte 2 | ProHoster","description":"Kubernetes \u00e8 un ottimo strumento per eseguire contenitori Docker in un ambiente produttivo clusterizzato. Tuttavia, ci sono compiti che Kubernetes non \u00e8 in grado di gestire. Durante i frequenti deploy in ambienti di produzione, abbiamo bisogno di un blue\/green deployment completamente automatizzato per evitare interruzioni del servizio in questo processo, che deve anche gestire richieste HTTP esterne e gestire il caricamento dei certificati SSL. Questo richiede integrazione.","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. \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","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"},"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}]}}