Pêkanîna me ya Damezrandina Berdewam li ser platforma xerîdar

Me li Endezyariya True pêvajoyek ji bo radestkirina domdar a nûvekirina serverên xerîdar saz kiriye û dixwazin vê ezmûnê parve bikin.

Ji bo destpêkê, me ji bo xerîdar pergalek serhêl pêşxist û ew di koma xweya Kubernetes de bicîh kir. Naha çareseriya meya bargiraniyê çûye platforma xerîdar, ji bo wê me pêvajoyek Damezrandina Berdewam a bi tevahî otomatîk saz kiriye. Bi saya vê yekê, me dema-bazarê bilez kir - radestkirina guhertinan li hawîrdora hilberê.

Di vê gotarê de em ê li ser hemî qonaxên Pêvajoya Damezrandina Berdewam (CD) an radestkirina nûvekirina platforma xerîdar biaxivin:

  1. Ev pêvajo çawa dest pê dike?
  2. hevdemkirina bi depoya Git ya xerîdar,
  3. kombûna paşîn û pêşiyê,
  4. bicîhkirina serîlêdana otomatîkî di hawîrdorek ceribandinê de,
  5. bicihkirina otomatîkî ji bo Prod.

Em ê hûrguliyên sazkirinê di rê de parve bikin.

Pêkanîna me ya Damezrandina Berdewam li ser platforma xerîdar

1. CD-yê dest pê bikin

Damezrandina Berdewam bi pêşdebir re dest pê dike ku guhartinan li şaxê serbestberdana depoya meya Git-ê dike.

Serlêdana me li ser mîmariya mîkro-xizmetê dimeşîne û hemî pêkhateyên wê di yek depoyê de têne hilanîn. Bi saya vê, hemî mîkroxizmet têne berhev kirin û saz kirin, hetta yek ji wan guherî.

Me ji ber çend sedeman bi yek depoyê kar organîze kir:

  • Hêsaniya pêşkeftinê - serîlêdan bi rengek çalak pêş dikeve, ji ber vê yekê hûn dikarin bi yekcarî bi hemî kodê re bixebitin.
  • Xetek CI/CD ya yekane ku garantî dike ku serîlêdan wekî pergalek yekane hemî ceribandinan derbas dike û ji hawîrdora hilberîna xerîdar re tê radest kirin.
  • Em di guhertoyan de tevliheviyê ji holê radikin - ne hewce ye ku em nexşeyek guhertoyên mîkroservisê hilînin û veavakirina wê ji bo her mîkroxizmetê di tîpên Helm de diyar bikin.

2. Hevdengkirina bi depoya Git ya koda çavkaniyê ya xerîdar re

Guhertinên hatine çêkirin bixweber bi depoya Git ya xerîdar re têne hevdem kirin. Li wir meclîsa serîlêdanê tê mîheng kirin, ku piştî nûvekirina şaxê, û şandina ber bi berdewamiyê ve tê destpêkirin. Her du pêvajo di hawîrdora xwe de ji depoyek Git-ê derdikevin.

Em nikarin rasterast bi depoya xerîdar re bixebitin ji ber ku em ji bo pêşkeftin û ceribandinê hewceyê hawîrdorên xwe ne. Em ji bo van armancan depoya xweya Git bikar tînin - ew bi depoya wan a Git-ê re hevdeng e. Mîna ku pêşdebirek guheztinan li şaxê guncan a depoya me dişîne, GitLab tavilê van guhertinan ji xerîdar re dihêle.

Pêkanîna me ya Damezrandina Berdewam li ser platforma xerîdar

Piştî vê yekê hûn hewce ne ku meclîsê bikin. Ew ji çend qonaxan pêk tê: meclîsa paşîn û pêşîn, ceribandin û radestkirina hilberînê.

3. Civîna paşîn û pêşiyê

Avakirina paşîn û pêşîn du karên paralel in ku di pergala GitLab Runner de têne kirin. Veavakirina meclîsa wê ya orjînal di heman depoyê de ye.

Tutorial ji bo nivîsandina skrîptek YAML ji bo avakirina li GitLab.

GitLab Runner kodê ji depoya pêdivî digire, wê bi fermana avakirina serîlêdana Java-yê dicivîne û dişîne qeyda Docker. Li vir em paşîn û pêşiyê berhev dikin, wêneyên Docker-ê digirin, ku em li kêleka xerîdar dixin depoyek. Ji bo birêvebirina wêneyên Docker em bikar tînin Pêveka Gradle.

Em guhertoyên wêneyên xwe bi guhertoya berdanê ya ku dê di Docker de were weşandin hevdeng dikin. Ji bo xebata bêkêmasî me çend verast kirin:

1. Konteynir di navbera jîngeha ceribandinê û hawîrdora hilberînê de ji nû ve nayên çêkirin. Me parametrizasyon çêkir da ku heman konteynir hem di hawîrdora ceribandinê de hem jî di hilberînê de bêyî ji nû ve avakirinê bi hemî mîhengan, guherbarên jîngehê û karûbaran re bixebite.

2. Ji bo nûvekirina serîlêdanek bi rêya Helm, divê hûn guhertoya wê diyar bikin. Em paşîn, pêşê ava dikin û serîlêdanê nûve dikin - ev sê peywirên cihêreng in, ji ber vê yekê girîng e ku hûn heman guhertoya serîlêdanê li her deverê bikar bînin. Ji bo vê peywirê, em daneyên ji dîroka Git bikar tînin, ji ber ku veavakirin û serîlêdanên koma meya K8S di heman depoya Git de ne.

Em guhertoya serîlêdanê ji encamên pêkanîna fermanê digirin
git describe --tags --abbrev=7.

4. Rakirina otomatîkî ya hemî guhertinên li hawîrdora ceribandinê (UAT)

Di vê skrîpta çêkirinê de gava paşîn ev e ku bixweber nûvekirina koma K8S-ê ye. Ev diqewime bi şertê ku tevaya serîlêdanê hatî çêkirin û hemî artifact li Docker Registry hatine weşandin. Piştî vê yekê, nûvekirina hawîrdora testê dest pê dike.

Nûvekirina komê bi karanîna dest pê kir Helm Update. Heke, wekî encam, tiştek li gorî planê neçû, Helm dê bixweber û serbixwe hemî guhertinên xwe paşde vegerîne. Karê wî ne hewce ye ku were kontrol kirin.

Em li gel meclîsê veavakirina koma K8S peyda dikin. Ji ber vê yekê, gava paşîn nûvekirina wê ye: configMaps, veqetandin, karûbar, nehênî û her mîhengên K8S yên din ên ku me guherandiye.

Helm dûv re nûvekirinek RollOut ya serîlêdanê bixwe di hawîrdora ceribandinê de dimeşîne. Berî ku serîlêdan ji bo hilberînê were şandin. Ev tê kirin da ku bikarhêner dikarin bi destan taybetmendiyên karsaziyê yên ku em di hawîrdora ceribandinê de biceribînin.

5. Veguheztina otomatîkî ya hemî guhertinên Prod

Ji bo ku hûn nûvekirinek li hawîrdora hilberînê bicîh bikin, hûn tenê hewce ne ku yek bişkojkê li GitLab bikirtînin - û konteynir tavilê ji hawîrdora hilberînê re têne radest kirin.

Heman serîlêdan dikare di hawîrdorên cihêreng de -ceribandin û hilberandin- bêyî nûavakirinê bixebite. Em bêyî ku di serîlêdanê de tiştek biguhezînin heman huneran bikar tînin, û em pîvanan li derve destnîşan dikin.

Parametrekirina maqûl a mîhengên serîlêdanê bi hawîrdora ku dê serîlêdan tê de were bicîh kirin ve girêdayî ye. Me hemî mîhengên jîngehê ji derve veguhestiye: her tişt bi navgîniya veavakirina K8S û Parametreyên Helm ve tê pîvandin. Dema ku Helm meclîsek li hawîrdora ceribandinê bicîh dike, mîhengên ceribandinê li ser wê têne sepandin, û mîhengên hilberê li hawîrdora hilberînê têne sepandin.

Tiştê herî dijwar ev bû ku meriv hemî karûbar û guhêrbarên bikar anîne ku bi hawîrdorê ve girêdayî ne parametre bike, û wan wergerîne guhêrbarên jîngehê û ravekirin-vesazkirina parametreyên jîngehê ji bo Helm.

Mîhengên serîlêdanê guherbarên jîngehê bikar tînin. Nirxên wan di konteyneran de bi karanîna konfigurasyona K8S, ku bi karanîna şablonên Go-yê tê şablon kirin, têne danîn. Mînakî, danîna guhêrbarek jîngehê li ser navê domainê dikare bi vî rengî were kirin:

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

.Values.global.env - ev guhêrbar navê jîngehê (prod, qonax, UAT) diparêze.
.Values.app.properties.app_external_domain – di vê guherbarê de me domaina xwestî di pelê .Values.yaml de danî

Dema ku serîlêdanek nûve dike, Helm pelek configmap.yaml ji şablonan diafirîne û nirxa APP_EXTERNAL_DOMAIN bi nirxa xwestî tije dike li gorî jîngeha ku nûvekirina serîlêdanê lê dest pê dike. Ev guhêrbar jixwe di konteynerê de hatiye danîn. Ew dikare ji serîlêdanê were gihîştin, ji ber vê yekê her hawîrdora serîlêdanê dê ji bo vê guhêrbar nirxek cûda hebe.

Di van demên dawî de, piştgiriya K8S di Spring Cloud de xuya bû, tevî xebata bi configMaps: Spring Cloud Kubernetes. Dema ku proje bi rengek çalak pêş dikeve û bi rengekî radîkal diguhere, em nikarin wê di hilberînê de bikar bînin. Lê em bi aktîvî rewşa wê dişopînin û wê di mîhengên DEV de bikar tînin. Gava ku ew stabîl bibe, em ê ji karanîna guhêrbarên hawîrdorê berbi wê ve biçin.

Tevahî

Ji ber vê yekê, Dabeşkirina Berdewam hatî mîheng kirin û kar dike. Hemî nûvekirin bi yek lêdana bişkojkê pêk tê. Radestkirina guhertinên li hawîrdora hilberê otomatîk e. Û, ya girîng, nûvekirin pergalê nahêle.

Pêkanîna me ya Damezrandina Berdewam li ser platforma xerîdar

Planên pêşerojê: koçberiya databasa otomatîk

Em li ser nûvekirina databasê û îhtîmala paşvexistina van guhertinan fikirîn. Beriya her tiştî, du guhertoyên cûda yên serîlêdanê di heman demê de têne xebitandin: ya kevin dimeşe, û ya nû ye. Û em ê ya kevin tenê gava ku em pê ewle bin ku guhertoya nû dixebite veqetînin. Divê koçkirina databasê bihêle ku hûn bi her du guhertoyên serîlêdanê re bixebitin.

Ji ber vê yekê, em nikarin tenê navê stûnê an daneyên din biguherînin. Lê em dikarin stûnek nû biafirînin, daneyên ji stûna kevin tê de kopî bikin û teşqeleyan binivîsin ku, dema ku daneyan nûve bikin, dê di heman demê de wê di stûnek din de kopî bikin û nûve bikin. Û piştî bicîhkirina serketî ya guhertoya nû ya serîlêdanê, piştî heyama piştevaniya piştî destpêkirinê, em ê karibin stûna kevn û tetika ku nepêwist bûye jêbirin.

Ger guhertoya nû ya serîlêdanê rast nexebite, em dikarin vegerin guhertoya berê, tevî guhertoya berê ya databasê. Bi kurtasî, guheztinên me dê bihêlin ku hûn bi çend guhertoyên serîlêdanê re hevdem bixebitin.

Em plan dikin ku bi riya karê K8S ve koça databasê otomatîk bikin, wê di pêvajoya CD-yê de yek bikin. Û em ê bê guman vê ezmûnê li ser Habré parve bikin.

Source: www.habr.com

Add a comment