Ts'ebetsong ea rona ea Continuous Deployment sethaleng sa moreki

Rona ho True Engineering re thehile mokhoa oa ho fana ka lintlafatso ho li-server tsa bareki mme re batla ho arolelana boiphihlelo bona.

Taba ea pele, re thehile sistimi ea inthanete bakeng sa moreki mme ra e sebelisa sehlopheng sa rona sa Kubernetes. Hona joale tharollo ea rona ea mojaro o phahameng e se e falletse sethaleng sa moreki, seo re se thehileng ts'ebetso e ikemetseng ea Continuous Deployment. Ka lebaka la sena, re ile ra potlakisa nako ea ho ea 'marakeng - ho fana ka liphetoho tikolohong ea sehlahisoa.

Sengoliloeng sena re tla bua ka methati eohle ea Ts'ebetso e Tsoelang Pele ea Ts'ebetso (CD) kapa ho fana ka lintlafatso sethaleng sa moreki:

  1. Mokhoa ona o qala joang?
  2. ho hokahanya le polokelo ea Git ea moreki,
  3. kopano ea backend le frontend,
  4. ho kenya ts'ebeliso ea othomathike sebakeng sa liteko,
  5. thomello ea othomathiki ho Prod.

Re tla arolelana lintlha tsa ho seta ha re ntse re le tseleng.

Ts'ebetsong ea rona ea Continuous Deployment sethaleng sa moreki

1. Qala CD

Tšebeliso e Tsoelang Pele e qala ka mohlahlami a sutumelletsa liphetoho lekaleng la tokollo la polokelo ea rona ea Git.

Sesebelisoa sa rona se sebetsa ho meralo ea microservice mme likarolo tsohle tsa eona li bolokiloe polokelong e le 'ngoe. Ka lebaka la sena, li-microservices tsohle li bokelloa ebe li kenngoa, le haeba e 'ngoe ea tsona e fetohile.

Re hlophisitse mosebetsi sebakeng se le seng sa polokelo ka mabaka a 'maloa:

  • Bonolo ba nts'etsopele - ts'ebeliso e ntse e tsoela pele ka mafolofolo, kahoo o ka sebetsa le khoutu eohle hang-hang.
  • Pipe e le 'ngoe ea CI / CD e tiisang hore kopo e le tsamaiso e le' ngoe e feta liteko tsohle 'me e isoa tikolohong ea tlhahiso ea moreki.
  • Re felisa pherekano liphetolelong - ha rea ​​​​tlameha ho boloka 'mapa oa liphetolelo tsa microservice le ho hlalosa tlhophiso ea eona bakeng sa microservice e' ngoe le e 'ngoe ho mangolo a Helm.

2. Ho amahanya le polokelo ea Git ea khoutu ea mohloli oa moreki

Liphetoho tse entsoeng li hokahanngoa ka bo eona le polokelo ea Git ea moreki. Ho na le kopano ea kopo e hlophisitsoeng, e qalisoang ka mor'a ho ntlafatsa lekala, le ho romelloa ho tsoelapele. Mekhoa ena ka bobeli e tsoa tikolohong ea bona ho tsoa sebakeng sa polokelo ea Git.

Re ke ke ra sebetsa le polokelo ea bareki ka kotloloho hobane re hloka tikoloho ea rona bakeng sa nts'etsopele le liteko. Re sebelisa polokelo ea rona ea Git molemong oa sena - e hokahantsoe le polokelo ea bona ea Git. Hang ha motho ea ntlafatsang a ngola a fetohela lekaleng le loketseng la polokelo ea rona, GitLab hang-hang e sutumelletsa liphetoho tsena ho moreki.

Ts'ebetsong ea rona ea Continuous Deployment sethaleng sa moreki

Ka mor'a sena, u lokela ho etsa kopano. E na le mekhahlelo e 'maloa: kopano ea backend le frontend, teko le ho fana ka tlhahiso.

3. Ho bokella mokokotlo le mokokotlo

Ho aha bokamorao le se ka pele ke mesebetsi e 'meli e bapileng e etsoang ho sistimi ea GitLab Runner. Tlhophiso ea eona ea pele ea kopano e fumaneha sebakeng se le seng sa polokelo.

Thupelo ea ho ngola mongolo oa YAML oa ho aha GitLab.

GitLab Runner e nka khoutu ho tsoa sebakeng sa polokelo e hlokahalang, e e kopanya le taelo ea kaho ea kopo ea Java ebe e e romella ho ngoliso ea Docker. Mona re bokella mokokotlo le li-frontend, re fumana litšoantšo tsa Docker, tseo re li kenyang sebakeng sa polokelo ka lehlakoreng la bareki. Ho laola litšoantšo tsa Docker tseo re li sebelisang Gradle plugin.

Re hokahanya mefuta ea litšoantšo tsa rona le mofuta oa tokollo o tla phatlalatsoa ho Docker. Bakeng sa ts'ebetso e bonolo, re entse liphetoho tse 'maloa:

1. Lijana ha li hahuoe bocha lipakeng tsa tikoloho ea liteko le tikoloho ea tlhahiso. Re entse li-parametrizations e le hore setshelo se le seng se ka sebetsa le litlhophiso tsohle, mefuta e fapaneng ea tikoloho le lits'ebeletso maemong a liteko le tlhahiso ntle le ho aha bocha.

2. Ho nchafatsa ts'ebeliso ka Helm, o tlameha ho hlakisa mofuta oa eona. Re haha ​​​​backend, frontend le ho ntlafatsa ts'ebeliso - tsena ke mesebetsi e meraro e fapaneng, kahoo ho bohlokoa ho sebelisa mofuta o tšoanang oa kopo hohle. Bakeng sa mosebetsi ona, re sebelisa lintlha tse tsoang nalaneng ea Git, kaha tlhophiso ea sehlopha sa rona sa K8S le lits'ebetso li sebakeng se le seng sa Git.

Re fumana mofuta oa kopo ho tsoa liphethong tsa ts'ebetso ea taelo
git describe --tags --abbrev=7.

4. Ho tsamaisoa ka boiketsetso ha liphetoho tsohle tikolohong ea liteko (UAT)

Mohato o latelang oa mongolo ona oa kaho ke ho nchafatsa sehlopha sa K8S ka bohona. Sena se etsahala ha feela kopo eohle e se e hahiloe mme lintho tsohle tsa khale li phatlalalitsoe ho Registry ea Docker. Kamora sena, ntlafatso ea tikoloho ea liteko e qala.

Ntlafatso ea sehlopha e qala ho sebelisoa Helm Update. Haeba, ka lebaka leo, ho na le ntho e sa tsamaeeng ho ea ka morero, Helm e tla iketsetsa liphetoho tsohle tsa eona ka boithaopo. Mosebetsi oa hae ha o hloke ho laoloa.

Re fana ka tlhophiso ea sehlopha sa K8S hammoho le kopano. Ka hona, mohato o latelang ke ho e ntlafatsa: configMaps, deployments, services, secrets le tlhophiso efe kapa efe ea K8S eo re e fetotseng.

Helm ebe e tsamaisa ntlafatso ea RollOut ea ts'ebeliso ka boeona tikolohong ea teko. Pele kopo e romelloa tlhahisong. Sena se etsoa e le hore basebelisi ba ka leka likarolo tsa khoebo tseo re li kenyang tikolohong ea liteko.

5. Ho tsamaisoa ka boiketsetso ha liphetoho tsohle ho Prod

Ho kenya ntjhafatso tikolohong ya tlhahiso, o hloka feela ho tobetsa konopo e le 'ngoe ho GitLab - mme lijana li tlisoa tikolohong ea tlhahiso hanghang.

Tšebeliso e tšoanang e ka sebetsa libakeng tse fapaneng-teko le tlhahiso-ntle le ho tsosolosoa. Re sebelisa li-artifact tse tšoanang ntle le ho fetola ntho leha e le efe ts'ebetsong, 'me re beha litekanyetso ka ntle.

Flexible parameterization ea litlhophiso tsa kopo e ipapisitse le tikoloho eo kopo e tla kengoa ho eona. Re tsamaisitse litlhophiso tsohle tsa tikoloho kantle: ntho e 'ngoe le e' ngoe e behiloe ka parameter ka tlhophiso ea K8S le liparamente tsa Helm. Ha Helm e tsamaisa kopano tikolohong ea liteko, litlhophiso tsa liteko li sebelisoa ho eona, 'me litlhophiso tsa sehlahisoa li sebelisoa tikolohong ea tlhahiso.

Ntho e thata ka ho fetisisa e ne e le ho etsa parameterize lits'ebeletso tsohle tse sebelisitsoeng le mefuta-futa e itšetlehileng ka tikoloho, le ho li fetolela ka mefuta-futa ea tikoloho le litlhaloso-litlhophiso tsa maemo a tikoloho bakeng sa Helm.

Litlhophiso tsa ts'ebeliso li sebelisa maemo a fapaneng a tikoloho. Litekanyetso tsa bona li behiloe ka har'a lijana ho sebelisoa configmap ea K8S, e etselitsoeng ho sebelisoa litempele tsa Go. Ka mohlala, ho beha phetoho ea tikoloho ho lebitso la domain ho ka etsoa ka tsela ena:

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

.Values.global.env - phetoho ena e boloka lebitso la tikoloho (prod, stage, UAT).
.Values.app.properties.app_external_domain – ka ho feto-fetoha hona re seta sebaka se lakatsehang faeleng ea .Values.yaml

Ha e nchafatsa ts'ebeliso, Helm e etsa faele ea configmap.yaml ho tsoa litempeleng ebe e tlatsa boleng ba APP_EXTERNAL_DOMAIN ka boleng bo lakatsehang ho latela tikoloho eo ntlafatso ea kopo e qalang ho eona. Phapang ena e se e behiloe ka har'a setshelo. E ka fumanoa ho tsoa ho kopo, kahoo tikoloho e 'ngoe le e' ngoe ea kopo e tla ba le boleng bo fapaneng bakeng sa phetoho ena.

Haufinyane tjena, tšehetso ea K8S e hlahile ho Cloud Cloud, ho kenyelletsa le mosebetsi le configMaps: Spring Cloud Kubernetes. Le hoja morero ona o ntse o tsoela pele le ho fetoha haholo, re ke ke ra o sebelisa tlhahisong. Empa re beha leihlo boemo ba eona ka mafolofolo mme re e sebelisa ho meralo ea DEV. Hang ha e tsitsa, re tla tloha ho sebelisa mefuta-futa ea tikoloho ho ea ho eona.

Kakaretso

Kahoo, Tšebeliso e Tsoelang Pele e hlophisitsoe ebile e sebetsa. Lintlafatso tsohle li etsahala ka konopo e le 'ngoe. Phepelo ea liphetoho tikolohong ea sehlahisoa e ikemela. 'Me, ho bohlokoa, lintlafatso ha li emise sistimi.

Ts'ebetsong ea rona ea Continuous Deployment sethaleng sa moreki

Merero ea kamoso: ho falla ha database ka boiketsetso

Re nahanne ka ho ntlafatsa database le monyetla oa ho khutlisa liphetoho tsena. Ntle le moo, liphetolelo tse peli tse fapaneng tsa ts'ebeliso li sebetsa ka nako e le ngoe: ea khale e ntse e sebetsa, 'me e ncha e ntse e tsoela pele. Mme re tla tima ea khale ha feela re na le bonnete ba hore mofuta o mocha oa sebetsa. Ho falla ha database ho lokela ho u lumella ho sebetsa le mefuta e 'meli ea ts'ebeliso.

Ka hona, re ke ke ra fetola lebitso la kholomo kapa lintlha tse ling feela. Empa re ka theha kholumo e ncha, ra kopitsa data ho tsoa kholomong ea khale ho eona ebe re ngola lintho tse susumetsang hore, ha u nchafatsa data, ka nako e le 'ngoe li li kopitse le ho li ntlafatsa kholomong e' ngoe. 'Me ka mor'a ho tsamaisoa ka katleho ha phetolelo e ncha ea kopo, ka mor'a nako ea ts'ehetso ea poso, re tla khona ho hlakola kholomo ea khale le sesosa se seng se sa hlokahale.

Haeba mofuta o mocha oa ts'ebeliso o sa sebetse ka nepo, re ka khutlela mofuteng o fetileng, ho kenyelletsa le mofuta o fetileng oa database. Ka bokhutšoanyane, liphetoho tsa rona li tla u lumella ho sebetsa ka nako e le 'ngoe le mefuta e mengata ea ts'ebeliso.

Re rera ho tsamaisa ho falla ha database ka mosebetsi oa K8S, ho e kenyelletsa tšebetsong ea CD. 'Me ka sebele re tla arolelana phihlelo ena ho Habré.

Source: www.habr.com

Eketsa ka tlhaloso