‫Abbastanza così con gli annunci.
‫Voglio arrivare a un argomento su cui ho lavorato e focalizzato dal mio nodo. js course.
‫E queste sono variabili d'ambiente così come alzare la mano nella chat e puoi comunque fare una
‫ondata di due punti nel colon e poi in realtà farà una piccola onda d'onda agitando la mano se hai a che fare con variabili d'ambiente nella
‫tua app e desideri modi più semplici di non essere esattamente sicuri se stai facendo il modo
‫migliore per le variabili di ambiente.
‫Perché ho lottato con questo per un bel po '.
‫Intendo non solo in contenitori ma in tutto il calcolo distribuito assicurandomi che tutte le mie app
‫abbiano almeno un modo coerente di fare variabili d'ambiente.
‫Ottenere segreti informativi sul tuo server che conosci I tuoi nomi DNS sul server sai che lo nominerai tutta quella
‫roba nei tuoi contenitori, quindi
‫tutto bene.
‫Quindi sembra che alcuni di voi siano interessati a questo argomento.
‫Quindi questo farà parte del mio nodo. js course.
‫E poi ho intenzione di prenderne parte e capire come rilasciare tali informazioni sul Web.
‫Ci sono un paio di modi in cui puoi farlo, ma le basi di questo escono da app a 12 fattori.
‫E se non hai sentito parlare di un'app fattoriale, è in circolazione da
‫almeno un decennio ed è un concetto di 12 fattori che rendono essenzialmente un'app distribuita più efficace e proviene da un'azienda che ha imparato
‫presto nel cloud e su Internet come avevano bisogno di gestire tutti i diversi punti della
‫loro app e di come avevano bisogno di conoscere le diverse preoccupazioni che avevano riguardo alle migliori pratiche essenzialmente
‫per scrivere app distribuite.
‫E le probabilità sono se hai un database su un server e un'API qui e un sito Web qui e un lavoro di
‫lavoro laggiù ma lascia un'app distribuita proprio ci sono molte definizioni per ciò che distribuito, ma generalmente
‫la maggior parte di noi oggi se sei preoccupato per i container e fai parte del tuo lavoro e
‫li stai eseguendo su server che probabilmente hai a che fare con alcune app distribuite.
‫Quindi la parte interessante di questo è lo stato di configurazione.
‫Quindi, se torni alla dot net a dodici fattori pagata per buttare
‫questo in chat, puoi sicuramente sfogliarli in seguito e poi approfondire ogni argomento quando devi affrontarlo nella tua app.
‫Ma quello di cui volevo parlare oggi era la configurazione e la configurazione riguardava la memorizzazione delle impostazioni per il
‫tuo ambiente.
‫Quindi, mentre impari se stai seguendo il mio cane o il corso di Maestria, sai che non vuoi mai che le tue immagini o
‫le tue app abbiano impostazioni codificate che potrebbero essere diverse per ogni ambiente e l'ambiente potrebbe significare che sei come un macchina
‫che il server di test di sviluppo o il server di gestione temporanea o il server
‫di produzione o se ti piacciono molti di noi hai più livelli di produzione e più
‫copie di produzione come tutte queste cose.
‫Se c'è qualcosa che potrebbe cambiare lì dentro potrebbero esserci impostazioni di memoria in Java che potrebbero essere
‫password diverse per un'API.
‫Chiavi diverse che potrebbero essere chiavi di archiviazione per il tuo cloud.
‫Potrebbe essere qualsiasi cosa, solo la parola di forse quelli nella tua app è un piccolo flag che indica quale parte del sistema sei
‫su e hai bisogno che sia impostato in una semplice piccola variabile di ambiente.
‫Tutta quella roba deve essere estratta dalla tua app e una delle regole del dodici fattore è se la rigida
‫separazione della configurazione dal codice è corretta.
‫E abbiamo visto tutti che probabilmente l'abbiamo fatto tutti facendoti conoscere un valore hardcoded come
‫l'host locale perché l'app è sempre in esecuzione sullo stesso server del database ma prima dei
‫container potresti vedere un'app hardcoded che dice local host nel giusto codice.
‫E questo è sfortunato perché ciò li rende dati che li rendono molto rigidi e difficili da gestire perché ora devi cambiare
‫il codice solo un ambiente cambiato, quindi non vuoi farlo.
‫E una delle idee di questo è che le app a dodici fattori e se stai seguendo i principi dei dodici
‫fattori tendi ad avere un tempo molto facile trasformandole in contenitori, le app a dodici fattori utilizzano idealmente tutto
‫attraverso le variabili di ambiente.
‫Il motivo è che tutti i sistemi operativi e tutti i sistemi supportano tale diritto.
‫Se hai un'app Java qui e non hai un GSM lì e poi hai un'app database che memorizza i
‫tuoi database e hai un MIM che memorizza tutte queste cose nella cache.
‫Ognuno di questi ha un modo diverso di consumare i suoi valori e le sue variabili di ambiente nel modo giusto.
‫Le impostazioni necessarie per la configurazione di cui ha bisogno per iniziare.
‫Sono tutti diversi.
‫E così può essere abbastanza frustrante.
‫Quindi l'unica cosa coerente tra loro sono le variabili d'ambiente.
‫Ogni shell lo supporta.
‫Windows Mac Linux supportano tutti la stessa funzionalità.
‫Potrebbe essere leggermente diverso il modo in cui imposti una variabile di ambiente o la cancelli, ma il valore chiave
‫è lo stesso e tutti.
‫Destra.
‫Quindi questa è una premessa fondamentale ed è ciò che puoi vedere in tutto il dottore e l'ecosistema
‫container, poiché tutti l'abbiamo adottato come nostro standard.
‫Ora quello che voglio dire è come se avessi ad esempio un'applicazione che ha un file
‫demo o un I e I o qualche altro tipo di file di configurazione che i valori devono raggiungere, allora devi
‫scrivere un livello intermedio tra le variabili di ambiente e poi dove andranno nell'app.
‫Destra.
‫E ne ho un esempio nella mia app BHP non così completa.
‫Quindi su GitHub nelle immagini della mia app PSP mostriamo un rapido esempio letterale.
‫E poi arriveremo alle tue domande.
‫Quindi qui quello che ho è un file docker e questo sacrificio ci sono molte cose ma
‫le cose su cui voglio concentrarmi sono in questa app di livello che ho impostazioni predefinite che ho impostato nel file docker per le
‫variabili di ambiente.
‫Ora il motivo e il modo in cui li sto impostando qui è che preferisco che le impostazioni qui predefinite funzionino in un
‫ambiente di produzione fino a te se dici che guardano queste impostazioni predefinite saranno solo i
‫valori di produzione medi o potrebbero dite, ehi, questi saranno i valori
‫medi per gli sviluppatori che preferisco, in un certo qual modo, sono un po 'inadempienti dal punto di vista della produzione, in
‫questo modo posso sovrascriverli localmente nel mio computer locale senza problemi, ma dipende
‫da voi come fatelo ma sicuramente volete crearne di coerenti qui che abbiano senso fin dall'inizio.
‫Ora sovrascriverai molti di questi con altri modi di impostarlo tramite il comando run
‫docker o tramite la distribuzione di uno sciame o una distribuzione di rete cubana o nel tuo file Ducker compose OGM
‫che sovrascriverai.
‫Destra.
‫Puoi anche sovrascriverli nella shell prima di eseguire quei comandi e li risuccherà.
‫Puoi anche usare qualcosa come Docker compose, puoi impostare un file EMV punto che nel mondo PSP è in
‫realtà uno standard che funzionerà in modo tale che anche nel gioco d'azzardo.
‫Quindi puoi vedere che li ho qui, ma ovviamente alcuni di questi vanno nell'app, potrebbero andare in
‫file diversi e fare un backup di un secondo e ti
‫mostrerò la parte successiva.
‫Quindi quelli sono incorporati nel file medico quando l'immagine viene creata in questo momento.
‫Quando voglio dare un'occhiata al mio file di composizione medico, questo verrà usato per le impostazioni locali, giusto.
‫Quando sto facendo lo sviluppo e poi posso dare un'occhiata qui e puoi vedere che li sto impostando tutti e forse
‫li sto impostando in modo diverso.
‫Non devo scavalcarli se non lo voglio.
‫Ma in questo caso scelgo di impostarne di simili come esempio.
‫Se non avessi bisogno di sovrascrivere quelli nell'immagine, potrei lasciarli da soli.
‫Quindi c'è quello.
‫Tutto ok.
‫Quindi li sto impostando qui e ora questi verranno utilizzati all'avvio del contenitore.
‫Quindi, se volevo cambiarli, devo riavviare il contenitore.
‫Non devo cancellare il contenitore giusto.
‫Ho appena dovuto riavviarlo.
‫Quindi puoi usare il Dr. composto per farlo, quindi il passo successivo è forse vediamo forse
‫sulla mia macchina locale o anche in produzione ho bisogno che siano in file specifici.
‫Destra.
‫Quindi, quando mio figlio avvia la mia applicazione, quelle variabili d'ambiente devono essere altrove.
‫Non possono semplicemente vivere in variabili d'ambiente per alcune app giuste.
‫Chiamerei queste app legacy o quelle tradizionali in cui non stanno cercando le variabili di ambiente per impostazione
‫predefinita.
‫Ora, se stavo creando una nuova app, il mio obiettivo sarebbe quello che guarda alle variabili di ambiente e forse
‫c'è qualche file di configurazione o qualcosa che l'app utilizza ma sto sostituendo automaticamente quelle con variabili di
‫ambiente.
‫Quindi l'idea è che la mia app sia abbastanza intelligente da dire hey se non esiste una variabile di ambiente per
‫questo userò questo valore predefinito da questo file.
‫Ma se esiste già un set di variabili ambientali, lo userò.
‫Ora, se hai familiarità con lo sciame e la rete cubana, sai che una volta
‫entrati nei segreti e configurati, possiamo iniziare a sovrascrivere quegli interi file e fornire password e segreti come singoli file.
‫Quindi potresti anche volere che la tua app ne sia consapevole.
‫Ma se la tua app se non stai costruendo la tua app personalizzata o stai usando forse cose da Docker
‫Hub o open source ufficiale, quello che devi guardare è fornire uno script del punto di ingresso.
‫Ora il modo in cui viene eseguito è nell'immagine che imposti lo script del punto di ingresso che desideri venga
‫eseguito e verrà eseguito all'avvio.
‫E quello che puoi vedere qui è un esempio molto semplice di me che scrivo le variabili violente e
‫alcuni altri dati codificati in un file specifico all'avvio semplicemente usando uno script bash.
‫Destra.
‫Deve essere elegante.
‫Puoi usare anche altri metodi per farlo, ma tende ad essere nelle immagini ufficiali della finestra mobile.
‫Questa app tende ad essere lo standard.
‫Tutto ok.
‫Quindi, in questo caso, sto prendendo le variabili di ambiente che sono state impostate nel file
‫docker o nel file di composizione che sovrascrive il file Docker immagine, porteranno questi Passim qui e quindi questo farà eco a
‫quella roba in un file.
‫Riguarda l'immagine.
‫Quindi questo è per un'app HP legacy che prevede un file di configurazione p di HP FP M e in questo caso ho bisogno di impostare
‫alcuni valori di configurazione per NPM che sono unici per ciascun ambiente.
‫Questi sono in realtà questo quanto voglio far crescere il sistema FGM e quanti sottoprocessi voglio generare cose
‫del genere.
‫Destra.
‫Quindi sarebbe diverso per lo sviluppo locale rispetto alla produzione in produzione, voglio che cresca
‫molto.
‫Destra.
‫Quindi cambieresti queste cose qui ed è così che prendi quelle app legacy e le fai funzionare.
‫Ora puoi vedere queste cose nelle immagini ufficiali perché è così che molte delle mie cose imparano.
‫Quindi, se sono appena entrato nel mio sequel, puoi vedere come l'hanno fatto esattamente allo stesso modo in cui il mio sequel ha
‫bisogno di cose in un file di configurazione.
‫Destra.
‫Ha bisogno di impostazioni dinamiche in fase di esecuzione.
‫Quindi, se hai cercato nel file docker il mio sequel ufficiale e scorri verso il basso vedrai che sì imposta alcune variabili di ambiente qui ma ha anche
‫uno script del punto di ingresso che copia in esso lo collega in una posizione
‫specifica e quindi come è il punto di ingresso.
‫Quindi il comando qui è vedere il CMB che non puoi davvero vederlo.
‫Il CMB è solo per il mio seguito il punto di ingresso tecnicamente viene eseguito prima di quello e quindi passa l'esecuzione
‫al CMT.
‫Una volta che lo script è stato eseguito ora nel modo in cui trovo quello script qui è
‫solo salire di un livello e ottenere l'hub e fare clic su questo otto punti, quindi vedrò una variabile di
‫ambiente
‫vedere e ora abbiamo lo script della shell che viene eseguito ogni volta che il mio sequel inizia bene.
‫E qui fa cose come prendere le variabili di ambiente e renderle disponibili per l'app.
‫In effetti è abbastanza intelligente che se aggiungi un piccolo file di sottolineatura alla fine di una variabile di ambiente, prenderà
‫tutto ciò che è in quel file e lo trasformerai nella variabile di ambiente, il che è ottimo per tutte le applicazioni che
‫hanno ancora bisogno di segreti, chiavi API e tutta quella roba.
‫E se stai usando segreti segreti o entità cubane, queste cose sono fornite in quanto possono essere fornite
‫come file.
‫Ora puoi sempre usare cose come Vault e altri sistemi di fantasia che onestamente si basano su file, ma
‫in contenitori tendiamo a usare cose come file e Linux in generale, quindi usiamo cose come file.
‫Quindi stai passando queste cose come singoli file.
‫E poi questo piccolo script di shell che è open source, il
‫che significa che puoi copiarlo e inserirlo nella tua app, puoi usarlo per copiare le variabili di ambiente dal file di testo e
‫quindi incollarle ognuna in una variabile di ambiente denominata in modo appropriato e in questo modo l'app in un secondo
‫momento può avere variabili di ambiente scritte per configurare i file per l'app e tutto è meraviglioso.
‫Destra.
‫E questo cambierebbe ad ogni avvio dell'app perché le variabili intrinseche potrebbero essere diverse.
‫E poi riscriverebbe quelli ed è così che funziona.
‫Quindi speriamo di capire quei passaggi.
‫C'è molto di più.
‫In realtà c'è un modo per farmi arrivare molto velocemente.
‫C'è un piccolo riassunto di come trattare di più con le
‫variabili di ambiente all'interno di compose e l'articolo che ho scritto ottiene anche il link qui.
‫Sì, questo è finito sul sito di Riley.
‫E ho fatto un bell'articolo sul blog per loro.
‫Beh, penso sia carino.
‫Ma sai che spetta a te darci bugie.
‫E parla del Dr. Campos perché molto di ciò che abbiamo a che fare con gli
‫sviluppatori è soprattutto la configurazione locale.
‫Come posso rendere la mia configurazione specifica per me.
‫E una di queste cose è un file override che purtroppo non ho in questo esempio HP,
‫non penso di non avere un file override ma dovrei.
‫Sarebbe un'altra cosa da aggiungere qui.
‫Ma qui lo metterò sotto controllo.
‫Controlla che O'Reilly si colleghi per parlare di tre cose diverse e componi
‫che ti aiuterà davvero nel tuo gioco sulla gestione della configurazione e sulla riduzione delle parti replicate con il giusto templating significa che
‫puoi aggiungere parti specifiche nella parte superiore del tuo file di composizione e quindi ripetere senza dover ripeti più e
‫più volte, quindi se hai molte delle stesse variabili di ambiente perché stai facendo micro servizi e
‫hai forse 20 micro servizi in un file di composizione, il modello è per te.
‫Questa è un'altra cosa che ti farà risparmiare un po 'di tempo e puoi avere tutte le
‫stesse parti che devono essere ripetute più e più volte nella parte superiore del tuo file
‫di composizione e quindi è solo una cosa di gioco davvero il modello e poi puoi quindi inserirlo su ogni servizio al
‫momento opportuno.
‫Il modo in cui lo faccio qui ci sono anche altre cose qui ti incoraggio
‫a verificarlo, incluso come usare le sue variabili di ambiente all'interno dei file composti non solo per impostare le variabili di
‫ambiente nell'immagine ma anche qualsiasi altra cosa tu voglia cambiare nel tuo file di configurazione in fase di esecuzione, quindi controlla quella
‫roba.
‫Spero ti piaccia Michael.
‫Che succede Michael.
‫Michael Ahrens alla chiamata.
‫Chiamami.
‫Cos'è questa teleconferenza lì?
‫Dr. Capitano.
‫Spesso cosa non dovrebbe andare nelle variabili d'ambiente.
‫Chi stai attirando.
‫La domanda.
‫Per vedere cosa viene in mente la gente.
‫Cosa non dovrebbe andare nelle variabili d'ambiente.
‫Bene, quindi il motivo per cui le entità Docker e cubane e altri strumenti hanno creato questi modi per noi di mettere
‫segreti nei file è in modo che non debbano essere variabili di ambiente.
‫Quindi, idealmente, se stai creando le tue app per gestire le tue app stai mantenendo quei segreti fuori dalle
‫variabili di ambiente non perché necessariamente le variabili di ambiente siano intrinsecamente insicure, è perché
‫noi con le variabili di ambiente tendiamo a trapelarle nel modo giusto.
‫Tendono a tendere a comparire nei registri perché forse facciamo un dump della variabile d'ambiente da qualche
‫parte nella nostra configurazione o lo facciamo.
‫Se non ti piace una P HP, c'è un comando di test HP PSP EMV o sono entrato in quello che si chiama più
‫qualcuno di cui sono sicuro che sia qui e ricordi e dimmi, ma dove scaricherà la
‫tua configurazione su un web pagina c'è roba del genere e quindi se ci sono segreti in qualsiasi
‫variabile d'ambiente, saranno esposti lì e potresti non intendere che, in qualche modo, penetrino nei log o nel
‫sistema di monitoraggio e tu.
‫Se hai errori a volte sai se hai mai avuto applicazioni in cui se lo hai impostato per il debug e
‫gli errori, questa è la cosa vera in dot net in cui inserirà un sacco di
‫variazioni sullo schermo e potrebbe perdere le variabili di ambiente sullo schermo perché hai dimenticato di bloccarlo
‫nella modalità di produzione, ci sono molti modi in cui le variabili d'ambiente possono finire nelle mani sbagliate.
‫Quindi un buon primo passo per non mettere roba nelle variabili di ambiente sarebbe i segreti e
‫con sciami e comunità puoi tenerli nei file e in questo modo puoi insegnare alla tua app come farli
‫uscire dai file.
‫Il prossimo passo è quello di poterli ottenere dai tuoi segreti e configurare i file nei file di cui l'app ha
‫bisogno.
‫Quindi, invece di archiviare una variabile d'ambiente che alla fine diventa come dovrei, ad esempio, viene scritta in un file
‫che potresti usare può fichi e archiviare la configurazione, i segreti e i file e poi vanno direttamente ai file che forse
‫il mio sequel o la tua app hanno bisogno .
‫Destra.
‫Quindi tecnicamente non entrano mai nelle variabili di ambiente.
‫Quindi almeno non sul server stesso.
‫Destra.
‫Quindi questo è un grande argomento, sono contento che tu l'abbia sollevato.
‫Ma il fatto è che probabilmente potrei scrivere un intero corso sulle variabili di ambiente dei segreti di configurazione, ma
‫fondamentalmente tutte le cose che ti servono per un ambiente e come gestirle.
‫Destra.
‫E penso che anche se vai su cose come Vault per te e ora stai parlando di un'API segreta
‫che la chiami diventa ancora più complicata.
‫Quindi sicuramente c'è molto di cui parlare lì.
‫E se qualcuno ha buone risorse che gli piace, sentiti libero di lanciare e chattare o gettarle
‫nei commenti del video di YouTube per dopo.
‫Va bene, bella domanda, Michael, è bello vederti.
‫Perché dovresti.
‫Stephen dice che il file di Ducker non sarebbe nel controllo del codice sorgente anche se non preferisco avere crediti di produzione come
‫la password del nome utente e il controllo del codice sorgente.
‫Ecco perché quei valori sono solo valori predefiniti all'interno dei file del medico Steven.
‫Non inseriresti veri segreti in quel file.
‫Destra.
‫Come puoi vedere quello nel mio esempio è proprio qui che tutto nel file del pugnale è solo esempi o
‫esempi.
‫Ora, se è un numero semplice o qualcosa che deve solo essere impostato e c'è un valore predefinito una sorta di default ragionevole come
‫questi proprio qui questi p p p. m. le impostazioni quindi inseriscono quelle di
‫produzione che preferisci e puoi sovrascriverle secondo necessità.
‫In questo modo non è necessario impostarli manualmente ogni volta.
‫Ma sì, se vai qui in uno di questi che sono unici per un'app specifica o un ambiente specifico,
‫sto solo inserendo valori fittizi qui.
‫Non lo consiglio vivamente all'interno del repository di codice.
‫Inserisci i tuoi segreti, i tuoi URL e l'ambiente, conosci le impostazioni del nome di dominio e cose del
‫genere.
‫Tutto ok.
‫Sono d'accordo, ma il tuo file Ducker stesso sarebbe con la tua app.
‫Sì, è lì che vuoi tenerlo.
‫Tutto ok.
‫Buona domanda.
‫Bella domanda sì
‫Voglio dire, a meno che non siano crittografati nel modo giusto, potresti fare hashing su di essi se la tua app accetta questo genere di
‫cose.
‫Ma ancora non li terrei li dentro.
‫Non mantengo le impostazioni dell'ambiente altrove ma sono necessarie impostazioni predefinite.
‫E ciò che tendo a fare in un file di composizione con Docker compose è l'impostazione predefinita che funziona con
‫uno sviluppatore locale.
‫Quindi la composizione Docker avrebbe funzionato per loro.
‫Ora può significare che hanno bisogno di ottenere un punto nel file V da qualche altra parte, forse un negozio sicuro in cui
‫hai una sorta di segreti per sviluppatori che conosci quel genere di cose.
‫Ma lavoro davvero duramente per non includerlo come idealmente se sei uno sviluppatore locale hai tutto ciò di cui
‫hai bisogno localmente.
‫Non hai bisogno di API remote come cose remote e speriamo di avere dati di esempio e cose che possono
‫essere solo sul tuo computer locale e non hai bisogno di molti segreti che devi preoccuparti di
‫avere valori fittizi per tutto e puoi semplicemente comprare a livello locale.
‫Ovviamente non tutte le nostre app possono farlo come una sorta di utopia.
‫Quindi ti verrà in mente un modo diverso per archiviare
‫quei segreti ed è per questo che ci sono così tanti modi per impostare le variabili
‫di ambiente in fase di esecuzione in modo da poterle conservare altrove e poi inserirle all'ultimo secondo attraverso l'ambiente le variabili vanno bene, buone domande sui verbi ambientali.
‫Sono contento di avere questo argomento oggi.
‫Vediamo
‫qual è il modo più semplice per implementare i file E e V.
‫Inoltre ti ho mostrato l'esempio dell'app my sequel nel modo giusto.
‫E qui prendono questo script e non c'è nessun file EMV.
‫Ciò per cui è progettato è quando si utilizzano segreti o configurazioni.
‫Quindi se stai usando i segreti nativi e le funzionalità di configurazione dello sciame Docker o configura mappe
‫e segreti nelle comunità, potresti forse usarlo come un modo per ottenere quelle informazioni da quei file in particolare i segreti
‫realmente e portarli nelle variabili di ambiente.
‫Se ne hai bisogno nel modo giusto, potresti non aver bisogno di inserirli nelle variabili di ambiente, ma se
‫lo facessi potresti usare questo piccolo script di shell per farlo.
‫Spero che risponda alla tua domanda, ma non lo sarei.
‫Non è necessario creare un file specifico.
‫Esattamente.
‫Se stai parlando di come eseguire segreti di sciame perché i segreti di sciame creano file per te, dai
‫un'occhiata al mio corso di padronanza Docker all'URL.
‫Brett Fisher dot com slash talker che è giù nella descrizione.
‫Ne ho parlato anche lì nel mio corso di sciami.