Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)

A yoo bẹrẹ bulọọgi wa pẹlu awọn atẹjade ti o da lori awọn ọrọ tuntun ti oludari imọ-ẹrọ wa distol (Dmitry Stolyarov). Gbogbo wọn waye ni ọdun 2016 ni ọpọlọpọ awọn iṣẹlẹ alamọdaju ati pe a ṣe igbẹhin si koko-ọrọ ti DevOps ati Docker. Fidio kan lati ipade Docker Moscow ni ọfiisi Badoo, a ti ni tẹlẹ atejade Online. Awọn tuntun yoo wa pẹlu awọn nkan ti n ṣalaye pataki ti awọn ijabọ naa. Nitorina…

May 31 ni apejọ RootConf 2016, Ti o waye gẹgẹbi apakan ti àjọyọ "Awọn Imọ-ẹrọ Ayelujara ti Russia" (RIT ++ 2016), apakan "Imudara Ilọsiwaju ati Imudara" ṣii pẹlu iroyin "Awọn Ilana ti o dara julọ ti Ifijiṣẹ Ilọsiwaju pẹlu Docker". O ṣe akopọ ati ṣeto awọn iṣe ti o dara julọ fun kikọ ilana Ifijiṣẹ Ilọsiwaju (CD) ni lilo Docker ati awọn ọja Orisun Orisun miiran. A ṣiṣẹ pẹlu awọn solusan wọnyi ni iṣelọpọ, eyiti o jẹ ki a gbẹkẹle iriri ti o wulo.

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)

Ti o ba ni aye lati lo wakati kan fidio iroyin, a ṣeduro wiwo rẹ ni kikun. Bibẹẹkọ, ni isalẹ ni akopọ akọkọ ni fọọmu ọrọ.

Ifijiṣẹ Ilọsiwaju pẹlu Docker

Labẹ Ilọsiwaju Ilọsiwaju a loye pq ti awọn iṣẹlẹ bi abajade eyiti koodu ohun elo lati ibi ipamọ Git kọkọ wa si iṣelọpọ, ati lẹhinna pari ni ile-ipamọ. O dabi eleyi: Git → Kọ → Idanwo → Tu silẹ → Ṣiṣẹ.

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)
Pupọ julọ ijabọ naa jẹ iyasọtọ si ipele kikọ (apejọ ohun elo), ati itusilẹ awọn akọle ati ṣiṣiṣẹ ni fọwọkan ni ṣoki. A yoo sọrọ nipa awọn iṣoro ati awọn ilana ti o gba ọ laaye lati yanju wọn, ati awọn imuse pato ti awọn ilana wọnyi le yatọ.

Kini idi ti Docker nilo nibi rara? Kii ṣe lainidii pe a pinnu lati sọrọ nipa awọn iṣe Ifijiṣẹ Ilọsiwaju ni agbegbe ti irinṣẹ Orisun Ṣiṣii yii. Botilẹjẹpe gbogbo ijabọ naa jẹ iyasọtọ si lilo rẹ, ọpọlọpọ awọn idi ni a fihan nigbati o ba gbero ilana akọkọ ti yiyi koodu ohun elo.

Apẹrẹ yiyi akọkọ

Nitorinaa, nigba ti a ba jade awọn ẹya tuntun ti ohun elo naa, dajudaju a dojukọ wa downtime isoro, ti ipilẹṣẹ lakoko iyipada ti olupin iṣelọpọ. Ijabọ lati ẹya atijọ ti ohun elo si tuntun ko le yipada lẹsẹkẹsẹ: akọkọ a gbọdọ rii daju pe ẹya tuntun kii ṣe igbasilẹ ni aṣeyọri nikan, ṣugbọn tun “gbona” (ie, ti ṣetan lati sin awọn ibeere).

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)
Nitorinaa, fun igba diẹ awọn ẹya mejeeji ti ohun elo (ti atijọ ati tuntun) yoo ṣiṣẹ ni nigbakannaa. Eyi ti laifọwọyi nyorisi pín awọn oluşewadi rogbodiyan: nẹtiwọki, eto faili, IPC, ati be be lo. Pẹlu Docker, iṣoro yii ni irọrun ni irọrun nipasẹ ṣiṣiṣẹ awọn ẹya oriṣiriṣi ti ohun elo ni awọn apoti lọtọ, eyiti o jẹ iṣeduro ipinya orisun laarin agbalejo kanna (olupin / ẹrọ foju). Nitoribẹẹ, o le gba nipasẹ diẹ ninu awọn ẹtan laisi idabobo rara, ṣugbọn ti o ba jẹ ohun elo ti a ti ṣetan ati irọrun, lẹhinna idi idakeji wa - kii ṣe lati gbagbe rẹ.

Apoti n pese ọpọlọpọ awọn anfani miiran nigbati o ba ran lọ. Eyikeyi elo da lori pato ti ikede (tabi ibiti ẹya) onitumọ, wiwa ti awọn modulu / awọn amugbooro, ati bẹbẹ lọ, ati awọn ẹya wọn. Ati pe eyi kan kii ṣe si agbegbe ipaniyan lẹsẹkẹsẹ, ṣugbọn tun si gbogbo agbegbe, pẹlu software eto ati ẹya rẹ (to pinpin Linux ti a lo). Nitori otitọ pe awọn apoti ni kii ṣe koodu ohun elo nikan, ṣugbọn tun eto ti a ti fi sii tẹlẹ ati sọfitiwia ohun elo ti awọn ẹya ti o nilo, o le gbagbe nipa awọn iṣoro pẹlu awọn igbẹkẹle.

Jẹ ki a ṣe akopọ akọkọ rollout Àpẹẹrẹ awọn ẹya tuntun ni akiyesi awọn nkan wọnyi:

  1. Ni akọkọ, ẹya atijọ ti ohun elo nṣiṣẹ ni apoti akọkọ.
  2. Ẹya tuntun lẹhinna ti yiyi jade ati “gbona” ninu apoti keji. O jẹ akiyesi pe ẹya tuntun yii funrararẹ le gbe kii ṣe koodu ohun elo imudojuiwọn nikan, ṣugbọn tun eyikeyi awọn igbẹkẹle rẹ, ati awọn paati eto (fun apẹẹrẹ, ẹya tuntun ti OpenSSL tabi gbogbo pinpin).
  3. Nigbati ẹya tuntun ba ti ṣetan ni kikun lati sin awọn ibeere, awọn iyipada ijabọ lati eiyan akọkọ si keji.
  4. Atijọ ti ikede le bayi ti wa ni duro.

Ọna yii ti gbigbe awọn ẹya oriṣiriṣi ohun elo sinu awọn apoti lọtọ pese irọrun miiran - awọn ọna rollback si ẹya atijọ (lẹhinna gbogbo, o to lati yipada ijabọ si apoti ti o fẹ).

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)
Iṣeduro akọkọ ti o kẹhin dabi nkan ti paapaa Captain ko le rii aṣiṣe pẹlu: "[nigbati o ba ṣeto Ifijiṣẹ Ilọsiwaju pẹlu Docker] Lo Docker [ati oye ohun ti o fun]" Ranti, eyi kii ṣe ọta ibọn fadaka ti yoo yanju gbogbo iṣoro, ṣugbọn ọpa ti o pese ipilẹ iyalẹnu kan.

Atunse

Nipa “atunṣe” a tumọ si akojọpọ awọn iṣoro ti o ṣakopọ ti o pade nigbati awọn ohun elo ṣiṣẹ. A n sọrọ nipa iru awọn ọran:

  • Awọn iwe afọwọkọ ti a ṣayẹwo nipasẹ ẹka didara fun tito gbọdọ jẹ atunṣe ni deede ni iṣelọpọ.
  • Awọn ohun elo ti wa ni atẹjade lori awọn olupin ti o le gba awọn idii lati oriṣiriṣi awọn digi ibi ipamọ (ni akoko ti wọn ti ni imudojuiwọn, ati pẹlu wọn awọn ẹya ti awọn ohun elo ti a fi sii).
  • "Ohun gbogbo ṣiṣẹ fun mi ni agbegbe!" (...ati awọn olupilẹṣẹ ko gba laaye sinu iṣelọpọ.)
  • O nilo lati ṣayẹwo nkan kan ninu ẹya atijọ (ti o fipamọ).
  • ...

Kokoro gbogbogbo wọn ṣan silẹ si otitọ pe ibamu ni kikun ti awọn agbegbe ti a lo (bakannaa isansa ti ifosiwewe eniyan) jẹ pataki. Bawo ni a ṣe le ṣe iṣeduro atunṣeto? Ṣe awọn aworan Docker da lori koodu lati Git, ati lẹhinna lo wọn fun eyikeyi iṣẹ-ṣiṣe: lori awọn aaye idanwo, ni iṣelọpọ, lori awọn ẹrọ agbegbe ti awọn pirogirama ... Ni akoko kanna, o ṣe pataki lati dinku awọn iṣẹ ti o ṣe. после Nto aworan naa: ti o rọrun julọ, o kere si awọn aṣiṣe.

Awọn amayederun jẹ koodu

Ti awọn ibeere amayederun (wiwa sọfitiwia olupin, ẹya rẹ, ati bẹbẹ lọ) ko ṣe agbekalẹ ati “ṣeto,” lẹhinna yiyi ti imudojuiwọn ohun elo eyikeyi le ja si awọn abajade ajalu. Fun apẹẹrẹ, ni iṣeto ti o ti yipada tẹlẹ si PHP 7.0 ati tun kọ koodu naa ni ibamu - lẹhinna irisi rẹ ni iṣelọpọ pẹlu diẹ ninu PHP atijọ (5.5) yoo dajudaju iyalẹnu ẹnikan. O le ma gbagbe nipa iyipada nla kan ninu ẹya onitumọ, ṣugbọn “eṣu wa ninu awọn alaye”: iyalẹnu le wa ni imudojuiwọn kekere ti eyikeyi igbẹkẹle.

Ọna kan lati yanju iṣoro yii ni a mọ bi IaC (Amayederun bi koodu, “awọn amayederun bi koodu”) ati pẹlu titoju awọn ibeere amayederun pẹlu koodu ohun elo. Lilo rẹ, awọn olupilẹṣẹ ati awọn alamọja DevOps le ṣiṣẹ pẹlu ibi ipamọ ohun elo Git kanna, ṣugbọn lori awọn ẹya oriṣiriṣi rẹ. Lati koodu yii, aworan Docker kan ti ṣẹda ni Git, ninu eyiti ohun elo ti gbe lọ ni akiyesi gbogbo awọn pato ti awọn amayederun. Ni irọrun, awọn iwe afọwọkọ (awọn ofin) fun apejọ awọn aworan yẹ ki o wa ni ibi ipamọ kanna pẹlu koodu orisun ati dapọ papọ.

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)

Ninu ọran ti faaji ohun elo pupọ-Layer - fun apẹẹrẹ, nginx wa, eyiti o duro niwaju ohun elo kan ti nṣiṣẹ tẹlẹ ninu apo eiyan Docker - Awọn aworan Docker gbọdọ ṣẹda lati koodu ni Git fun Layer kọọkan. Lẹhinna aworan akọkọ yoo ni ohun elo kan pẹlu onitumọ ati awọn igbẹkẹle “sunmọ” miiran, ati pe aworan keji yoo ni nginx oke.

Awọn aworan Docker, ibaraẹnisọrọ pẹlu Git

A pin gbogbo awọn aworan Docker ti a gba lati Git si awọn ẹka meji: igba diẹ ati itusilẹ. Awọn aworan igba diẹ ti a samisi nipasẹ orukọ ẹka ni Git, le ṣe atunkọ nipasẹ ifarabalẹ atẹle ati yiyi jade fun awotẹlẹ nikan (kii ṣe fun iṣelọpọ). Eyi ni iyatọ bọtini wọn lati awọn idasilẹ: iwọ ko mọ iru adehun kan pato ninu wọn.

O jẹ oye lati gba sinu awọn aworan igba diẹ: ẹka titunto si (o le yi lọ laifọwọyi si aaye ti o yatọ lati rii nigbagbogbo ẹya tuntun ti oluwa), awọn ẹka pẹlu awọn idasilẹ, awọn ẹka ti awọn imotuntun pato.

Awọn adaṣe Ifijiṣẹ Ilọsiwaju pẹlu Docker (atunyẹwo ati fidio)
Lẹhin awotẹlẹ ti awọn aworan igba diẹ wa si iwulo fun itumọ sinu iṣelọpọ, awọn olupilẹṣẹ fi aami kan sii. Ti gba ni aladaaṣe nipasẹ tag tu aworan (aami rẹ ṣe deede si tag lati Git) ati pe o ti yiyi jade lati ṣeto. Ti o ba jẹ idaniloju ni aṣeyọri nipasẹ ẹka didara, o lọ si iṣelọpọ.

dapp

Ohun gbogbo ti a ṣalaye (yiyi, apejọ aworan, itọju atẹle) le ṣe imuse ni ominira nipa lilo awọn iwe afọwọkọ Bash ati awọn irinṣẹ “imudara” miiran. Ṣugbọn ti o ba ṣe eyi, lẹhinna ni aaye kan imuse yoo yorisi idiju nla ati iṣakoso ti ko dara. Ni oye eyi, a wa lati ṣẹda IwUlO Ṣiṣẹ Ṣiṣẹ Amọja tiwa fun kikọ CI/CD - dapp.

Koodu orisun rẹ ni kikọ ni Ruby, orisun ṣiṣi ati ti a tẹjade lori GitHub. Laanu, iwe-ipamọ lọwọlọwọ jẹ aaye alailagbara ti ọpa, ṣugbọn a n ṣiṣẹ lori rẹ. Ati pe a yoo kọ ati sọrọ nipa dapp diẹ sii ju ẹẹkan lọ, nitori ... A ko le duro tọkàntọkàn lati pin awọn agbara rẹ pẹlu gbogbo agbegbe ti o nifẹ si, ṣugbọn lakoko yii, firanṣẹ awọn ọran rẹ ki o fa awọn ibeere ati/tabi tẹle idagbasoke iṣẹ akanṣe lori GitHub.

Ṣe imudojuiwọn Oṣu Kẹjọ Ọjọ 13, Ọdun 2019: Lọwọlọwọ ise agbese dapp lorukọmii si werf, koodu rẹ ti jẹ atunko patapata ni Go, ati pe awọn iwe aṣẹ rẹ ti ni ilọsiwaju ni pataki.

Kubernetes

Ohun elo Orisun orisun ṣiṣi ti o ṣetan ti o ti gba idanimọ pataki ni agbegbe alamọdaju jẹ Kubernetes, iṣupọ iṣakoso Docker. Koko-ọrọ ti lilo rẹ ni iṣẹ ti awọn iṣẹ akanṣe ti a ṣe lori Docker kọja ipari ti ijabọ naa, nitorinaa igbejade naa ni opin si akopọ ti diẹ ninu awọn ẹya ti o nifẹ.

Fun yiyọ kuro, Kubernetes nfunni:

  • Ṣiṣayẹwo imurasilẹ - ṣayẹwo imurasilẹ ti ẹya tuntun ti ohun elo (lati yipada ijabọ si rẹ);
  • imudojuiwọn yiyi - imudojuiwọn aworan atẹle ni iṣupọ ti awọn apoti (tiipa, imudojuiwọn, igbaradi fun ifilọlẹ, iyipada ijabọ);
  • imudojuiwọn amuṣiṣẹpọ - imudojuiwọn aworan kan ninu iṣupọ pẹlu ọna ti o yatọ: akọkọ lori idaji awọn apoti, lẹhinna lori iyokù;
  • awọn idasilẹ canary - ifilọlẹ aworan tuntun lori nọmba awọn apoti to lopin (kekere) lati ṣe atẹle awọn asemase.

Niwọn igba ti Ifijiṣẹ Ilọsiwaju kii ṣe itusilẹ ti ẹya tuntun nikan, Kubernetes ni awọn agbara pupọ fun itọju amayederun atẹle: ibojuwo ti a ṣe sinu ati gedu fun gbogbo awọn apoti, wiwọn laifọwọyi, bbl Gbogbo eyi ti n ṣiṣẹ tẹlẹ ati pe o kan nduro fun deede to dara. imuse ninu rẹ ilana.

Ik awọn iṣeduro

  1. Lo Docker.
  2. Ṣẹda awọn aworan Docker ti awọn ohun elo fun gbogbo awọn iwulo rẹ.
  3. Tẹle ilana naa “Amayederun jẹ koodu.”
  4. Ọna asopọ Git si Docker.
  5. Ṣe atunṣe aṣẹ ti yiyi.
  6. Lo pẹpẹ ti o ti ṣetan (Kubernetes tabi omiiran).

Awọn fidio ati awọn kikọja

Fidio lati iṣẹ (nipa wakati kan) atejade lori YouTube (Ijabọ naa funrararẹ bẹrẹ lati iṣẹju 5th - tẹle ọna asopọ lati mu ṣiṣẹ lati akoko yii).

Igbejade ijabọ naa:

PS

Awọn ijabọ miiran lori koko lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun