Kukhazikitsa kwathu Continuous Deployment papulatifomu yamakasitomala

Ife ku True Engineering takhazikitsa njira yopititsira patsogolo zosintha zamakasitomala ndipo tikufuna kugawana nawo izi.

Poyamba, tidapanga makina ochezera pa intaneti kwa kasitomala ndikuyika gulu lathu la Kubernetes. Tsopano njira yathu yolemetsa kwambiri yasamukira ku nsanja ya kasitomala, yomwe takhazikitsa njira yokhazikika yopititsira patsogolo. Chifukwa cha izi, tinafulumizitsa nthawi yopita kumsika - kutumiza zosintha ku chilengedwe.

M'nkhaniyi tikambirana za magawo onse a Njira Yopitilira Kutumiza (CD) kapena kutumiza zosintha papulatifomu yamakasitomala:

  1. Kodi ndondomekoyi imayamba bwanji?
  2. kulunzanitsa ndi nkhokwe ya kasitomala ya Git,
  3. kusonkhana kwa backend ndi frontend,
  4. kuyika ntchito kwaotomatiki pamalo oyeserera,
  5. kutumiza basi ku Prod.

Tikugawana tsatanetsatane wakukonzekera.

Kukhazikitsa kwathu Continuous Deployment papulatifomu yamakasitomala

1. Yambitsani CD

Kutumiza Kopitirira kumayamba pomwe wopanga akukankhira zosintha kunthambi yotulutsa ya Git repository.

Ntchito yathu imagwira ntchito yomanga ma microservice ndipo zida zake zonse zimasungidwa m'malo amodzi. Chifukwa cha izi, ma microservices onse amasonkhanitsidwa ndikuyika, ngakhale imodzi mwa izo yasintha.

Tinakonza ntchito kudzera m'nkhokwe imodzi pazifukwa zingapo:

  • Kusavuta kwachitukuko - pulogalamuyo ikukula mwachangu, kotero mutha kugwira ntchito ndi ma code onse nthawi imodzi.
  • Paipi imodzi ya CI / CD yomwe imatsimikizira kuti kugwiritsa ntchito ngati dongosolo limodzi kumadutsa mayesero onse ndikuperekedwa kumalo opangira makasitomala.
  • Timachotsa chisokonezo m'mitundu - sitiyenera kusungira mapu amitundu ya microservice ndikufotokozera masanjidwe ake pa microservice iliyonse muzolemba za Helm.

2. Kuyanjanitsa ndi nkhokwe ya Git ya khodi yamakasitomala

Zosintha zomwe zapangidwa zimangolumikizidwa ndi kasitomala wa Git. Kumeneko msonkhano wogwiritsira ntchito umakonzedwa, womwe umayambitsidwa pambuyo pokonzanso nthambi, ndi kutumizidwa ku kupitiriza. Njira zonsezi zimachokera kumalo awo kuchokera ku Git repository.

Sitingathe kugwira ntchito ndi malo osungira makasitomala mwachindunji chifukwa timafunikira malo athu kuti titukuke ndikuyesa. Timagwiritsa ntchito malo athu a Git pazolinga izi - zimalumikizidwa ndi malo awo a Git. Wopanga mapulogalamu akangosintha kukhala nthambi yoyenera yankhokwe yathu, GitLab nthawi yomweyo imakankhira zosinthazi kwa kasitomala.

Kukhazikitsa kwathu Continuous Deployment papulatifomu yamakasitomala

Pambuyo pa izi muyenera kuchita msonkhano. Zili ndi magawo angapo: msonkhano wakumbuyo ndi wakutsogolo, kuyesa ndi kutumiza pakupanga.

3. Kusonkhanitsa kumbuyo ndi kutsogolo

Kumanga kumbuyo ndi kutsogolo ndi ntchito ziwiri zofanana zomwe zimachitika mu GitLab Runner system. Kukonzekera kwake koyambirira kwa msonkhano kuli m'malo omwewo.

Maphunziro polemba zolemba za YAML zomanga ku GitLab.

GitLab Runner imatenga kachidindo kuchokera kumalo ofunikira, ndikuyisonkhanitsa ndi lamulo la Java application build ndikutumiza ku registry ya Docker. Apa timasonkhanitsa kumbuyo ndi kutsogolo, kupeza zithunzi za Docker, zomwe timaziyika mosungirako mbali ya kasitomala. Kuwongolera zithunzi za Docker zomwe timagwiritsa ntchito Pulogalamu yowonjezera ya Gradle.

Timagwirizanitsa mitundu yazithunzi zathu ndi mtundu womwe udzasindikizidwa ku Docker. Kuti tigwire bwino ntchito tapanga zosintha zingapo:

1. Zotengera sizimamangidwanso pakati pa malo oyesera ndi malo opangira. Tidapanga ma parametrizations kuti chidebe chomwechi chizitha kugwira ntchito ndi zosintha zonse, zosintha zachilengedwe ndi ntchito zomwe zimayesedwa komanso popanga popanda kumanganso.

2. Kuti musinthe pulogalamu kudzera pa Helm, muyenera kufotokoza mtundu wake. Timamanga kumbuyo, kutsogolo ndikusintha pulogalamu - izi ndi ntchito zitatu zosiyana, kotero ndikofunikira kugwiritsa ntchito mtundu womwewo wa pulogalamu kulikonse. Pa ntchitoyi, timagwiritsa ntchito mbiri ya Git, popeza kasinthidwe ka gulu lathu la K8S ndi ntchito zili m'malo omwewo a Git.

Timapeza mtundu wa ntchito kuchokera ku zotsatira za lamulo
git describe --tags --abbrev=7.

4. Kutumiza mokha kwa zosintha zonse kumalo oyeserera (UAT)

Gawo lotsatira muzolemba zomanga izi ndikungosintha gulu la K8S. Izi zimachitika pokhapokha pulogalamu yonseyo idamangidwa ndipo zonse zidasindikizidwa ku Docker Registry. Pambuyo pake, kusintha kwa malo oyeserera kumayamba.

Kusintha kwamagulu kumayamba kugwiritsidwa ntchito Kusintha kwa Helm. Ngati, chotsatira chake, china chake sichinapite molingana ndi dongosolo, Helm imangokhalira kubweza zosintha zake zonse. Ntchito yake sifunikira kulamulidwa.

Timapereka kasinthidwe kamagulu a K8S pamodzi ndi msonkhano. Chifukwa chake, gawo lotsatira ndikuwongolera: configMaps, deployments, services, zinsinsi ndi masinthidwe ena aliwonse a K8S omwe tasintha.

Helm ndiye amayendetsa zosintha za RollOut za pulogalamuyo pamalo oyesera. Ntchito isanatumizidwe kukupanga. Izi zimachitika kuti ogwiritsa ntchito athe kuyesa pawokha mawonekedwe abizinesi omwe timayika pamalo oyeserera.

5. Kutumiza zosintha zonse ku Prod

Kuti mutumize zosintha kumalo opangira, muyenera kungodina batani limodzi ku GitLab - ndipo zotengerazo zimaperekedwa nthawi yomweyo kumalo opangira.

Ntchito yomweyo imatha kugwira ntchito m'malo osiyanasiyana - kuyesa ndi kupanga - popanda kumanganso. Timagwiritsa ntchito zinthu zakale zomwezo osasintha chilichonse pakugwiritsa ntchito, ndipo timayika magawo akunja.

Flexible parameterization of application imadalira malo omwe ntchitoyo idzagwiritsidwe. Tasuntha makonda onse achilengedwe kunja: chilichonse chimayikidwa pamayendedwe kudzera pakusintha kwa K8S ndi magawo a Helm. Helm ikatumiza msonkhano kumalo oyesera, zosintha zoyeserera zimayikidwa pamenepo, ndipo zosintha zomwe zimagwiritsidwa ntchito zimayikidwa pamalo opangira.

Chinthu chovuta kwambiri chinali kuyika magawo onse omwe amagwiritsidwa ntchito ndi zosintha zomwe zimadalira chilengedwe, ndikuzimasulira kukhala zosinthika zachilengedwe ndi kufotokozera-masinthidwe a magawo a chilengedwe a Helm.

Zokonda pakugwiritsa ntchito zimagwiritsa ntchito zosintha zachilengedwe. Miyezo yawo imayikidwa muzotengera pogwiritsa ntchito K8S configmap, yomwe imapangidwa pogwiritsa ntchito ma Go templates. Mwachitsanzo, kukhazikitsa kusintha kwa chilengedwe ku dzina lachidziwitso kutha kuchitika motere:

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env - kusinthaku kumasunga dzina la chilengedwe (prod, stage, UAT).
.Values.app.properties.app_external_domain - mu kusinthaku timayika dera lomwe tikufuna mu fayilo ya .Values.yaml

Mukakonza pulogalamu, Helm imapanga fayilo ya configmap.yaml kuchokera muzojambula ndikudzaza mtengo wa APP_EXTERNAL_DOMAIN ndi mtengo womwe mukufuna kutengera malo omwe pulogalamuyo imayambira. Kusinthaku kwakhazikitsidwa kale mu chidebe. Itha kupezeka kuchokera ku pulogalamuyi, kotero kuti malo aliwonse ogwiritsira ntchito adzakhala ndi mtengo wosiyana wa kusinthaku.

Posachedwapa, chithandizo cha K8S chinawonekera mu Spring Cloud, kuphatikizapo ntchito ndi configMaps: Spring Cloud Kubernetes. Ngakhale kuti polojekiti ikukula mwachangu ndikusintha kwambiri, sitingathe kuigwiritsa ntchito popanga. Koma timayang'anitsitsa momwe zilili ndikugwiritsa ntchito muzosintha za DEV. Ikangokhazikika, tidzasintha kusiya kugwiritsa ntchito zosintha zachilengedwe kupita ku izo.

Chiwerengero

Chifukwa chake, Kutumiza Kopitiriza kumakonzedwa ndikugwira ntchito. Zosintha zonse zimachitika ndi kiyibodi imodzi. Kutumiza zosintha kumalo opangira zinthu kumangochitika zokha. Ndipo, chofunika kwambiri, zosintha sizimayimitsa dongosolo.

Kukhazikitsa kwathu Continuous Deployment papulatifomu yamakasitomala

Zolinga zamtsogolo: kusamuka kwa database

Tidaganiza zokweza nkhokwe ndi kuthekera kobweza zosinthazi. Kupatula apo, mitundu iwiri yosiyana ya pulogalamuyi ikugwira ntchito nthawi imodzi: yakale ikugwira ntchito, ndipo yatsopanoyo yakwera. Ndipo tidzazimitsa yakale pokhapokha titatsimikiza kuti Baibulo latsopanoli likugwira ntchito. Kusamuka kwa database kuyenera kukulolani kuti mugwiritse ntchito mitundu yonse iwiri ya pulogalamuyi.

Chifukwa chake, sitingangosintha dzina lazanja kapena deta ina. Koma titha kupanga ndime yatsopano, kukopera deta kuchokera pamndandanda wakale ndikulemba zoyambitsa zomwe, pokonzanso deta, nthawi yomweyo zimakopera ndikuzisintha mugawo lina. Ndipo pambuyo pa kutumiza bwino kwa mtundu watsopano wa pulogalamuyo, pambuyo pa nthawi yothandizira positi, titha kuchotsa gawo lakale ndi choyambitsa chomwe chakhala chosafunikira.

Ngati mtundu watsopano wa pulogalamuyi sukugwira ntchito moyenera, titha kubwereranso ku mtundu wakale, kuphatikiza mtundu wakale wa database. Mwachidule, zosintha zathu zimakupatsani mwayi wogwira ntchito nthawi imodzi ndi mitundu ingapo ya pulogalamuyo.

Tikukonzekera kusuntha kusamuka kwa database kudzera pa ntchito ya K8S, ndikuyiphatikiza ndi ma CD. Ndipo tidzagawana zomwe takumana nazo pa HabrΓ©.

Source: www.habr.com

Kuwonjezera ndemanga