Tichatanga bhurogi redu nezvinyorwa zvichibva pakutaura kwazvino kwemutungamiriri wedu wehunyanzvi
May 31 pamusangano
Kana iwe uine mukana wekupedza awa
Kuenderera Kuendesa neDocker
Under Kuramba Kuendesa isu tinonzwisisa ketani yezviitiko semhedzisiro iyo kodhi yekushandisa kubva kuGit repository inotanga kuuya pakugadzirwa, uye yozopedzisira yave mudura. Zvinoita seizvi: Git β Vaka β Muedzo β Sunungura β Shanda.
Mazhinji emushumo anopirwa padanho rekuvaka (gungano rekunyorera), uye misoro inoburitswa uye kushanda inobatwa pairi muchidimbu. Isu tichataura nezve matambudziko uye mapatani anobvumidza iwe kuti uagadzirise, uye chaiwo maitirwo emapateni aya anogona kunge akasiyana.
Nei Docker ichidiwa pano zvachose? Hazvisi zvenhando izvo isu takafunga kutaura nezve Kuenderera Kuendesa maitiro mumamiriro eiyi Open Source chishandiso. Kunyangwe iyo rondedzero yese yakazvipira kushandiswa kwayo, zvikonzero zvakawanda zvinoburitswa kana uchifunga nezveiyo huru nzira yekuburitsa kodhi yekushandisa.
Main rollout pattern
Saka, kana isu tichiburitsa shanduro nyowani dzekushandisa, isu takatarisana nazvo dambudziko rekupedzisira, inogadzirwa panguva yekushandura server yekugadzira. Traffic kubva kushanduro yekare yechishandiso kuenda kune itsva haigone kushandura ipapo: chekutanga isu tinofanirwa kuve nechokwadi chekuti vhezheni iyi haina kungobudirira kudhawunirodha, asiwo "inodziya" (kureva, yakagadzirira zvachose kushumira zvikumbiro).
Saka, kwenguva yakati shanduro mbiri dzechishandiso (dzekare uye itsva) dzichashanda panguva imwe chete. Izvo zvinotungamira kune kugovaniswa kwezviwanikwa: network, faira system, IPC, nezvimwe. NeDocker, dambudziko iri rinogadziriswa zviri nyore nekumhanyisa shanduro dzakasiyana dzechishandiso mumidziyo yakaparadzana, iyo yekuzviparadzanisa yezviwanikwa inovimbiswa mukati meiyo imwe chete host (server/virtual muchina). Ehe, iwe unogona kupfuura nemamwe manomano pasina kusungirira zvachose, asi kana paine chakagadzirirwa-chakagadzirwa uye chiri nyore chishandiso, saka pane chikonzero chakapesana - kusaregeredza.
Containerization inopa mamwe akawanda mabhenefiti kana yaiswa. Chero application inotsamira pa chaiyo shanduro (kana shanduro renji) muturikiri, kuwanikwa kwemamodules/extensions, nezvimwewo, pamwe neshanduro dzavo. Uye izvi zvinoshanda kwete chete kune iyo inokurumidza kuitiswa nharaunda, asiwo kune yese nharaunda, kusanganisira system software uye vhezheni yayo (kusvika kuLinux kugoverwa kunoshandiswa). Nekuda kwekuti midziyo ine kwete chete application kodhi, asiwo pre-yakaiswa system uye application software yeinodiwa shanduro, unogona kukanganwa nezve matambudziko nekutsamira.
Ngatipfupikisai main rollout pattern shanduro itsva tichifunga zvinotevera:
- Pakutanga, iyo yekare vhezheni yekushandisa inomhanya mumudziyo wekutanga.
- Iyo vhezheni itsva inobva yakungurutswa uye "inodziya" mumudziyo wechipiri. Zvinokosha kuziva kuti iyi vhezheni nyowani pachayo inogona kutakura kwete chete yakagadziridzwa kodhi yekunyorera, asiwo chero yainotsamira, pamwe nezvikamu zvehurongwa (semuenzaniso, vhezheni itsva yeOpenSSL kana kugovera kwese).
- Kana iyo vhezheni itsva yagadzirira zvakakwana kushandira zvikumbiro, traffic inochinja kubva kune yekutanga mudziyo kuenda kune yechipiri.
- Iyo yekare vhezheni ikozvino inogona kumiswa.
Iyi nzira yekuisa akasiyana mavhezheni ekushandisa mumidziyo yakasiyana inopa imwe nyore - quick rollback kune yekare vhezheni (mushure mezvose, zvakakwana kushandura traffic kune yaunoda mudziyo).
Kurudziro yekutanga inonzwika sechimwe chinhu icho kunyange Mutungamiriri haana kuwana mhosva: "[pakuronga Kuenderera Kuendesa neDocker] Shandisa Docker [uye nzwisisa zvazvinopa]" Rangarira, iyi haisi bara resirivha rinogadzirisa dambudziko rega rega, asi chishandiso chinopa hwaro hunoshamisa.
Reproducibility
Ne "reproducibility" tinoreva seti yakajairwa yezvinetso zvinosangana kana uchishanda maapplication. Tiri kutaura nezvenyaya dzakadai:
- Zvinyorwa zvakaongororwa nedhipatimendi remhando yezvirongwa zvinofanirwa kudhindwa nenzira kwayo mukugadzirwa.
- Zvishandiso zvinoburitswa pamaseva anogona kugamuchira mapakeji kubva kune akasiyana repository magirazi (nekufamba kwenguva anogadziridzwa, uye pamwe nawo mavhezheni eakaiswa maapplication).
- "Zvese zvinondiitira ini munharaunda!" (... uye vanogadzira havabvumidzwe mukugadzira.)
- Iwe unofanirwa kutarisa chimwe chinhu mune yekare (yakachengetwa) vhezheni.
- ...
Hunhu hwavo hwese hunodzika kusvika pakuti kutevedzera kuzere kwenzvimbo dzinoshandiswa (pamwe nekusavapo kwechinhu chemunhu) kwakakosha. Tinogona sei kuvimbisa kuberekazve? Gadzira Docker mifananidzo zvichibva pane kodhi kubva kuGit, uye wozozvishandisa kune chero basa: panzvimbo dzekuyedza, mukugadzira, pamichina yemuno yevagadziri ... Panguva imwecheteyo, zvakakosha kudzikisa zviito zvinoitwa. ΠΏΠΎΡΠ»Π΅ kuunganidza mufananidzo: zviri nyore, zvishoma pane zvikanganiso.
Infrastructure ikodhi
Kana izvo zvinodiwa zvezvivakwa (kuwanikwa kweserver software, vhezheni yayo, nezvimwewo) zvisina kugadzirwa uye "kurongwa," saka kuburitswa kwechero application update kunogona kukonzera njodzi. Semuyenzaniso, mukugadzira watochinjira kuPHP 7.0 uye wonyora kodhi zvinoenderana - ipapo kutaridzika kwayo mukugadzirwa neimwe yekare PHP (5.5) ichashamisa mumwe munhu. Iwe haugone kukanganwa nezve shanduko huru mushanduro yemuturikiri, asi "dhiyabhorosi ari mune zvakadzama": kushamisika kunogona kunge kuri mukugadziridzwa kudiki kwechero kutsamira.
Nzira yekugadzirisa dambudziko iri inozivikanwa se IaC (Infrastructure seCode, "infrastructure as code") uye zvinosanganisira kuchengetedza zvivakwa zvinodiwa pamwe nekodhi yekushandisa. Kuishandisa, vanogadzira uye nyanzvi dzeDevOps vanogona kushanda neiyo Git application repository, asi pazvikamu zvakasiyana zvayo. Kubva pane iyi kodhi, mufananidzo weDocker unogadzirwa muGit, umo mashandisirwo anoiswa achifunga nezve zvese zvinongedzo zvezvivakwa. Zvichitaurwa zviri nyore, zvinyorwa (mitemo) yekuunganidza mifananidzo inofanira kunge iri mune imwechete repository ine kodhi kodhi uye yakabatanidzwa pamwechete.
Panyaya yeakawanda-layer application architecture - semuenzaniso, kune nginx, iyo inomira pamberi pechishandiso chiri kushanda mukati meDocker mudziyo - Docker mifananidzo inofanirwa kugadzirwa kubva kukodhi muGit kune yega yega. Ipapo mufananidzo wekutanga uchange uine chikumbiro chine muturikiri uye zvimwe βpedyoβ zvinotsamira, uye mufananidzo wechipiri uchange uine wekumusoro nginx.
Docker mifananidzo, kutaurirana neGit
Isu tinopatsanura ese maDocker mifananidzo yakaunganidzwa kubva kuGit kuita mapoka maviri: yenguva pfupi uye kuburitswa. Mifananidzo yenguva pfupi yakamisikidzwa nezita rebazi muGit, inogona kudhindwa neanotevera kuzvipira uye inotenderedzwa kunze kwekutarisa chete (kwete yekugadzira). Uyu ndiwo mutsauko wavo wakakosha kubva kune ekuburitsa: hauzive kuti ndeipi chaiyo kuzvipira iri mavari.
Zvine musoro kuunganidza mumifananidzo yenguva pfupi: iyo tenzi bazi (iwe unogona kuitenderedza otomatiki kune yakaparadzana saiti kuti ugare uchiona iyo yazvino vhezheni yetenzi), matavi ane kuburitswa, matavi ehunyanzvi hutsva.
Mushure mekutariswa kwemifananidzo yenguva pfupi yasvika pakudikanwa kwekushandurwa mukugadzirwa, vagadziri vanoisa imwe tag. Zvakaunganidzwa ne tag kuburitsa mufananidzo (tag yayo inoenderana neiyo tag kubva kuGit) uye inotenderedzwa kunze kune staging. Kana iyo yakabudirira kusimbiswa nedhipatimendi remhando, inoenda kukugadzira.
dapp
Zvose zvinotsanangurwa (kubudiswa, kuungana kwemifananidzo, kugadzirisa kunotevera) kunogona kushandiswa zvakasununguka uchishandisa zvinyorwa zveBash uye mamwe maturusi "akavandudzwa". Asi kana iwe ukaita izvi, zvino pane imwe nguva kushandiswa kunotungamira mukuoma kukuru uye kutadza controllability. Kunzwisisa izvi, tauya kuzogadzira yedu yakasarudzika Workflow utility yekuvaka CI / CD - dapp.
Yayo kodhi kodhi yakanyorwa muRuby, yakavhurika sosi uye yakadhindwa pairi
Yakagadziridzwa Nyamavhuvhu 13, 2019: parizvino ipurojekiti dapp zita rekuti
Kubernetes
Imwe yakagadzirira-yakagadzirwa Open Source chishandiso iyo yakatowana kuzivikanwa kwakakosha munharaunda yehunyanzvi ndeye Kubernetes, Docker manejimendi cluster. Musoro wekushandiswa kwayo mukushanda kwemapurojekiti akavakirwa paDocker inodarika chiyero chemushumo, saka mharidzo inogumira kutarisisa yezvimwe zvinonakidza maficha.
Pakuburitswa, Kubernetes inopa:
- kugadzirira kuongorora - kutarisa kugadzirira kweshanduro nyowani yekushandisa (kuchinja traffic kwairi);
- rolling update - sequential image update muboka remidziyo (kuvhara, kugadzirisa, kugadzirira kutanga, traffic switching);
- synchronous update - kuvandudza chifananidzo musumbu nenzira yakasiyana: kutanga pahafu yemidziyo, uye pane imwe;
- canary inoburitsa - kuvhura chifananidzo chitsva pane shoma (diki) nhamba yemidziyo yekutarisa anomalies.
Sezvo Continuous Delivery isiri chete kuburitswa kweshanduro nyowani, Kubernetes ine akati wandei mikana yekuzotevera kugadzirisa kwezvivakwa: yakavakirwa-mukati yekutarisa uye matanda emidziyo yese, otomatiki scaling, nezvimwe. Zvese izvi zviri kutoshanda uye zvakangomirira zvakakodzera. kuita mumaitiro ako.
Mazano ekupedzisira
- Shandisa Docker.
- Gadzira maDocker mifananidzo yezvishandiso kune zvese zvaunoda.
- Tevedzera musimboti "Infrastructure ikodhi."
- Batanidza Git kuDocker.
- Rongedza marongero ekuburitswa.
- Shandisa yakagadzirira-yakagadzirwa chikuva (Kubernetes kana imwe).
Vhidhiyo uye masiraidhi
Vhidhiyo kubva pakuita (inenge awa)
Mharidzo yemushumo:
PS
Mimwe mishumo pamusoro wenyaya pane yedu blog:
- Β«
werf - chishandiso chedu cheCI / CD muKubernetes (muongorori uye mushumo wevhidhiyo) Β» (Dmitry Stolyarov; Chivabvu 27, 2019 kuDevOpsConf); - Β«
Databases uye Kubernetes Β» (Dmitry Stolyarov; Mbudzi 8, 2018 paHighLoad++); - Β«
CI/CD Zviitiko Zvakanakisa neKubernetes uye GitLab Β» (Dmitry Stolyarov; Mbudzi 7, 2017 paHighLoad++); - Β«
Chiitiko chedu neKubernetes mumapurojekiti madiki Β» (Dmitry Stolyarov; June 6, 2017 pa RootConf).
Source: www.habr.com