‫Va bene, quindi ora che abbiamo esaminato i segreti e le funzionalità, e come funziona e
‫tutto il resto, esaminiamo alcune pratiche.
‫Quindi, quello che ho qui è che ho preparato il nostro sciame a 3 nodi come prima.
‫Sono in una directory di
‫esempio 1 dei segreti che vedrai nel repository.
‫E tutto quello che ho dentro è un file di testo. E in quel file di testo è solo un semplice username,
‫nemmeno una password.
‫Ci sono due modi in cui possiamo effettivamente creare un segreto all'interno di Swarm.
‫E uno di loro è quello di dargli un file, e un altro è quello di passare un valore alla riga di comando.
‫Quindi, prima usiamo il file. creare il docker segreto. E poi ho bisogno di dargli un nome nel database segreto.
‫E lo chiamerò utente psql. Sputa l'ID, come fa E ne creiamo un altro. In realtà inseriamo
‫Ovviamente non deve essere lo stesso nome del file. Ma lo chiamerò così. la password.
‫E poi. per altri oggetti. E questa volta lo faremo davvero echeggiando dalla riga di comando.
‫Se vedi quello che
‫sto facendo, in realtà sto digitando una password nella riga di comando con echo, e riecheggiando nel comando di creazione.
‫E nota il trattino alla fine, perché sta dicendo al comando di leggere dallo standard input. che stiamo dando con il comando echo.
‫Questo è ciò
‫Ora, dovrei dire che entrambi hanno degli svantaggi.
‫Il primo, in realtà stai memorizzando la password sul disco rigido del server sull'host.
‫E davvero non vorremmo farlo.
‫Quindi, forse useresti l'API remota da quella linea di comando locale sul tuo computer. E quindi passare i file in
‫questo modo.
‫E, nella seconda, sta effettivamente entrando nella cronologia del nostro file Bash per il nostro utente root.
‫Quindi, tecnicamente, se qualcuno fosse in grado di entrare in root, potrebbe effettivamente ottenere questa password.
‫Quando hai a che fare con i tuoi sistemi di produzione, dovrai ora, se faccio un docker segreti ls, puoi
‫esaminare vari modi per aggirare questi due potenziali problemi di sicurezza. Ora, posso effettivamente ispezionarli, ma non vedrò mai le password o il vero segreto.
‫Quindi, quello che abbiamo qui è. vedere che li ho entrambi lì dentro. Quindi, fammi solo fare l'utente.
‫Non ci darà le informazioni, giusto. Perché se fosse così facile
‫ottenere le informazioni non sarebbe davvero così segreto.
‫Destra?
‫Quindi, l'obiettivo qui è che una volta inserito il segreto nel sistema, esso viene memorizzato nel database. avrà accesso ai segreti decrittografati saranno i contenitori
‫e i servizi a cui li assegniamo.
‫E l'unica cosa che
‫Quindi facciamolo ora. e assegnarlo
‫Creerò un servizio manualmente. a questo servizio, in modo
‫creare il servizio docker. Lo chiamerò psql. E abbiamo intenzione di mappare il segreto ad esso. Fondamentalmente, stiamo dicendo a questo comando di creare questo segreto chiamato Posso anche usare l'ID del che tutti i contenitori di questo servizio vedano questo segreto. Tutto ok.
‫questo nome particolare. segreto. E poi metti l'utente lì, e poi devo farlo di nuovo per la password.
‫Va bene.
‫Quindi questo mappa i segreti del servizio, in modo che vengano visualizzati come file all'interno del contenitore.
‫da questa immagine come usare quei segreti.
‫Ma non dice al database di Postgres che stiamo creando
‫Quindi, di solito, dobbiamo fare qualcosa con la configurazione dell'immagine.
‫E in questo caso, le immagini ufficiali di Docker Hub si sono basate su uno standard in cui si utilizzano
‫variabili di ambiente. Ma, quindi
‫invece di passare forse qualcosa come la password di Postgres, sarebbe difficile da usare con un file. sarebbe stato eseguito segreti, e poi il nome, giusto? Quindi, passa psql, il nome del segreto.
‫Dovremmo Se
‫in realtà, come, cat fuori il file nella variabile di ambiente e questo è un po 'un dolore. lo faccio, in realtà è nell'avvio dell'immagine che cercherà di riempire questa variabile d'ambiente.
‫Quindi, hanno lo standard in cui, se si specifica un file. e questo sarebbe il percorso. E se lo è, verrà quindi inserito il file e memorizzato nella variabile di ambiente. effettivo di quel file.
‫Il contenuto
‫Questo è un modo davvero semplice per consumare questi segreti contenuti nei file.
‫Ma vuol dire che le immagini che usi devono avere questo standard in atto. Spero che questo abbia un senso per te. Quando creo il servizio, farà la cosa tipica che fa quando emette
‫Possiamo anche fare la stessa cosa per l'utente. una richiesta di pianificazione per un nuovo contenitore.
‫Creerà un
‫database Postgres e passerà le variabili d'ambiente per le posizioni di questi due segreti.
‫E poi sta per mappare, in un tempfs, in realtà sta per mappare in quello che sembrano file.
‫Ma di nuovo, è davvero solo un file system RAM o un tmpfs.
‫Andiamo a vedere cosa possiamo vedere lì dentro.
‫Quindi, faccio un servizio di finestra psql, e questo dovrebbe dirci su quale nodo sta girando.
‫Ok, è in esecuzione su questo nodo.
‫Facciamo un exec per vedere cosa possiamo vedere all'interno del contenitore.
‫exec docker -it.
‫E poi il nome contenitore specifico per quel servizio, e poi bash.
‫Tutto ok.
‫Ora dovremmo essere in grado di fare un ls su segreti di corsa, e vedrai che otterremo i due file lì. un nome utente per creare il database.
‫E se faccio un gatto su utente psql, vediamo il valore. Ha funzionato. se non avesse quei file, il
‫E se guardiamo i log di quello psql, sappiamo che funziona davvero. Perché se non lo fosse. database effettivo continuerebbe a ricreare se stesso, e non sarebbe in grado di funzionare perché non aveva una password e
‫Se si eseguisse nuovamente il servizio docker, cosa vedresti se non funzionasse correttamente
‫in uno scenario di database, il database sarebbe effettivamente in errore. E continuerebbe a riavviarsi
‫e vedresti nuovi contenitori creati qui.
‫Quindi, ora che lo abbiamo effettivamente assegnato lì, possiamo effettivamente utilizzare un
‫aggiornamento del servizio docker per rimuovere il segreto. Quindi, aggiornamento del servizio docker --secret-rm.
‫C'è anche l'aggiunta segreta. uno di questi segreti, cosa accadrebbe effettivamente, ridistribuirà il contenitore.
‫Ma se togliessi Perché i segreti fanno parte del design immutabile dei servizi.
‫Se qualcosa nel contenitore deve cambiare per il servizio,
‫il servizio non entrerà e cambierà qualcosa all'interno del contenitore. In realtà fermerà il container e ne ridistribuirà uno nuovo.
‫Ovviamente, non è l'ideale per i database. Quindi dovremo elaborare un piano diverso su come aggiornare le password del
‫database.
‫E questo è qualcosa di cui possiamo parlare più tardi.
‫Per ora, voglio solo che tu sappia che puoi rimuoverli e aggiungerne altri a un servizio esistente.
‫Ricrea il contenitore quando lo fai.
‫