Press "Enter" to skip to content

GOTO 2017 • Simplifying Container Management with Habitat • Michael Ducy


[Musica]
sì così alla fine ci sarà di nuovo a
demo dal retro della stanza, se tu
voglio farlo si, quindi niente non lo fa
ho un senso per te darò un
breve demo alla fine ovviamente lo faccio sempre
come fare uno strato in una demo mentre progrediamo
ma dal momento che stiamo avendo tecnico
difficoltà non sono in grado di farlo
Sono Michael Ducey, lavoro per un’azienda
chiamato chef se non hai sentito parlare di chef
lo chef gestisce tre progetti open source uno
è l’ originale che abbiamo iniziato
con chiamato
chef un altro si chiama ispezionare quale
è creato da un gentiluomo sopra
Germania e poi la terza open-source
progetto che ho intenzione di parlare di
oggi è un habitat chiamato che aiuta
impacchetta un’applicazione e poi
eseguire quell’applicazione in produzione tutto
proprio mentre sto attraversando il discorso
se vuoi vedere qualcosa di simile
scopri maggiori informazioni su cosa
l’habitat è e forse guarda il
la documentazione e altre cose del genere
sentiti libero di fare una foto di questo
ora e poi puoi avere utile
collegamenti per te in modo da poter seguire così
questa analogia è stata fatta in un altro
conferenza dove è un po ‘come il
evoluzione della tecnologia proprio così se tu
guarda la scopa che è un po ‘come noi
usato per fare le cose di metallo nudo manualmente
sistemi nel proprio centro dati
installato sai che inserisci l’ ISO in o
il mi dispiace il DVD o il CD in e
fai il bootstrap della macchina e
kick-started e tutte quelle cose divertenti
e poi siamo diventati un po ‘furbi
tecnologia e abbiamo iniziato ad avere cose
come macchine virtuali e cose come lo chef e
ansible e burattino e altre cose come
quello e quello è il tipo di vuoto
più pulito e ottieni un po ‘di più
automazione ma devi ancora farlo
spingerlo manualmente e pulire e
quindi contenitori e contenitori
gli orchestratori sono più come i Roomba
proprio dove lo hai appena liberato
e va e pulisce tutto
e parlando dello sviluppatore
esperienza del Roomba o dei contenitori
di solito è abbastanza positivo, quindi
quello è lo sviluppatore e tu sai usare
contenitori e questo è IT aziendale e
l’IT aziendale è come no, non puoi essere
utilizzando contenitori e gli sviluppatori solo
togliti di mezzo e poi ottieni
un po ‘più arrogante mentre vai avanti
e tu hai alcune altre persone che sono
seguendoti e forse lo trovi
un po ‘più di tecnologia in cui ti stratifichi
come si sta utilizzando contenitori come bene e
allora quello che finisce per accadere è come
L’IT aziendale tenta di emulare te e
costruiscono il contenitore aziendale
Orchestrator o qualcosa di simile
alcuni hanno un nome orribile orribile
non fa esattamente quello che vuoi tutto
giusto così sei ancora laggiù ma il
realtà di ciò che effettivamente ciò che ti serve
eseguire i contenitori in modo efficace in
la produzione è leggermente diversa da
quella prima esperienza di sviluppatori touch
giusto e quindi questo è bene questo è un cane
facendo quante persone hanno cani Wow no
Ho un cane un’altra persona così per
quelli di voi che non conoscono i cani
a volte non vanno sempre fuori
a volte vanno a casa tua e tu
può vedere che ha fatto o ha finito
quello e poi anche lui o lei
aspettandomi o ispezionando cosa
è successo e questo è importante per te
dovrebbe sempre guardare in basso per essere sicuro
non c’è sangue o qualcosa del genere
il cancro al colon è la cosa ma poi qui
arriva il Roomba e l’automazione è
lavorare come è l’ automazione
dovrebbe funzionare bene e il
l’automazione è piuttosto stupida
ambiente e naturalmente il Roomba
vede un pasticcio e vuole fare in modo che
il disordine viene pulito e molto simile
quando distribuisci ciecamente contenitori
ora nella produzione hai una merda stropicciata
tutto il tuo piano, quindi automazione
è grande e i contenitori sono fantastici e
tutto questo, ma si teme che
devi iniziare a pensare a quando
in realtà vai e prova a distribuirli
fuori in un ambiente di produzione e noi
tipo di chiamare questo la scogliera di apprendimento e
è sì , sai che guardi il
filo di questo tweet e vedrai molti
persone che rispondono e dicono
bene è lo stesso con qualsiasi tecnologia
proprio così è vero è lo stesso con
qualsiasi tecnologia è che si ha sempre
leggere l’hype e devi farlo
vedi dov’è quella scogliera di disperazione
si tratta di provare ad andare e implementare
quello giusto nella produzione e la cosa
con i contenitori ti fa ripensare
o non solo contenitori ma nessuno
progresso tecnologico cosa succede
è che ti fa ripensare a te
fai molto del lavoro che fai oggi
e se pensi di essere nel
ultimo discorso in questa traccia il server
Lestrade parlava molto di quello
è che devi ripensare a come fai
tecnologia e la tua tecnologia
processi attorno a come si distribuisce il codice e
sarà diverso quando sarai
usando una tecnologia diversa così grande
cosa che devi ricordare è questo
quando stai guardando i container lo è
che i contenitori non sono di destra così
siamo il primo discorso e questa traccia
aveva accennato a questa idea e
c’è un comune quando è necessario
spiegare un contenitore a qualcuno
tipicamente quello che succede è bene è come
una piccola mini diga ma non lo è e non lo è
corri in quel modo ma sai che puoi
pensala in questo modo ma la cosa peggiore
che puoi fare è trattare un contenitore
come una VM se stai davvero correndo
è in produzione e sai che ci piace
diciamo che i contenitori non sono VM ma siamo noi
effettivamente sicuro che sia in realtà
cosa sta succedendo nella produzione quindi un ragazzo
con il nome di Gareth rush Grove corre
una mailing list settimanale chiamata
DevOps settimanali per cui ha effettivamente lavorato
fantoccio a Cambridge, ma ha fatto a
studio e ha guardato un sacco di
cose diverse e una delle cose
che ha trovato è che il 75% dei contenitori
contenitore un contenitore pieno di sistema operativo pieno di noi
Ho già fatto questo discorso e me ne sono andato
quello errore di battitura lì dentro e io sono solo una specie di
come arrabbiato con me stesso che avevo ragione
quell’errore e poi un altro studio che voglio
dire che questo era uno studio cane dati che
il cane di dati appena messo fuori è quello
i modelli di utilizzo correnti mostrano che lo sei
ottenendo solo un quattro a uno
rapporto tra contenitore e host
giusto così per ogni VM che fai girare
Sarai in grado di eseguire quattro contenitori
così dove sono le due cose che noi
può indovinare da quei due
statistiche quello il modo in cui effettivamente eseguito
contenitori e produzione quelli sono VM
giusto stiamo trattando container come VM
non è necessario mettere a pieno regime
sistema interno di un contenitore più si
tutto ciò che devi fare è impacchettare il tuo
applicazione ma il problema è che
è molto facile fare la cosa sbagliata
da come gli schemi che sono là fuori
in particolare i pattern e i file docker
ti consente di andare facilmente e fare cose del genere
questo quindi cosa hai appena fatto?
appena tirato praticamente a pieno
sistema operativo in questo momento non è un
sistema operativo completo nel corso degli anni
i venditori sono migliorati
minimizzando il più possibile ciò che è
all’interno di queste immagini del contenitore ma
ci sono ancora molte cose lì dentro
che non ti serve e poi c’è
anche molte cose lì dentro
hai bisogno che tu debba farlo
vai e costruisci e mettiti lì dentro
e se ci pensi , ora c’è questo
movimento chiamato modernizzato tradizionale
applicazioni che un venditore ha
molto pesante nel mondo dei container e
quando prendi solo un può essere un uomo
convertilo in un contenitore tutto ciò che sei
fare è sollevare e spostare il tuo
debito tecnico hai preso tutto
questo vecchio codice e configurazione e
altre cose come questa e se solo tu
migrato più e abbiamo visto nel
ambiente cloud quando stavamo facendo
anche le migrazioni di cloud virtuali abbiamo visto
quando stavi facendo fisico a virtuale
migrazioni da sei a otto anni fa, giusto
e si sta prendendo con voi tutti quelli
problemi che hai avuto all’interno di quella VM
e ti stai trasformando in un
formato containerizzato in modo che tu possa
vai più veloce a destra e in realtà sei
non risolvendo i tuoi problemi quindi parliamo
su cosa significano le applicazioni moderne
proprio in questo concetto di moderno
applicazioni e cloud nativo e il
il tratto nativo del cloud ovviamente è tutto
su come eseguiamo applicazioni moderne
quindi questo sarà più operazione
focus cuz Sono uno sfondo di I’m an
Operazioni una persona di infrastruttura così
quando parlo di cose e penso
le cose di cui sto parlando più
la prospettiva di come si fa in realtà
eseguirlo su larga scala in produzione mentre
per una folla incentrata sugli sviluppatori potresti
tutto sta pensando bene, voglio solo
per ottenere il mio codice e buttarlo sopra il
muro alle operazioni il più velocemente possibile
quindi parliamo di applicazioni moderne
e di cosa hai bisogno per eseguire moderno
applicazioni effettivamente così moderne
le applicazioni devono iniziare con questo
prima l’idea dell’API e inizi con l’API
prima da un paio di diversi
le prospettive della domanda stessa
la prima cosa che dovresti progettare
sta avendo un’API che le persone possono
comunicare con la vostra applicazione e
allora se hai un’interfaccia utente allora
la prossima cosa che metti è quell’utente
Interfaccia su di esso proprio la stessa cosa
anche dal punto di vista delle operazioni
vuoi iniziare con l’ avere un’API
andare e interrogare quell’applicazione per le cose
come la salute riconfigurare quell’applicazione
e anche alzando i servizi che
l’ applicazione che devi prendere
un primo approccio API e questo è ciò
il cloud è tutto sulla cloud giusta potrebbe
sembra complicato ce ne sono molti
diverse definizioni a riguardo ma il
la cosa principale del cloud è essere in grado di farlo
richiedere risorse di calcolo su un’API
e questo è un po ‘il principale comune
definizione di cosa che vedi oltre
di nuovo nel mondo delle nuvole, non importa
se stai usando l’infrastruttura o
servizio o piattaforma come servizio o
servizio necessario per ridurre al minimo l’area di
preoccupazione e abbiamo sentito parlare di coppia
che oggi e questa idea di rottura
cose in cui si infrangono i monoliti
micro servizi e avere il più piccolo
area di preoccupazione possibile per il tuo
applicazione che vuoi la tua applicazione
istanze per essere effimere tanto quanto
possibile, quindi dovresti essere in grado di entrare
e uccidere una di quelle istanze e
automazione riportarlo su e
sarà in grado di riprendersi e
unisciti ai suoi pari e scopri cosa
la configurazione di esecuzione live è e quindi
porta l’ applicazione come te
mi aspetterei giusto e anche tu dovresti
essere in grado di portare nuove istanze per
caricare e una volta che il carico si abbassa
puoi uccidere quelle istanze extra
perché non ne hai più bisogno e
questo dovrebbe funzionare per stateful
applicazione
dove stai effettivamente memorizzando lo stato in a
database o qualcosa di simile o
applicazioni apolidi pure e poi
dovresti concentrarti sugli artefatti così uno
realizzazione che ho avuto un paio di anni fa ho
era in realtà ad Amsterdam, studiando su a
giorno molto simile oggi fuori su una terrazza
da qualche parte bevendo un drink con un amico
e ha parlato di questa idea
tutto si muove tutto nel
mondo della tecnologia tutti i nostri processi
si stanno muovendo verso questa idea
tutto è un artefatto ed è tutto
su come si gestisce la gestione degli artefatti e
quindi se pensi a un contenitore è solo
un diritto artefatto e la cosa se tu
pensa a una VM è solo un artefatto una VM
immagine è solo un artefatto tuo
il codice dell’applicazione è solo un artefatto
tutto dipenderà dal
la dimensione di quell’oggetto e quello che sei
incluso all’interno di quell’oggetto ma
puoi usare lo stesso tipo di CI e CD
processi per spingere quell’artefatto fuori in
un ambiente di produzione quindi l’habitat è
costruito su questa idea in modo gentile di ambientazione
il palco per te nel mondo dei contenitori
parliamo dell’habitat stesso così
l’habitat si basa su questa idea di come
gestisci applicazioni moderne e come
lo rendi il più semplice possibile
compilare il pacchetto e quindi distribuire ed eseguire
quella moderna applicazione
non importa l’ambiente così ha l’habitat
questa idea di API prima così ha
la tecnologia in esso quando impacchettate il
applicazione a cui il pacchetto ha un’API
dove puoi interrogare la configurazione
di quel pacchetto quindi se ci sono cose
che puoi cambiare e ottenere quello
informazioni puoi anche interrogare il
pacchetto stesso per scoprire il tuo
dipendenze e il tuo transitorio
dipendenze e poi quando in realtà
prendi quel pacchetto per andare ed eseguirlo in a
ambiente di produzione c’è quello che è
chiamato il supervisore dell’habitat e il
supervisore dell’habitat ti permette di fare
cose di cui parlerò di più
interrogare lo stato di salute della corsa
applicazione per scoprire la corsa
configurazione per scoprire i coetanei
e altre cose del genere come bene e
Ne parlerò qui in un secondo
si concentra su artefatti quindi la cosa principale
sull’habitat è che è tutto
trattato come quello che viene chiamato un habitat
un fatto o un file del cuore e quando tu
impacchetta tutti i tuoi pezzi di
il software è tutto per ottenere il
pezzi giusti insieme per costruire realmente
l’applicazione in esecuzione così quando tu
costruisci il tuo artefatto applicativo che sei
andando a dichiarare quale è il tuo tempo di costruzione
dipendenze e cosa è il tuo runtime
le dipendenze sono e all’interno di quello allora
l’habitat determinerà tutto
ha bisogno di entrare non solo dal tuo
dipendenze ma anche transitori
dipendenze pure e quindi pacchetto
tutti insieme in un unico pacchetto che tu
può quindi spedire e che potrebbe essere nel
forma di un contenitore o un altro pezzo di
un altro artefatto se lo vuoi
elimina il sistema operativo così da te
potrebbe star pensando bene che sei andato via
elencare male ma questo è in realtà riducendo
la tua area di interesse e avere il
la più piccola area di interesse possibile, quindi
la cosa principale dell’habitat è questo
non dipendi più da
componenti del sistema operativo e
librerie del sistema operativo e altro
pezzi del genere e questo è spesso il motivo
hai quella linea che dice di Ubuntu
1204 perché hai bisogno di una versione di
julep C o una qualche versione di software che
chi bunt a è in vendita nel 1204 giusto
e devi tirare quella libreria e
perché sei dipendente da questo
l’habitat della biblioteca lo elimina per te
in quanto essenzialmente ricompiliamo il
mondo e avere questo artefatto disponibile
per te in un artefatto artefatto
repository e parlerò di più su questo
qui in un secondo quindi abbiamo questa idea
cosa si chiama un’applicazione operativa o
un contenitore di applicazioni utilizzabile così
tipo di bolle in giù a questi sette
principi o sette idee, quindi dovrebbero
essere isolato, quindi dovresti essere in grado di
apportare modifiche o ridistribuirlo
senza necessariamente influenzare gli altri e
se si incidono gli altri è possibile in
almeno un meccanismo per notificarli
che stai facendo cambiare questo
applicazione stessa così l’applicazione
code te stesso che stai spedendo
dovrebbe essere trattato come immutabile giusto e
questo è uno dei principi di
contenitori è che i contenitori dovrebbero essere
trattati come artefatti immutabili la cosa
è che ci sarà sempre
configurazioni dell’ultimo miglio necessarie
essere cambiato in qualche modo giusto quindi se guardi
ai contro
di 12 fattori di applicazione e 12 fattori
applicazioni se non sai cosa 12
le applicazioni di fattore attivo sono buone a
dodici fattori dotnet ti darà il
12 principi di 12 applicazioni di fattore
e si sovrappone davvero molto bene con
cloud native alcune persone effettivamente usano
i termini intercambiabilmente bene un pezzo
dell’idea del fattore 12 è che tu abbia
per memorizzare la configurazione dell’ambiente in
l’ ambiente stesso perché il
applicazione quando sarà necessaria
essere in grado di riconfigurare se stesso lì
dovrebbe essere un’interfaccia comune per
monitorando la salute dovresti ricostruire tutto
dei manufatti che ti servono da
fonte e ci dovrebbe essere un comune
tecnologia di packaging che è possibile utilizzare
per quegli artefatti che hai
ricostruito e poi dovrebbe esserci quello che è
chiamato indipendenza del tempo di esecuzione così tu
dovrebbe essere in grado di prendere questo pacchetto voi
dovrebbe essere in grado di prendere il pacchetto e
il supervisore o il nostro componente in questo
idea di contenitori di applicazione utilizzabili
e dovresti essere in grado di distribuirlo a
qualsiasi tecnologia server sottostante e
il principio dell’habitat è che puoi prenderlo
un pacchetto di habitat che crei e
distribuirlo su qualsiasi x86 basato su Linux
sistema operativo non importa se
è in esecuzione su un metallo nudo VM all’interno
di un contenitore o così via funzionerà e
funziona allo stesso modo, entriamo in più
sui problemi che l’habitat risolve
quindi il modo più semplice per pensare all’habitat
è che risolve per costruire il ciclo di vita di
un’applicazione e risolve la corsa
ciclo di vita dell’applicazione così è
quasi lo strumento Ops Devon non dire che
Ho detto che è uno strumento DevOps è un dev e
strumento operativo così tante persone hanno mai
fatto questo quante persone hanno costruito
software giusto, questo è il tuo standard
abbiamo appena scaricato un open source
libreria da internet o open source
qualcosa fuori di Internet è più
probabilmente scritto in C o C ++ se è un
libreria di basso livello e lo faccio bene
e fallirà e perché è così
andando a fallire perché non ho inserito il CD
la directory qui dovrebbe essere un CD
lì no, fallirà perché tu
probabilmente non hanno una dipendenza
installato giusto non hai alcun tipo
di intestazioni che questo pacchetto e ha bisogno
in realtà andare e compilare correttamente
e poi vai in questo intero ciclo di
scaricando ancora un’altra palla di catrame in esecuzione
attraverso la stessa cosa scoprendo
ti manca qualcos’altro e tu sei
fondamentalmente stai camminando per la tua dipendenza
albero giusto
e quindi ciò che l’habitat fa è in realtà
nasconde tutto questo per te in modo predefinito
quando inizi a scrivere un pacchetto habitat
l’ implementazione predefinita è
essenzialmente il ciclo di build per questo
adesso puoi anche fare altre build
cicli se vuoi pure così è
potrebbe davvero essere un po ‘difficile da vedere se
hai mai lavorato con Java, quindi questo
potrebbe sembrare familiare a te così questo è
il ciclo di costruzione per un esperto
applicazione giusta in modo da poter vedere molto
delle stesse cose pulite
hai dei compiti che hai nel pacchetto che hai
compilato correttamente e questa è una build
ciclo di vita di un’applicazione che hai
cose simili per NPM e così giusto
Installazione NPM che ti consente di vendere tutto
i moduli necessari per andare effettivamente
ed eseguire il pacchetto di applicazioni pure
o pubblicare e così via destra quindi cosa
l’habitat fa è definisce la costruzione
ciclo di vita e lo mostrerò nella demo
quindi l’ implementazione predefinita è C o
C ++ puoi fornire altro
implementazioni fornendo ciò che noi
chiama un’impalcatura e quindi ne abbiamo due
ponteggi In questo momento siamo in
processo di scrivere uno per andare nel
processo di scrittura di uno anche per Java
e voglio dire che c’è almeno
c’è un Python che stiamo attivamente
in via di sviluppo e quindi se usi il
core dell’impalcatura Ruby quindi praticamente tutto
è necessario definire una riga in
quello che viene chiamato il tuo file di punti SH e
il tuo override fondamentalmente quello
implementazione predefinita e lo farà
fornirti un Ruby standard
implementazione di un build il mio ciclo giusto
la stessa cosa con il nodo giusto puoi
espressamente
cancellare le dipendenze del tempo di costruzione e
questo è bello perché prima
c’era la finestra mobile multistadio che si file
dovevo assicurarti che tu l’abbia fatto
apt get update e apt-get install e
e metti cose in quel contenitore
soprattutto se era come GCC o fare o
altre cose del genere quindi nello stesso
linea l’ ultima cosa che vuoi fare è
rimuovere tutti quegli strumenti di creazione che tu
ne hai bisogno o in realtà e uno strato in basso
potrebbe voler rimuovere tutte quelle build
l’ habitat degli strumenti di default non tirerà
nelle dipendenze del tempo di costruzione perché
ti dà la possibilità di dichiarare build
dipendenze temporali e quindi runtime
dipendenze separatamente l’uno dall’altro
all’interno di questo pacchetto sarà tutto
diventare molto più chiaro quando posso mostrare
sei una demo così fondamentalmente che cos’è l’habitat
facendo si sta cambiando tipo di questo
triangolo e girando questo triangolo
a testa in giù quindi quante persone corrono ancora
Red Hat 5 in produzione per 6 proprio tu
non è necessario alzare la mano ma a
versione veramente vecchia di un funzionamento
sistema e perché si esegue un vecchio davvero
versione di un sistema operativo bene
perché il gruppo IT è così
stabile è sicuro sappiamo cosa siamo noi
ottieni ancora supporto per Red Hat, ma ecco qui
il problema quindi c’è un sacco di
materiale fornito dal sistema operativo
e il problema è che hanno un
certa cadenza di rilascio e un certo
velocità che quanto velocemente possono
rilascia le cose giuste e ce ne sono alcune
applicazioni in alcune persone
ambienti che hanno preso la decisione
quando hanno schierato l’applicazione che
avrebbero intenzione di usare è il funzionamento
versione del fornitore di sistema di una libreria e
poi da lì in poi là fuori, fondamentalmente
attaccato duro a quel sistema operativo
versione e non possono andare e aggiornare
il loro sistema operativo perché hanno
tutte queste librerie di cui hanno bisogno o
per esempio Red Hat 6 viene fornito con Ruby
187 giusto e se hai bisogno di un nuovo
versione di Ruby
allora devi andare e prenderlo
Apple che è pacchetti extra per
Enterprise Linux o qualche altro
repository o devi andare e costruire
voi stessi a destra
quindi cosa fornisce il sistema operativo
e soprattutto nel mondo dei container
ci sono molte cose che non facciamo
ho bisogno di più qui ed è giusto
diventando un sacco di rifiuti che non ti servono
il kernel per esempio la maggior parte degli utenti
terra che fornisce un sistema operativo
non hai bisogno né di destra e vedi
questo quando si guardano tecnologie come
come di Google
distro list o Basel dove è veramente
cercando di sbarazzarsi del funzionamento
sistema il più possibile dal tuo
contenitori
l’habitat bene fa la stessa cosa per te
quindi ciò che l’ habitat fa è che inizi
con le applicazioni così quando vai
in quel piano dot sh e tu hai
dichiarato le dipendenze cosa farà
succede è quando dici che sto andando
impacchettalo in un formato contenitore
quello che farà è che inizierà con
applicazione e quindi calcolare il suo
albero delle dipendenze e poi ci vorrà
e lo metterò nel contenitore che sarà
metti il supervisore dell’habitat nel
contenitore e poi mette un piccolo
sistema operativo leggero e non è davvero un
leggero di noi è scatola impegnata che dà
voi gli strumenti di land user più flessibili
Ho quasi detto di sciogliere gli strumenti di terra dell’utente
che è necessario se si ha bisogno di entrare in
il contenitore e basta fare di base
risoluzione dei problemi e altre cose come
quello giusto e la cosa interessante è
è perché stiamo facendo dipendenza
risoluzione dall’alto in basso rispetto a questo
metodo dal basso verso l’alto e tu sei
stratificazione su più e più e più volte
in questo metodo non lo fai necessariamente
sapere cosa è stato messo in tutto il
strati aggiuntivi a meno che non ci fosse un
manifest esplicito da cui è stato tenuto traccia
livello da sovrapporre per stratificare a destra e lì
sono due corsie dove è possibile estrarre gli attrezzi
lì dove puoi davvero andare a vedere
esattamente quello che c’è dentro di un contenitore
immagine, ma quando ci si trova nella
applicazione che puoi conoscere automaticamente
quell’informazione perché tutto ciò che devi
fare è essenzialmente calcolare il
albero delle dipendenze dell’applicazione giusta
quindi l’obiettivo è che quando lo sei
costruire contenitori che vuoi provare e
costruisci in un contenitore per il tuo
applicazione che vuoi provare e fare
vuoi provare a minimizzare il
percentuale del sistema operativo o
ciò che è tradizionalmente visto come il regno
del sistema operativo all’interno del tuo
contenitore e avere più del
applicazioni quindi se tu
pensa a se i tuoi contenitori 100
megabyte quindi vuoi provare e avere
la maggior parte di quei cento megabyte è la tua
codice di applicazione effettivo di cui hai bisogno
in realtà esegui la tua applicazione e la tua
runtime linguistici
giusto e se lo guardi lo sai
il modo più semplice per farlo è avere un
binario collegato staticamente con virtualmente
nessun sistema operativo, quindi se lo sei
usando una lingua come go o qualcosa del genere
come quello che ti permette di farlo
quindi quale habitat ti permette di fare è
chiudere i pacchetti di processo così una volta che ho
impacchettato la mia applicazione che posso esportare
in qualche formato diverso e lo sarà
fai in modo che la risoluzione delle dipendenze sia la stessa
che ho mostrato che metterà tutto il tuo tuo
applica le tue dipendenze così
sarebbe il tuo runtime di lingua e
qualunque altra cosa tu possa essere
dipende dal supervisore dell’habitat
di cui parlerò qui tra un secondo
e poi anche il piccolo piccolo
layout utente leggero anche per te
quindi parliamo di quali applicazioni
bisogno di correre quindi parliamo della corsa
ciclo di vita dell’applicazione e cosa
abitudini app fornisce lì in un contenitore
mondo quindi hai bisogno di cose come la
eventi del ciclo di vita giusto così ogni
l’applicazione ha un ciclo di vita in fuga
lato pure e quelli che gestiscono quelli sono
cose come l’avvio delle applicazioni
fermare l’applicazione
facendo controlli sanitari riconfigurando il
applicazione così è necessario
configurazione specifica dell’ambiente come
bene così sai che ti muovi dal palco o
per lo sviluppo nella messa in scena in QA
in UAT in produzione
qual è una cosa che probabilmente sta andando
per essere 12 spero sia diverso per ciascuno
uno di quegli ambienti che senti questo
storia di recente dove la nuova persona
ha iniziato e stava per impostare il suo
ambiente di sviluppo locale e nel
istruzioni che dice di usare il
stringa del database di produzione giusto così
questa è una cosa che sarà
diverso tra ogni singolo
ambiente o almeno dovrebbe a meno che
lavori in quella compagnia così che tu
conoscere una stringa di connessione JD JDBC o a
Il flusso di connessione del database nella stringa è
sarà l’unica cosa che dovrebbe essere
diverso tra ogni singolo
bene l’ ambiente come lo si ottiene
informazioni di configurazione in
la password dovrebbe essere diversa tra tutti
di quegli ambienti pure i
nomi utente e così via
configurazione specifica a livello di ambiente
l’informazione deve in qualche modo ottenere
iniettato nell’applicazione in modo che esso
può iniziare correttamente ha anche bisogno
conoscenza dei colleghi di volta in volta così
alcune applicazioni devono sapere che io
avere altri tre membri che sono
eseguendo la stessa applicazione correttamente
stanno passando informazioni tra loro
e così via e poi l’altra cosa
che è necessario sapere è conoscenza
servizi dipendenti quindi se c’è un
servizio che si basano su di voi deve
sai come si può andare e ottenere che
informazioni su dove quel servizio
vive e quindi anche le informazioni di base
su quel servizio come forse qual è IP
indirizzo ha ciò che porta sta ascoltando
su forse informazioni sulla connessione kin o
qualcosa di simile pure così che cosa
l’habitat fornisce è ti permette così
creavi la prima cosa che fai quando
si inizia con l’habitat come si fa
avere un piano su di esso e sta per creare
un mucchio di impalcature o non ponteggi
creerà un sacco di modelli
per te immagino che potresti dire che volevo
per dire ponteggi ma dentro e voglio
confondere i termini che genererà molto
di cose per te è molto simile a Rails
quando tu quando fai il generare
rotaie e ti dà tutto il
impalcature che è necessario avviare
scrivere un’applicazione per le rotaie tranne con
Habitat che non vai e cancella la metà di
dopo che hai eseguito il comando tu
in realtà ne mantieni la maggior parte in giro e uno
delle cose che crea è il
ganci directory così dentro i ganci
directory tutto quello che devi fare è scrivere a
script di shell di come si avvia il
applicazione uno script di shell di come si fa
controlli sanitari e tutti questi altri passaggi
che puoi fare anche nel ciclo di vita
di un’applicazione ora non devi
fai tutti loro se non lo hai
file lì poi l’habitat non mi interessa ma
allora quello che accadrà è quando il
supervisore dell’habitat inizia il
applicazione eseguirà l’appropriato
cose per avviarlo e poi se un file
cambia se viene modificata una configurazione
quindi può eseguire la ricarica o
riconfigurare e così via così ci vorrà
cura di tutti quei passaggi del ciclo di vita per
automaticamente
può anche gestire la configurazione di
la tua applicazione
così come impostazione predefinita si memorizza la configurazione
file nella directory di configurazione che lo farà
anche creato per te e poi tu
può fornire valori predefiniti in modo che tu semplicemente
metti qualsiasi file di cui hai bisogno a
configurazione generata per dentro
quel punto o all’interno della configurazione
directory si utilizza in genere 10 al
linguaggio del team modello chiamato manubrio
e fondamentalmente ciò che accadrà è lo è
quando l’applicazione si avvia che
il modello verrà analizzato e nessuno dei
questi valori verranno sostituiti con
sia i valori o valori predefiniti
hai sovrascritto in modo da poter ottenere il valore predefinito
valori dal tuo ponteggio o da un
file ottimale predefinito che si crea e
quindi puoi sostituire i valori con entrambi
usando le variabili d’ambiente che puoi
creare ciò che viene chiamato un utente punto Tamil
e posizionarlo in una determinata directory
e questo lo sovrascriverà o tu puoi
connettersi anche da remoto al supervisore
e iniettare una nuova configurazione in cosa
chiamiamo l’ anello in modo che l’ultimo sia
in realtà un po ‘interessante perché tu
puoi anche ottenere i valori predefiniti quando fai comparire
una nuova istanza dell’applicazione e tu puoi
puntare l’ istanza dell’applicazione al suo
colleghi e quindi può ottenere la configurazione
informazioni dai peer e configurare
stesso correttamente basato sul live
la configurazione in esecuzione sta succedendo
nel tuo ambiente in questo momento e quello è
quello che chiamiamo anello, quindi il supervisore
praticamente ogni singola applicazione
istanza che si sta eseguendo è
correndo all’interno di un supervisore quindi nel
caso di contenitori quando il contenitore
viene fuori ciò che viene effettivamente lanciato come pit
uno è il servizio di supervisione degli habitat
e poi il servizio di supervisione degli habitat
avvia qualsiasi processo applicativo
hai bisogno giusto e poi cosa accadrà
è è possibile far apparire una seconda istanza
e tu dici che il mio pari è questo particolare
Indirizzo IP e poi ne fai apparire un terzo
e il quarto e vengono tutti
insieme per formare ciò che è chiamato un anello
ciò che chiamiamo chiamiamo anche questi nostri
gruppi di servizio e così con questo servizio
gruppo puoi fare cose come passare
informazioni di configurazione come ho già
ha detto che puoi anche cifrare i segreti e
mettilo
sul ring e poi l’anello è il
solo uno in grado di decodificarlo perché
sto usando la crittografia asimmetrica
può anche fare cose come follower
elezione di cui parlerò qui in a
secondo, ecco come puoi passare
informazioni e fondamentalmente iniziano a fare
scoperta del servizio che puoi anche avere
gli anelli parlano tra loro così quando tu
avvia l’applicazione c’è l’opzione
fare un – – legare e questo – – legarti
in pratica dici se hai un database tu
direbbe database: il nome del
Suona dove può ottenere il database
configurazione da e poi all’interno di
i tuoi file di configurazione ti piacerebbe
basta fare riferimento al punto del database e poi
il parametro di cui hai bisogno e poi
quello che succederà è quello
le informazioni di configurazione lo faranno
automaticamente provengono da quell’altro anello
vai nel tuo file di configurazione e imposta
la tua connessione al database correttamente così
l’altra cosa di cui hai bisogno sei tu
bisogno di una certa conoscenza se avete pari di
un’applicazione o un servizio di applicazione
potrebbe essere necessario avere un certo
topologia che avresti lanciato e scritto così
l’unico inizializzatore effettivamente abbiamo preso
che ho bisogno di aggiornare questa diapositiva ma
leader e autonomo o cosa puoi fare
in questo momento e cosa accadrà è dentro
leader è che le istanze dell’applicazione
arriverà se non ne hanno tre
istanze di applicazione su si siederanno
lì e aspetta fino a tre hanno visto
tre salgono sul ring e poi cosa
succede è un’elezione si svolge ora
se sei curioso della tecnologia
che usiamo con l’algoritmo che noi
utilizzare è tutto sull’habitat punto Sh
sito web se vai ai documenti e parli
sugli interni o guarda il
pagina interna vedrai tutto ciò
informazioni se vuoi entrare in natura
della teoria del sistema distribuito che noi
usa qui ciò che accadrà è nel
file di configurazione tutto ciò di cui hai bisogno
semplicemente è dire se io sono un capo allora
questo o mi configuri in questo modo, se lo sono
un follower lo fa o si configura
in questo modo e poi in base ai risultati
delle elezioni i file di configurazione
verrà generato correttamente, quindi se
stai facendo funzionare qualcosa come Redis o
MongoDB allora puoi semplicemente avere il
grandi linee di configurazione scritte in
quei file di configurazione che l’applicazione farà
avvia in quella topologia di scrittura per te
automaticamente se il leader muore cosa
accadrà è è l’anello vedrà che
il leader è morto e se n’è andato se
ci sono abbastanza membri sul ring per
avere il quorum allora andrà a fare un
ancora elezioni e poi porta il
applicazione di backup ed è per questo che noi
hai quel gancio adatto che hai visto
prima perché in alcuni casi quando sei
lavorando e memorizzando i dati necessari
sapere chi è quello che è il più
attuale e quella persona dovrebbero diventare o
quell’istanza dovrebbe quindi diventare il
leader e questo è ciò che l’idoneità
il gancio è usato perché influenza il
le elezioni quindi lo chiamiamo così
idea di applicazioni auto-organizzanti e
quindi il modello tipico che vedi
un buon esempio è se tu abbia mai guardato
a Kubernetes e se hai mai guardato
l’applicazione del guestbook di kubernetes
che è una specie della loro applicazione demo
bene il modo in cui risolvono questo leader
il problema dei follower è che ti creano
crea un contenitore chiamato Redis master
ed è la configurazione hardcoded per
essere sempre il maestro o il capo e
poi ne ha anche uno chiamato Redis
follower e questo è hard-coded all’interno di
lì per essere sempre il follower
e poi fai apparire le istanze
o i contenitori giusto e tutto
funziona bene il problema è che sei ora
gestendo due diverse configurazioni
file per quei due contenitori diversi
e mentre tu conosci due non è un duro
numero da gestire quando inizi a pensare
sulla gestione di sistemi su scala e
se hai intenzione di avere un centinaio di
questi diversi tipi di applicazioni
che devi gestire in questo modo ora
stai gestendo un 200 file di finestra mobile
invece di un centinaio di file docker e
che inizia a diventare quando pensi
sull’ottimizzazione dei processi questo è un
zona che si potrebbe desiderare di ottimizzare la
processo così nel nostro modello si crea
un’immagine del contenitore che lanci
appare immagini con conoscenza e il
l’applicazione si autoregolerà automaticamente
organizzi e ti mostrerò questo qui in
un secondo
e poi quello che puoi fare è questo quando
quell’organizzazione auto-organizzante
succede che puoi avvisare altri sistemi così
nel caso di forse kubernetes cosa tu
può fare è si può quindi andare e applicare
etichette appropriate basate sul
risultati delle elezioni e poi
kubernetes può indirizzare il traffico sulla base di
etichette in questo modo come un selettore in modo che il
altra cosa fornita dai supervisori
è un’API basata sul resto per fare cose come
puoi anche eseguire query sulla salute e sullo stato
bug il supervisore in questo modo, quindi è possibile
vedere i risultati di un’elezione che
si svolge e poi è anche utile
per utile per gli attori esterni, nonché
quindi se si dispone di un servizio di bilanciamento del carico
allora quel servizio di bilanciamento del carico può essere
creando quell’endpoint per ottenere la salute
ricontrollare dall’applicazione e se
le applicazioni hanno fallito, quindi è possibile
rimuovere quella particolare istanza di
il pool di bilanciamento del carico e quindi proseguire
il suo giorno così da riassumere prima di saltare
nella demo in modo da avere una chiacchierata approcci
contenitori in modo diverso perché siamo
guardando a costruirlo dalla costruzione a
contenitore dalle applicazioni
prospettiva non dal funzionamento
prospettiva del sistema che è il tipo di
metodologia corrente che è prevalente
quando si utilizza un file di finestra mobile è possibile
esportare contenitori in una varietà di
formatta in modo tale da rendere più agevole un pacchetto di CI a mezzos
o solo un normale tarball se vuoi
e poi quando esporti quel container
automaticamente vengono costruite in esso
cose come la scoperta di servizi
gestione della configurazione questa salute
controlla l’ API e il supporto per farlo
diverse topologie di clustering
quindi ottieni molti benefici costruendo
quel contenitore con habitat rispetto al
metodo tradizionale di utilizzo della finestra mobile
file docker o JSON utilizzati da un elemento della configurazione e
è tutto open source quindi se lo sei
alla ricerca di un nuovo progetto open source per
contribuire ci piacerebbe averti è
scritto in ruggine i componenti principali sono
scritto in ruggine ma tutti i piani sono
scritto in script di shell, così abbiamo scelto
shell perché è a
linguaggio accessibile e la maggior parte delle persone no
shell in una certa misura quindi se sei
iniziare con un piano che farò
mostrare qui in un secondo sta andando tutto
per essere shell, ne userai altri
anche le lingue quindi se c’è un
certo interprete che vuoi usare
per gli hook quindi potresti usare Python
potresti usare Ruby o qualsiasi altro
linguaggio interpretato se si desidera come
bene quindi ecco i link e poi lo farò
corri dietro e ti darò un
demo davvero veloce okay, quindi in realtà
ho qualcosa che ho creato in precedenza ma
quello che farò è salire di livello e
rimuoviamo questa applicazione
del tutto e ricominciare da zero così sono
andando a usare Express, sto solo andando
creare un sito di esempio, quindi se vado nel
directory expresso che ho appena creato
puoi vedere che ho tutte le basi
per un’applicazione giusta su ojs
applicazione in modo tutto quello che devo fare ora è
si dispone di pianificare un esso ho intenzione di passarlo
alcune bandiere e ha creato l’ habitat
directory e puoi vedere che è falso
creato le basi che ho bisogno di ottenere
iniziato con l’habitat in modo da poter vedere
c’è un piano punto SH come predefinito amo
configurazione e così via così posso aprire
quel piano punto Sh
e puoi vedere che si riempie molto
di roba per te quindi se stavi tirando
giù dal codice sorgente inseriresti il codice
dove il tuo codice sorgente è fantastico come
bene e poi nel ciclo di vita della build
andrà automaticamente e tirerà giù quello
pacchetto per te
controllare il checksum estrarlo e poi
andare a costruire l’ applicazione così dentro
questo caso non abbiamo bisogno di nulla di tutto questo
perché stiamo facendo uno schema in cui
fondamentalmente il piano dell’habitat sta per
vivere con il mio codice sorgente direttamente a destra
così ho intenzione di cancellare tutto ciò che
non ho bisogno di qui, il che è molto e poi
Sto solo mettendo una riga
Vorrei che avessimo scelto un nome più breve, ok e
lo salveranno ora quando sarai
costruire cose con l’habitat che hai
quello che viene chiamato studio dell’habitat e così via
Quante persone sai bene, lo so
guarda le tue mani ma non farò un sondaggio
ma hai mai avuto la situazione
dove fai qualche sviluppo e poi
lo mandi a qualcun altro e
stai bene, spieghiamo questo
applicazione e poi c’è qualcosa
che hai installato e il tuo sviluppo
ciclo di una libreria o qualcosa di simile
che quando spedisci quell’applicazione è
non sulla macchina di staging o sull’altro
macchine a cui stai tentando di implementare
giusto tutto funziona sulla mia macchina
problema ops ora giusto così quando costruisci
cose con l’ habitat quello che fai sei tu
costruirlo all’interno di uno studio ed è
davvero solo un ambiente molto basilare
che praticamente non ha installato nulla
ha la terra dell’utente di base che tu
bisogno di iniziare e poi se hai bisogno
per installare qualsiasi cosa tu installi roba
tramite pacchetti di habitat così posso fare
il pacchetto installa core JQ statico perché
Avrò bisogno di questo qui tra un secondo
e quello che ha fatto è che va e tira
giù dal deposito dell’habitat e
lo installa per me e poi ora
il pacchetto è all’interno del pacchetto hab core e
puoi vedere il JQ statico proprio lì
che ho appena scaricato ma quello che voglio
fare è che lo costruirò
domanda quindi perché era nella mia domanda
directory del codice sorgente e quando sono entrato
lo studio in modo che sarà montato
fino a tagliare la fonte per me così tutto ciò di cui ho bisogno
fare è eseguire build e così puoi vedere
qui quello che è successo è che è
convalidare il mio piano e poi lo è anche
capito che sto usando un’impalcatura così
inizia a scaricare tutto il
dipendenze
per il mio ponteggio e tu noti che io
non ha esplicitamente chiamato un certo
versione o qualcosa del genere così è
di default per l’ultima versione ora
quello che potrei fare è che potrei essere davvero
molto specifico e potrei inserire una versione
numero di lì se volevo mettere su
quella
se avessi bisogno di una versione molto specifica di
l’impalcatura o se avessi avuto bisogno di molto
versione specifica del mio runtime in lingua
o del nodo I potrebbe anche chiamarlo come
bene e poi si nota che sta andando
e installando più cose e lo faremo
vedi anche a un certo punto dove è
in realtà sta per andare a correre il npm
installare ed è scaricato tutto il
dipendenze che li ho venduti
per me e poi alla fine va e
crea questo file Hart così se guardo dentro
risultati puoi vedere che è appena andato
e ho creato quello che ora potrei fare
in realtà avviare le applicazioni così io
non è necessario esportarlo come contenitore
prima di andare effettivamente a dirigere il
applicazione ora potrei se volessi
ma per ora non lo farò e ora se
Corro slog per il registro supervisore che puoi
vedi che in realtà è andato e basta
avviato l’applicazione in modo che il
l’applicazione è in esecuzione in modo predefinito
quello che succede è che il supervisore funziona
sullo sfondo all’interno di questo studio
e poi in questo modo si può ottenere un molto
loop dev deviato in modo da poter far apparire il tuo
l’applicazione all’interno di questo studio ottiene
feedback se funzionerà
correttamente o funziona come te
aspettati e poi puoi semplicemente strapparlo
giù più tardi ed esportarlo nel formato
che vuoi esportato e che sia
un contenitore o spedirlo a una VM o
qualunque cosa dovrei essere in grado di fare
fare un W ottenere
e morde un fallo è in esecuzione su 8.000 e
abbastanza sicuro quindi le applicazioni e
correre e lavorare come mi aspetto così
facciamolo
quindi cambiamo effettivamente il
configurazione vediamo se posso
ricorda
okay, sembra che abbia funzionato, quindi facciamolo
mi rinculo di nuovo
e puoi vedere abbastanza sicuro che l’ hai visto
ricevere richieste che ho fatto e poi tu
può vedere che la configurazione
ricompilato giusto così cosa è successo lì
è che mi sono collegato al supervisore
usando quella configurazione HAP applica il comando e
Ho iniettato una nuova configurazione e poi
l’applicazione o il supervisore
rilevato che ha riavviato l’applicazione
e ora se vado a dare un’occhiata alla porta 8000
cosa dovrei ottenere nulla di giusto così se io
vai al porto 3000 puoi vedere ora il
configurazione dinamica è successo così se tu
puoi pensare a questo in termini di se sei
contenitori in esecuzione se stai eseguendo a
un sacco di diverse applicazioni
istanze e hai bisogno di molto rapidamente
vai e cambia un’impostazione come quella di te
può farlo molto facilmente iniettandolo
attraverso il supervisore quindi un’ultima cosa
che ti mostrerò prima di smettere
urtare contro il tempo qui, quindi ho bisogno
fare una cosa
va bene così l’altra parte che voglio
mostra che sei il vero supervisore stesso
e solo tipo di mostrarti alcuni dei
informazioni si può andare così posso colpire questo
e puoi vedere che è un mucchio di JSON così
96 31 è l’endpoint API per coreano
e ottenere informazioni 96 38 è
con chi interagiresti se lo sei
lavorerò con l’ anello dei pettegolezzi
quindi se ho appena scritto questo tramite JQ, lo farò
prendi un bel formato stampato e così posso
vedere le informazioni su dove il
le applicazioni in esecuzione puoi vedere cosa
versione dell’applicazione expresso e
anche il tempo di costruzione posso anche vedere cosa
versione dell’habitage in cui sto correndo
caso l’ indirizzo IP l’altra cosa che
si può vedere è la configurazione così
quindi c’è quella configurazione se volessi
ho guardato questo prima che mi iniettassi
quella nuova configurazione avrebbe questo
sono stati 8.000 puoi anche vedere la topologia
che stai correndo dentro e così via
può colpire anche altri endpoint, quindi se io
fare servizi expresso / default / config
Ottengo solo la configurazione
stesso così questo è un modo molto semplice per
per andare e ottenere informazioni su
applicazione e come funziona l’applicazione
e infine se volessi ora prendere
questa applicazione ed esportarla come a
contenitore docker tutto quello che devo fare è
esportalo in questo modo
e poi andrà e installerà
tutto ciò di cui ho bisogno è saggio per la dipendenza
calcolerà l’ albero delle dipendenze come
Ho parlato e poi posso fare a
la finestra mobile viene eseguita su quel contenitore risultante
immagine che genererà per me
così con quello a quali domande posso rispondere
per voi nei circa cinque minuti che abbiamo
ho lasciato
tu

Please follow and like us: