Ukusebenzisa kwethu Ukuthunyelwa Okuqhubekayo kuplathifomu yekhasimende

Thina kubunjiniyela Beqiniso simise inqubo yokuletha izibuyekezo eziqhubekayo kumaseva wamakhasimende futhi sifuna ukwabelana ngalokhu okuhlangenwe nakho.

Okokuqala, sithuthukisele ikhasimende uhlelo oluku-inthanethi futhi salusebenzisa kuqoqo lethu le-Kubernetes. Manje isixazululo sethu esinomthwalo ophezulu sesithuthele endaweni yekhasimende, esimise kuyo inqubo ezenzakalelayo Yokuthunyelwa Okuqhubekayo Okuqhubekayo. Ngenxa yalokhu, sisheshise isikhathi sokuya emakethe - ukulethwa kwezinguquko endaweni yomkhiqizo.

Kulesi sihloko sizokhuluma ngazo zonke izigaba zenqubo Yokuthunyelwa Okuqhubekayo (CD) noma ukulethwa kwezibuyekezo endaweni yekhasimende:

  1. Iqala kanjani le nqubo?
  2. ukuvumelanisa nenqolobane ye-Git yekhasimende,
  3. ukuhlanganiswa kwe-backend kanye ne-frontend,
  4. ukuthunyelwa kwesicelo okuzenzakalelayo endaweni yokuhlola,
  5. ukuthunyelwa okuzenzakalelayo ku-Prod.

Sizokwabelana ngemininingwane yokusetha njengoba sisendleleni.

Ukusebenzisa kwethu Ukuthunyelwa Okuqhubekayo kuplathifomu yekhasimende

1. Qala i-CD

Ukuthunyelwa Okuqhubekayo kuqala ngokuthi unjiniyela aphushe izinguquko egatsheni lokukhishwa lekhosombe lethu le-Git.

Uhlelo lwethu lokusebenza lusebenza ku-microservice architecture futhi zonke izingxenye zalo zigcinwa endaweni eyodwa. Ngenxa yalokhu, wonke ama-microservices aqoqwa futhi afakwe, ngisho noma enye yazo ishintshile.

Sihlele umsebenzi ngenqolobane eyodwa ngezizathu ezimbalwa:

  • Ukukhululeka kokuthuthukiswa - uhlelo lokusebenza luthuthuka ngenkuthalo, ukuze ukwazi ukusebenza nayo yonke ikhodi ngesikhathi esisodwa.
  • Ipayipi elilodwa le-CI/CD eliqinisekisa ukuthi isicelo njengesistimu eyodwa siphumelela zonke izivivinyo futhi silethwa endaweni yokukhiqiza yekhasimende.
  • Siqeda ukudideka ezinguqulweni - akudingekile ukuthi sigcine imephu yezinguqulo ze-microservice futhi sichaze ukucushwa kwayo ku-microservice ngayinye emibhalweni ye-Helm.

2. Ukuvumelanisa nekhosombe le-Git lekhodi yomthombo yekhasimende

Izinguquko ezenziwe zivunyelaniswa ngokuzenzakalela nekhosombe le-Git yekhasimende. Lapho umhlangano wesicelo uyalungiswa, owethulwa ngemva kokubuyekeza igatsha, nokuthunyelwa ekuqhubekeni. Zombili izinqubo zisuka endaweni yazo zisuka endaweni yokugcina ye-Git.

Asikwazi ukusebenza nenqolobane yekhasimende ngokuqondile ngoba sidinga izindawo zethu ukuze sithuthukiswe futhi sihlolwe. Sisebenzisa inqolobane yethu ye-Git ngalezi zinhloso - ivunyelaniswa nenqolobane yabo ye-Git. Lapho nje okuthunyelwe kukanjiniyela kushintsha egatsheni elifanele lekhosombe lethu, i-GitLab ngokushesha iphusha lezi zinguquko kukhasimende.

Ukusebenzisa kwethu Ukuthunyelwa Okuqhubekayo kuplathifomu yekhasimende

Emva kwalokhu udinga ukwenza umhlangano. Iqukethe izigaba eziningana: i-backend ne-frontend, ukuhlolwa nokulethwa ekukhiqizeni.

3. Ukuhlanganisa i-backend kanye ne-frontend

Ukwakha indawo engemuva nengaphambili kuyimisebenzi emibili ehambisanayo eyenziwa ohlelweni lwe-GitLab Runner. Ukucushwa komhlangano wangempela kutholakala endaweni yokugcina efanayo.

Isifundo sokubhala umbhalo we-YAML wokwakha e-GitLab.

I-GitLab Runner ithatha ikhodi endaweni yokugcina edingekayo, iyihlanganise nomyalo wokwakha wohlelo lokusebenza lwe-Java bese iyithumela ebhukwini le-Docker. Lapha sihlanganisa i-backend ne-frontend, sithola izithombe ze-Docker, esizibeka endaweni yokugcina ohlangothini lwekhasimende. Ukuphatha izithombe ze-Docker esizisebenzisayo I-plugin ye-Gradle.

Sivumelanisa izinguqulo zezithombe zethu nenguqulo ezoshicilelwa ku-Docker. Ukuze usebenze kahle senze izinguquko ezimbalwa:

1. Iziqukathi azikhiwa kabusha phakathi kwendawo yokuhlola nendawo yokukhiqiza. Senze amapharamitha ukuze isiqukathi esifanayo sisebenze nazo zonke izilungiselelo, okuguquguqukayo kwendawo namasevisi kokubili endaweni yokuhlola nasekukhiqizeni ngaphandle kokwakhiwa kabusha.

2. Ukuze ubuyekeze uhlelo lokusebenza nge-Helm, kufanele ucacise inguqulo yalo. Sakha i-backend, i-frontend futhi sibuyekeze uhlelo lokusebenza - lena imisebenzi emithathu ehlukene, ngakho-ke kubalulekile ukusebenzisa inguqulo efanayo yohlelo lokusebenza yonke indawo. Kulo msebenzi, sisebenzisa idatha evela kumlando we-Git, njengoba ukucushwa kweqoqo lethu le-K8S kanye nezinhlelo zokusebenza zisendaweni yokugcina ye-Git.

Sithola inguqulo yohlelo lokusebenza emiphumeleni yokusebenzisa umyalo
git describe --tags --abbrev=7.

4. Ukuthunyelwa okuzenzakalelayo kwazo zonke izinguquko endaweni yokuhlola (UAT)

Isinyathelo esilandelayo kulesi sikripthi sokwakha wukuvuselela ngokuzenzakalelayo iqoqo le-K8S. Lokhu kwenzeka inqobo nje uma lonke uhlelo lokusebenza lwakhiwe futhi wonke ama-artifact ashicilelwe ku-Docker Registry. Ngemva kwalokhu, isibuyekezo sendawo yokuhlola siyaqala.

Isibuyekezo seqoqo siqalwa kusetshenziswa Helm Update. Uma, ngenxa yalokho, okuthile kungazange kuhambe ngokohlelo, i-Helm izobuyisela ngokuzenzakalelayo futhi ngokuzimela zonke izinguquko zayo. Umsebenzi wakhe awudingi ukulawulwa.

Sihlinzeka ngokucushwa kweqoqo le-K8S kanye nomhlangano. Ngakho-ke, isinyathelo esilandelayo ukuwubuyekeza: i-configMaps, ukuthunyelwa, izinsizakalo, izimfihlo kanye nanoma yikuphi okunye ukucushwa kwe-K8S esikushintshile.

U-Helm ube esesebenzisa isibuyekezo se-RollOut yohlelo lokusebenza ngokwalo endaweni yokuhlola. Ngaphambi kokuthi isicelo sitshalwe ekukhiqizeni. Lokhu kwenziwa ukuze abasebenzisi bakwazi ukuhlola mathupha izici zebhizinisi esizifaka endaweni yokuhlola.

5. Ukuthunyelwa okuzenzakalelayo kwazo zonke izinguquko ku-Prod

Ukuze uthumele isibuyekezo endaweni yokukhiqiza, udinga nje ukuchofoza inkinobho eyodwa ku-GitLab - futhi iziqukathi zilethwa ngokushesha endaweni yokukhiqiza.

Uhlelo olufanayo lungasebenza ezindaweni ezihlukene—ukuhlola nokukhiqiza—ngaphandle kokwakha kabusha. Sisebenzisa ama-artifact afanayo ngaphandle kokushintsha noma yini kuhlelo lokusebenza, futhi sibeka amapharamitha ngaphandle.

I-parameterization eguquguqukayo yezilungiselelo zohlelo lokusebenza incike endaweni lapho uhlelo lokusebenza luzosetshenziswa khona. Sihambise zonke izilungiselelo zemvelo ngaphandle: yonke into ibekwe ngepharamitha ngokucushwa kwe-K8S kanye nemingcele ye-Helm. Lapho i-Helm isebenzisa umhlangano endaweni yokuhlola, izilungiselelo zokuhlola zisetshenziswa kuyo, futhi izilungiselelo zomkhiqizo zisetshenziswa endaweni yokukhiqiza.

Into enzima kakhulu kwakuwukuhlukanisa zonke izinsizakalo ezisetshenzisiwe neziguquguqukayo ezincike endaweni, futhi zihumushele eziguquguqukayo zemvelo kanye nokuhlelwa kwencazelo yemingcele yemvelo ye-Helm.

Izilungiselelo zohlelo zisebenzisa okuguquguqukayo kwendawo. Amanani abo asethwe ezitsheni kusetshenziswa i-K8S configmap, esetshenziswa kusetshenziswa izifanekiso ze-Go. Isibonelo, ukusetha imvelo eguquguqukayo egameni lesizinda kungenziwa kanje:

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

.Values.global.env - lokhu okuguquguqukayo kugcina igama lemvelo (i-prod, isiteji, i-UAT).
.Values.app.properties.app_external_domain – kulokhu okuguquguqukayo sibeka isizinda esifunekayo kufayela elithi .Values.yaml

Lapho ibuyekeza uhlelo lokusebenza, i-Helm idala ifayela le-configmap.yaml kusuka kuzifanekiso futhi igcwalise APP_EXTERNAL_DOMAIN ivelu ngevelu elifiswayo kuye ngendawo lapho isibuyekezo sohlelo lokusebenza siqala khona. Lokhu okuguquguqukayo sekuvele kusethiwe esitsheni. Ingafinyelelwa kuhlelo lokusebenza, ngakho indawo ngayinye yohlelo lokusebenza izoba nenani elihlukile lalokhu okuguquguqukayo.

Kamuva nje, ukusekelwa kwe-K8S kuvele ku-Spring Cloud, okuhlanganisa ukusebenza ne-configMaps: I-Spring Cloud Kubernetes. Nakuba iphrojekthi isathuthuka futhi ishintsha kakhulu, asikwazi ukuyisebenzisa ekukhiqizeni. Kodwa siqapha ngenkuthalo isimo sayo futhi siyisebenzise ekucushweni kwe-DEV. Lapho nje isizinzile, sizosuka ekusebenziseni okuguquguqukayo kwemvelo siye kuyo.

Inani

Ngakho, Ukuthunyelwa Okuqhubekayo kumisiwe futhi kuyasebenza. Zonke izibuyekezo zenzeka ngokucindezela ukhiye okukodwa. Ukulethwa kwezinguquko endaweni yomkhiqizo kuyazenzakalela. Futhi, okubalulekile, ukubuyekezwa akuvimbi isistimu.

Ukusebenzisa kwethu Ukuthunyelwa Okuqhubekayo kuplathifomu yekhasimende

Izinhlelo zesikhathi esizayo: ukufuduka kwesizindalwazi okuzenzakalelayo

Sicabange ukuthuthukisa isizindalwazi kanye nethuba lokuhlehlisa lezi zinguquko. Phela, izinguqulo ezimbili ezihlukene zohlelo lokusebenza zisebenza ngesikhathi esisodwa: endala iyasebenza, futhi entsha ivuliwe. Futhi sizoyivala endala kuphela uma sinesiqiniseko sokuthi inguqulo entsha iyasebenza. Ukuthutha kwesizindalwazi kufanele kukuvumele ukuthi usebenze ngazo zombili izinguqulo zohlelo lokusebenza.

Ngakho-ke, asikwazi ukumane siguqule igama lekholomu noma enye idatha. Kodwa singakha ikholomu entsha, sikopishe idatha kusuka kukholomu endala kuyo futhi sibhale izibangeli, lapho ubuyekeza idatha, zizokopisha kanyekanye futhi ziyibuyekeze kwenye ikholomu. Futhi ngemva kokuthunyelwa ngempumelelo kwenguqulo entsha yohlelo lokusebenza, ngemva kwesikhathi sokwesekwa kokuthunyelwe, sizokwazi ukususa ikholomu endala nesibangeli esingasenasidingo.

Uma inguqulo entsha yohlelo lokusebenza ingasebenzi kahle, singabuyela emuva enguqulweni yangaphambilini, okuhlanganisa nenguqulo yangaphambili yesizindalwazi. Ngamafuphi, izinguquko zethu zizokuvumela ukuthi usebenze ngesikhathi esisodwa nezinguqulo ezimbalwa zohlelo lokusebenza.

Sihlela ukushintshela kusizindalwazi ngokuzenzakalelayo ngomsebenzi we-K8S, sikuhlanganise nenqubo ye-CD. Futhi ngokuqinisekile sizokwabelana ngalokhu okuhlangenwe nakho ku-Habré.

Source: www.habr.com

Engeza amazwana