Differences

This shows you the differences between two versions of the page.

Link to this comparison view

moby:backend:08 [2020/05/31 20:11]
alexandru.hogea removed
moby:backend:08 [2020/08/16 15:17] (current)
alexandru.hogea [Exercitii]
Line 1: Line 1:
-===== Sesiuna 8 - Deploy in cluster de Docker Swarm =====+===== Sesiuna 8 - Introducere ​Docker Swarm =====
  
-Vom crea un cluster de Docker Swarm din mai multe masini virtuale si vom deploya serviciile noastre acoloVom folosi doua medii, ​de test si de productie.+Notiuni invatate: 
 + 
 +  * Initializare nod Swarm 
 +  * Adaugare nod in Swarm 
 +  * Creare de servicii Swarm 
 +  * Deployment de stiva de servicii 
 + 
 +==== Resurse Teoretice ====  
 + 
 +Puteti accesa slide-urile teoretice [https://​drive.google.com/​drive/​folders/​1p5daLH2CFmlNJ1-gd7-kLMzdnFbiyTCZ?​usp=sharing|aici]] 
 + 
 +==== Resurse Practice ==== 
 + 
 +=== Docker Swarm === 
 + 
 +Docker Swarm este nativ Docker (spre deosebire de docker-compose,​ care este un tool separat). 
 + 
 +Pentru a initializa ​un cluster de Swarm, comanda 
 +<code bash> 
 +docker swarm init 
 +</​code>​ 
 +trebuie data pe un nod de inceput 
 + 
 +<note tip>​Nodul poate fi calculatorul vostru, un server extern, o masina virtuala, orice</​note>​ 
 + 
 +<note tip>​Comanda de init va genera 2 comenzi pe care va trebui sa le folositi sa introduceti alte noduri in cluster. Una este pt worker, alta este pt manager</​note>​ 
 + 
 +Pentru a adauga alte masini la cluster, este nevoie sa folositi comenzile generate atunci cand ati dat **init**. Atentie, ele sunt diferite in functie de worker sau manager 
 + 
 +Pentru a vedea cate noduri aveti in cluster, puteti rula comanda  
 +<code bash> 
 +docker node ls 
 +</​code>​ 
 + 
 +de pe un nod manager 
 +=== Servicii Docker === 
 + 
 +Un serviciu Docker lanseaza taskuri ce rezulta in containere. Sintaxa pentru servicii docker este foarte asemanatoare cu sintaxa pentru containere de docker. Ca si intotdeauna,​ va recomandam sa consultati [[https://​docs.docker.com/​engine/​reference/​commandline/​service/​|Documentatia Oficiala]] 
 + 
 +<note tip>​Pentru a putea interactiona cu servicii, **Docker Swarm** trebuie initializat!</​note>​ 
 +<code bash> 
 +docker service create --name NUME_SERVICIU IMAGINE_DOCKER -> creaza un serviciu pornind de la o imagine 
 +docker service ls -> afiseaza toate serviciile ​din sistem 
 +docker service inspect NUME_SERVICIU -> afiseaza informatii despre un serviciu 
 +docker service logs –f NUME_SERVICIU -> afiseaza logurile unui serviciu 
 +docker service ps NUME_SERVICIU (arata taskurile si starea lor, foarte buna pt debug) -> afiseaza taskurile si statusurile lor pentru un serviciu 
 +docker service update --replicas 3 NUME_SERVICIU -> actualizeaza serviciul, replicand containerele de 3 ori 
 +docker service rm NUME_SERVICIU -> sterge un serviciu 
 + 
 +</​code>​ 
 + 
 +=== Stive de Servicii Docker === 
 + 
 +O stiva de servicii reprezinta ​mai multe servicii grupate in acelasi namespace. Comportamentul este similar cu Docker Compose, doar ca politica de denumire este alta 
 +<note tip>​Orice creat intr-o stiva (serviciu, volum, retea, secret) va fi prefixat de **NUME-STIVA_** </​note>​ 
 +<note tip>​Retelele dintr-o stiva de servicii sunt, by default, **overlay**</​note>​ 
 +<note important>​Stivele de servicii **nu accepta** fisiere .env la fel, spre deosebire de Docker Compose. </​note>​ 
 + 
 +Referirea serviciilor in cadrul unei stive se face, la fel ca si in cazul serviciilor simple sau al containerelor,​ dupa **numele serviciului**. Totusi, va recomandam sa folositi mereu si **prefixul oferit de stiva**. 
 + 
 +O stiva se genereaza pe baza unui fisier de tip **compose** ce are format **.yml**. In afara optiunilor care sunt folosite de Docker Compose, se mai pot introduce detalii de configurare ce tin de [[https://​docs.docker.com/​compose/​compose-file/#​deploy|deployment]]. 
 + 
 +Pentru a lansa o stiva de servicii, se executa comanda  
 +<code bash> 
 +docker stack deploy -c NUME_FISIER.yml NUME_STIVA 
 +</​code>​ 
 + 
 +<note important>​Daca folositi un registru diferit de Dockerhub (precum registry.gitlab.com) este nevoie sa fiti **autentificati** si sa puneti si optiunea **--with-registry-auth** atunci cand lansati o stiva de servicii</​note>​ 
 + 
 +<note tip>​Pentru a actualiza configurarea unei stive, se da aceeasi comanda de deploy ca si in cazul lansarii initiale</​note>​ 
 + 
 +=== Portainer === 
 + 
 +Portainer este un utilitar foarte bun de manangement al unui cluster de Docker Swarm. Se poate porni folosind [[https://​portainer.readthedocs.io/​en/​stable/​deployment.html#​inside-a-swarm-cluster|scriptul oficial]] 
 + 
 + 
 +==== Exercitii ==== 
 + 
 +  - Creati-va fisierul **.yml** pentru stiva de servicii si puneti-l in folderul Staging (sau cum se numeste in cazul vostru folderul aferent mediului de testing) din cadrul Monorepo/​Deployment 
 +  - Creati-va 2 masini virtuale ​pe Linode ​si introduceti cod-ul oferit in cadrul cursuluiVa recomandam sa folositi un card Revolut 
 +  - Instalati-va docker pe fiecare masina folosind [[https://​github.com/​docker/​docker-install|scriptul ​de instalare]] 
 +  - Initiati clusterul de Swarm pe o masina 
 +  - Adaugati cealalta masina ca si **worker** in cluster 
 +  - Pe masina **manager** trageti monorepo-ul si lansati in executie stiva de serviciiDenumiti stiva de servicii mobyworkshop-testing 
 +  - Testati cu Postman 
 +  - Puneti Portainer pe cluster
moby/backend/08.1590945062.txt.gz · Last modified: 2020/05/31 20:11 by alexandru.hogea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0