Kuitwa kwedu kweKuenderera mberi Kuendeswa papuratifomu yemutengi

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:

  1. Izvi zvinotanga sei?
  2. kuwiriranisa nemutengi weGit repository,
  3. kusangana kwe backend uye frontend,
  4. otomatiki application kutumira munzvimbo yekuyedza,
  5. otomatiki kutumirwa kuProd.

Tichazogovera ruzivo rweseta munzira.

Kuitwa kwedu kweKuenderera mberi Kuendeswa papuratifomu yemutengi

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.

Kuitwa kwedu kweKuenderera mberi Kuendeswa papuratifomu yemutengi

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.

Dzidziso yekunyora YAML script yekuvaka muGitLab.

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 Gradle plugin.

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 Helm Update. Kana, semhedzisiro, chimwe chinhu chisina kuenda maererano nehurongwa, Helm ichaita otomatiki uye yakazvimiririra kudzosera kumashure shanduko dzayo dzese. Basa rake haridi kudzorwa.

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: Spring Cloud Kubernetes. Nepo purojekiti iri kushingaira kukura uye kuchinja zvakanyanya, isu hatigone kuishandisa mukugadzira. Asi isu tinoshingairira kutarisa mamiriro ayo uye nekuishandisa muDEV zvigadziriso. Painongodzikama, isu tichachinja kubva pakushandisa nharaunda zvinosiyana kuenda kwairi.

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.

Kuitwa kwedu kweKuenderera mberi Kuendeswa papuratifomu yemutengi

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

Voeg