Isu kuChokwadi Injiniya takamisikidza maitiro ekuenderera mberi kuendesa zvigadziriso kumaseva evatengi uye tinoda kugovera chiitiko ichi.
Kutanga, takagadzira online sisitimu yemutengi uye tikaiisa mune yedu Kubernetes cluster. Iye zvino mhinduro yedu yepamusoro-soro yaenda kupuratifomu yemutengi, iyo yatakamisikidza zvizere otomatiki Kuenderera mberi Kuendesa maitiro. Nekuda kweizvi, isu takamhanyisa nguva-ku-musika - kuendesa shanduko kune chigadzirwa nharaunda.
Muchinyorwa chino tichataura nezve ese matanho eInoenderera mberi Deployment (CD) maitiro kana kuendesa zvigadziriso papuratifomu yemutengi:
- Izvi zvinotanga sei?
- kuwiriranisa nemutengi weGit repository,
- kusangana kwe backend uye frontend,
- otomatiki application kutumira munzvimbo yekuyedza,
- otomatiki kutumirwa kuProd.
Tichazogovera ruzivo rweseta munzira.
1. Tanga CD
Kuenderera mberi Deployment kunotanga nemugadziri achisundidzira shanduko kubazi rekuburitsa reGit repository yedu.
Yedu application inomhanya pane microservice architecture uye zvese zvikamu zvaro zvakachengetwa mune imwe repository. Nekuda kweizvi, ese ma microservices anounganidzwa uye akaiswa, kunyangwe kana imwe yadzo yachinja.
Isu takaronga basa kuburikidza neimwe repository nekuda kwezvikonzero zvakati:
- Kureruka kwekusimudzira - iyo application iri kushingaira kukura, saka unogona kushanda nekodhi yese kamwechete.
- Imwe pombi yeCI/CD inovimbisa kuti kunyorera sesisitimu imwe chete inopfuura bvunzo dzese uye inounzwa kunzvimbo yekugadzira yemutengi.
- Isu tinobvisa kuvhiringidzika mushanduro - isu hatifanirwe kuchengetedza mepu yemicroservice shanduro uye kutsanangura kumisikidzwa kwayo kune yega yega microservice muHelm zvinyorwa.
2. Kuwiriranisa neGit repository yekodhi yemutengi
Shanduko dzakaitwa dzinowiriraniswa otomatiki neyemutengi Git repository. Ikoko gungano rekushandisa rinogadziriswa, iro rinotangwa mushure mekugadzirisa bazi, uye kuendeswa kune kuenderera mberi. Maitiro ese ari maviri anotangira munharaunda yavo kubva kuGit repository.
Hatigone kushanda nerepository yemutengi zvakananga nekuti isu tinoda nharaunda dzedu pachedu yekusimudzira uye kuyedzwa. Isu tinoshandisa yedu Git repository kune izvi zvinangwa - inowiriraniswa neyavo Git repository. Kana mugadziri angochinjira kubazi rakakodzera renzvimbo yedu, GitLab inongosundira shanduko idzi kumutengi.
Pashure paizvozvo unofanira kuita gungano. Iyo ine matanho akati wandei: backend uye frontend kusangana, kuyedzwa uye kuendesa kune kugadzirwa.
3. Kuunganidza backend uye frontend
Kuvaka iyo yekumashure uye yekumberi mabasa maviri akafanana anoitwa muGitLab Runner system. Kugadziriswa kwayo kwekutanga kwegungano kuri munzvimbo imwechete.
GitLab Runner inotora kodhi kubva pane inodiwa repository, inoiunganidza neJava application kuvaka command uye inotumira kuDocker registry. Pano isu tinounganidza iyo yekumashure uye yekumberi, tora Docker mifananidzo, yatinoisa mune repository parutivi rwemutengi. Kubata Docker mifananidzo yatinoshandisa
Isu tinowiriranisa mavhezheni emifananidzo yedu neiyo yekuburitsa vhezheni iyo ichaburitswa muDocker. Kuti ushande zvakanaka, takagadzirisa akati wandei:
1. Midziyo haina kuvakwazve pakati penzvimbo yekuyedza nenzvimbo yekugadzira. Isu takagadzira parametrizations kuitira kuti chigadziko chimwe chete chishande nemasetirwo ese, nharaunda dzakasiyana uye masevhisi munzvimbo yekuyedza uye mukugadzira pasina kuvakazve.
2. Kuti uvandudze application kuburikidza neHelm, unofanirwa kutsanangura vhezheni yayo. Isu tinovaka iyo yekumashure, yekumberi uye nekuvandudza mashandisirwo - aya mabasa matatu akasiyana, saka zvakakosha kushandisa shanduro imwechete yechishandiso kwese kwese. Kune iri basa, isu tinoshandisa data kubva kuGit nhoroondo, sezvo yedu K8S cluster kumisikidza uye maapplication ari mune imwecheteyo Git repository.
Isu tinowana iyo application vhezheni kubva kumirairo yekuuraya mhedzisiro
git describe --tags --abbrev=7
.
4. Kuendesa otomatiki kwese shanduko kunzvimbo yekuyedza (UAT)
Nhanho inotevera mune ino kuvaka script ndeyekugadzirisa otomatiki iyo K8S cluster. Izvi zvinoitika zvakapihwa kuti iyo application yese yakavakwa uye zvese zvigadzirwa zvakaburitswa kuDocker Registry. Mushure meizvi, iyo yekuyedza nharaunda yekuvandudza inotanga.
Iyo cluster update inotanga kushandiswa
Isu tinopa iyo K8S cluster kumisikidzwa pamwe negungano. Naizvozvo, danho rinotevera nderekugadzirisa: configMaps, deployments, masevhisi, zvakavanzika uye chero mamwe maK8S magadzirirwo atakachinja.
Helm yobva yamhanyisa RollOut yekuvandudza yekushandisa pachayo munzvimbo yekuyedza. Chikumbiro chisati chaendeswa kune kugadzirwa. Izvi zvinoitirwa kuti vashandisi vagone kuyedza mabhizinesi maficha atinoisa munzvimbo yekuyedza.
5. Kuendesa otomatiki kwese shanduko kuProd
Kuti uendese inogadziridza kune nharaunda yekugadzira, iwe unongoda kudzvanya bhatani rimwe muGitLab - uye midziyo inounzwa pakarepo kunzvimbo yekugadzira.
Iyo imwechete application inogona kushanda munzvimbo dzakasiyana-yedzo uye kugadzira-pasina kuvakazve. Isu tinoshandisa zvakafanana zvigadzirwa pasina kushandura chero chinhu mukushandisa, uye isu tinoisa ma paramita kunze.
Flexible parameterization yezvirongwa zvekushandisa zvinoenderana nenharaunda iyo application ichaitwa. Isu takafambisa ese nharaunda zvigadziriso kunze: zvese zvakamisikidzwa kuburikidza neK8S kumisikidzwa uye Helm paramita. Kana Helm inotumira gungano kunzvimbo yekuyedza, zvigadziriso zvebvunzo zvinoiswa kwairi, uye zvigadziriso zvechigadzirwa zvinoiswa kunharaunda yekugadzira.
Chinhu chakanyanya kuoma chaive chekumisa masevhisi ese akashandiswa uye zvinosiyana zvinoenderana nenharaunda, uye nekuzvishandura kuita nharaunda siyana uye tsananguro-magadzirirwo ezvakatipoteredza paramita yeHelm.
Zvirongwa zvemaapplication zvinoshandisa magariro akasiyana. Hunhu hwavo hwakaiswa mumidziyo uchishandisa K8S configmap, iyo inotemerwa uchishandisa Go matemplate. Semuenzaniso, kuseta shanduko yenharaunda kune zita rezita rinogona kuitwa seizvi:
APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}
.Values.global.env - shanduko iyi inochengetedza zita renzvimbo (prod, nhanho, UAT).
.Values.app.properties.app_external_domain - mushanduko iyi tinoisa nzvimbo yatinoda mu.Values.yaml file
Kana uchigadziridza application, Helm inogadzira configmap.yaml faira kubva kumatemplate uye inozadza iyo APP_EXTERNAL_DOMAIN kukosha nehukoshi hunodiwa zvichienderana nenharaunda iyo shanduro yeapplication inotanga. Iyi shanduko yakatoiswa mugaba. Inogona kuwanikwa kubva pachikumbiro, saka imwe neimwe nharaunda yekushandisa ichave neyakasiyana kukosha kune iyi shanduko.
Munguva pfupi yapfuura, rutsigiro rweK8S rwakaonekwa muChitubu Cloud, kusanganisira kushanda neconfigMaps:
Total
Saka, Kuenderera mberi Kuendeswa kunogadziriswa uye kushanda. Zvese zvinogadziridzwa zvinoitika nekiyi imwe chete. Kuendesa kwekuchinja kune chigadzirwa nharaunda kunongoitika. Uye, zvakakosha, zvigadziriso hazvimise sisitimu.
Zvirongwa zveramangwana: otomatiki dhatabhesi kutama
Isu takafunga nezve kusimudzira dhatabhesi uye mukana wekudzoreredza shanduko idzi. Mushure mezvose, shanduro mbiri dzakasiyana dzekushandisa dziri kushanda panguva imwe chete: yekare iri kushanda, uye itsva iri kumusoro. Uye isu tichadzima yekare chete kana tine chokwadi chekuti shanduro itsva inoshanda. Iyo dhatabhesi yekufambisa inofanirwa kukubvumidza kuti ushande nemavhezheni ese echishandiso.
Naizvozvo, isu hatigone kungoshandura zita rekoramu kana imwe data. Asi isu tinokwanisa kugadzira koramu nyowani, kukopa data kubva mukoramu yekare mukati mayo uye kunyora zvinokonzeresa izvo, kana uchigadziridza iyo data, panguva imwe chete inokopa uye kuigadzirisa mune imwe koromo. Uye mushure mekubudirira kutumirwa kweiyo vhezheni nyowani yekushandisa, mushure mekutanga kwekutanga nguva yekutsigira, isu tichakwanisa kudzima iyo yekare column uye chinokonzeresa chave chisingakoshi.
Kana iyo vhezheni itsva yechishandiso ikasashanda nemazvo, tinogona kudzoreredza kune yakapfuura vhezheni, kusanganisira yekare vhezheni yedatabase. Muchidimbu, shanduko dzedu dzichakubvumidza kuti ushande panguva imwe chete neshanduro dzinoverengeka dzekushandisa.
Isu tinoronga kuita otomatiki dhatabhesi kutama kuburikidza neK8S basa, tichiibatanidza muiyo CD maitiro. Uye isu zvirokwazvo tichagovana chiitiko ichi paHabrΓ©.
Source: www.habr.com