Mmejuputa anyị nke ntinye aka na-aga n'ihu na ikpo okwu nke ndị ahịa

Anyị na True Engineering ewepụtala usoro maka ịnyefe mmelite na-aga n'ihu na sava ndị ahịa ma chọọ ịkekọrịta ahụmịhe a.

Iji malite, anyị mepụtara usoro ịntanetị maka onye ahịa wee tinye ya na ụyọkọ Kubernetes nke anyị. Ugbu a ngwọta anyị dị elu abanyela na ikpo okwu nke ndị ahịa, nke anyị edozila usoro ntinye aka na-aga n'ihu na-akpaghị aka. N'ihi nke a, anyị na-eme ka oge na-aga ahịa - nnyefe nke mgbanwe na gburugburu ngwaahịa.

N'isiokwu a, anyị ga-ekwu maka usoro niile nke usoro ntinye aka na-aga n'ihu (CD) ma ọ bụ nnyefe nke mmelite na ikpo okwu ndị ahịa:

  1. Kedu ka usoro a si malite?
  2. imekọrịta na ebe nchekwa Git nke ndị ahịa,
  3. mgbakọ nke backend na frontend,
  4. ntinye ngwa ngwa akpaka na gburugburu ule,
  5. ntinye akpaka na Prod.

Anyị ga-ekekọrịta nkọwa nhazi n'ụzọ.

Mmejuputa anyị nke ntinye aka na-aga n'ihu na ikpo okwu nke ndị ahịa

1. Malite CD

Mbunye na-aga n'ihu na-amalite site na onye nrụpụta na-akwali mgbanwe na ngalaba ntọhapụ nke ebe nchekwa Git anyị.

Ngwa anyị na-arụ ọrụ na ụlọ ọrụ microservice na-echekwa ihe niile mejupụtara ya n'otu ebe nchekwa. N'ihi nke a, a na-anakọta ma tinyekwa microservices niile, ọ bụrụgodị na otu n'ime ha agbanweela.

Anyị haziri ọrụ site na otu ebe nchekwa maka ọtụtụ ihe kpatara ya:

  • Mfe mmepe - ngwa a na-arụsi ọrụ ike, yabụ ị nwere ike iji koodu niile rụọ ọrụ ozugbo.
  • Otu ọkpọkọ CI / CD nke na-ekwe nkwa na ngwa ahụ dị ka otu usoro na-agafe ule niile ma nyefee ya na mpaghara mmepụta nke ndị ahịa.
  • Anyị na-ewepụ mgbagwoju anya na nsụgharị - anyị agaghị echekwa maapụ nke ụdị microservice ma kọwaa nhazi ya maka microservice ọ bụla na script Helm.

2. Mmekọrịta na ebe nchekwa Git nke koodu isi ndị ahịa

A na-emekọrịta mgbanwe na-akpaghị aka na ebe nchekwa Git nke ndị ahịa. N'ebe ahụ, a na-ahazi mgbakọ ngwa ahụ, nke a na-arụ ọrụ mgbe emelitere alaka ụlọ ọrụ, na ntinye aka na n'ihu. Usoro abụọ a sitere na gburugburu ha site na ebe nchekwa Git.

Anyị enweghị ike ịrụ ọrụ na ebe nchekwa ndị ahịa ozugbo n'ihi na anyị chọrọ gburugburu nke anyị maka mmepe na nnwale. Anyị na-eji ebe nchekwa Git anyị maka ebumnuche ndị a - emekọrịtara ya na ebe nchekwa Git ha. Ozugbo onye nrụpụta biputere gbanwere na ngalaba kwesịrị ekwesị nke ebe nchekwa anyị, GitLab na-ebugharị mgbanwe ndị a ozugbo na onye ahịa.

Mmejuputa anyị nke ntinye aka na-aga n'ihu na ikpo okwu nke ndị ahịa

Mgbe nke a gasịrị, ịkwesịrị ịme mgbakọ ahụ. Ọ nwere usoro dị iche iche: mgbakọ azụ na frontend, ule na nnyefe na mmepụta.

3. Ịchịkọta azụ azụ na ihu ihu

Iwulite azụ azụ na n'ihu bụ ọrụ abụọ yiri nke a na-arụ na sistemụ GitLab Runner. Nhazi mgbakọ mbụ ya dị n'otu ebe nchekwa.

Nkuzi maka ide edemede YAML maka iwulite na GitLab.

GitLab Runner na-ewepụ koodu ahụ site na ebe nchekwa achọrọ, chịkọta ya na iwu iwu ngwa ngwa Java wee ziga ya na ndekọ Docker. N'ebe a, anyị na-agbakọta azụ azụ na n'ihu, nweta ihe oyiyi Docker, nke anyị na-etinye n'ime ebe nchekwa n'akụkụ ndị ahịa. Iji jikwaa onyonyo Docker anyị na-eji Ngwa mgbakwunye gradle.

Anyị na-emekọrịta ụdị onyonyo anyị na ụdị mwepụta nke a ga-ebipụta na Docker. Maka ịrụ ọrụ nke ọma, anyị emeela ọtụtụ mgbanwe:

1. A naghị ewughachi akwa akwa n'etiti ebe nyocha na ebe mmepụta ihe. Anyị mere parametrizations ka otu akpa ahụ nwee ike ịrụ ọrụ na ntọala niile, mgbanwe gburugburu ebe obibi na ọrụ ma na gburugburu ule na mmepụta na-enweghị iwughachi.

2. Ka imelite ngwa site na Helm, ị ga-ezipụta ụdị ya. Anyị na-ewu azụ azụ, frontend na imelite ngwa - ndị a bụ ọrụ atọ dị iche iche, ya mere ọ dị mkpa iji otu ụdị ngwa ahụ ebe niile. Maka ọrụ a, anyị na-eji data sitere na akụkọ Git, ebe nhazi ụyọkọ K8S na ngwa anyị dị n'otu ebe nchekwa Git.

Anyị na-enweta ụdị ngwa ahụ site na nsonaazụ mmezu iwu
git describe --tags --abbrev=7.

4. Ntugharị akpaaka nke mgbanwe niile na gburugburu ule (UAT)

Nzọụkwụ na-esote n'ime edemede nrụpụta a bụ imelite ụyọkọ K8S ozugbo. Nke a na-eme ma ọ bụrụhaala na arụpụtara ngwa ahụ niile yana ebipụtala ihe niile na ndekọ Docker. Mgbe nke a gasịrị, mmelite gburugburu ule na-amalite.

A malitere iji ụyọkọ ahụ malite Mmelite Helm. Ọ bụrụ na, n'ihi nke a, ihe na-agaghị dị ka atụmatụ si dị, Helm ga-atụgharịghachi mgbanwe ya niile na-akpaghị aka. Ọ dịghị mkpa ka a na-achịkwa ọrụ ya.

Anyị na-enye nhazi ụyọkọ K8S yana mgbakọ ahụ. Ya mere, nzọụkwụ ọzọ bụ imelite ya: configMaps, ntinye ọrụ, ọrụ, ihe nzuzo na nhazi K8S ọ bụla ọzọ anyị gbanwere.

Helm na-emelite RollOut nke ngwa n'onwe ya na gburugburu ule. Tupu etinyere ngwa ahụ na mmepụta. Emere nke a ka ndị ọrụ wee jiri aka ha nwalee atụmatụ azụmaahịa anyị na-etinye na gburugburu ule.

5. Ntugharị akpaaka nke mgbanwe niile na Prod

Iji wepụta mmelite na gburugburu ebe a na-emepụta ihe, naanị ịkwesịrị pịa otu bọtịnụ na GitLab - a na-ebuga arịa ndị ahụ ozugbo na mpaghara mmepụta.

Otu ngwa ahụ nwere ike ịrụ ọrụ na gburugburu dị iche iche-nnwale na mmepụta-na-enweghị iwughachi. Anyị na-eji otu ihe ahụ eme ihe na-agbanweghị ihe ọ bụla na ngwa ahụ, anyị na-etinyekwa parampat n'èzí.

Nhazi ntọala ngwa na-agbanwe agbanwe dabere na gburugburu ebe a ga-eme ngwa ahụ. Anyị ebugharịla ntọala gburugburu ebe obibi na mpụga: a na-ahazi ihe niile site na nhazi K8S na paramita Helm. Mgbe Helm na-ebuga mgbakọ na gburugburu ule, a na-etinye ntọala ule na ya, na ntọala ngwaahịa na-etinye aka na gburugburu ebe mmepụta ihe.

Ihe kacha sie ike bụ ịkọwapụta ọrụ niile eji arụ ọrụ na mgbanwe ndị dabere na gburugburu ebe obibi, wee tụgharịa ha na mgbanwe gburugburu na nkọwa-nhazi nke paramita gburugburu maka Helm.

Ntọala ngwa na-eji mgbanwe gburugburu ebe obibi. A na-edobe ụkpụrụ ha na arịa site na iji K8S configmap, nke ejiri ndebiri Go. Dịka ọmụmaatụ, ịtọlite ​​mgbanwe gburugburu na ngalaba aha nwere ike ịme dịka nke a:

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

.Uru.global.env - mgbanwe a na-echekwa aha gburugburu (prod, ogbo, UAT).
.Values.app.properties.app_external_domain - na mgbanwe a, anyị na-edobe ngalaba achọrọ na faịlụ .Values.yaml

Mgbe ị na-emelite ngwa, Helm na-emepụta faịlụ configmap.yaml site na ndebiri wee jupụta uru APP_EXTERNAL_DOMAIN na uru achọrọ dabere na gburugburu ebe mmelite ngwa na-amalite. Edolarị mgbanwe a n'ime akpa. Enwere ike ịnweta ya site na ngwa ahụ, yabụ gburugburu ngwa ngwa ọ bụla ga-enwe uru dị iche maka mgbanwe a.

N'oge na-adịbeghị anya, nkwado K8S pụtara na Spring Cloud, gụnyere ịrụ ọrụ na configMaps: Mmiri Cloud Kubernetes. Ọ bụ ezie na ọrụ ahụ na-arụsi ọrụ ike na-emepe emepe ma na-agbanwe agbanwe, anyị enweghị ike iji ya na mmepụta. Mana anyị na-enyocha ọnọdụ ya nke ọma ma jiri ya na nhazi DEV. Ozugbo ọ kwụsiri ike, anyị ga-agbanwe site na iji mgbanwe gburugburu ebe obibi gaa na ya.

Ọnụ

Ya mere, a na-ahazi ọrụ na-aga n'ihu ma na-arụ ọrụ. Mmelite niile na-eji otu igodo igodo eme. Nnyefe mgbanwe na gburugburu ngwaahịa na-akpaghị aka. Na, nke dị mkpa, mmelite anaghị akwụsị usoro ahụ.

Mmejuputa anyị nke ntinye aka na-aga n'ihu na ikpo okwu nke ndị ahịa

Atụmatụ ọdịnihu: mbugharị nchekwa data akpaka

Anyị chere maka ịkwalite nchekwa data yana ohere nke ịtụgharị mgbanwe ndị a azụ. A sị ka e kwuwe, ụdị ngwa abụọ dị iche iche na-agba ọsọ n'otu oge: nke ochie na-agba ọsọ, nke ọhụrụ amalitela. Anyị ga-agbanyụkwa nke ochie naanị mgbe anyị ji n'aka na ụdị ọhụrụ ahụ na-arụ ọrụ. Mbugharị nchekwa data kwesịrị inye gị ohere iji ụdị ngwa abụọ ahụ rụọ ọrụ.

Ya mere, anyị enweghị ike ịgbanwe aha kọlụm ma ọ bụ data ndị ọzọ. Mana anyị nwere ike ịmepụta kọlụm ọhụrụ, detuo data sitere na kọlụm ochie n'ime ya wee dee ihe na-akpalite na, mgbe ị na-emelite data ahụ, ga-edobe n'otu oge ma melite ya na kọlụm ọzọ. Na mgbe ntinye nke ngwa ọhụrụ nke ngwa ahụ gachara nke ọma, mgbe oge nkwado nke post, anyị ga-enwe ike ihichapụ kọlụm ochie na ihe na-akpali akpali nke na-adịghị mkpa.

Ọ bụrụ na ụdị ngwa ọhụrụ ahụ anaghị arụ ọrụ nke ọma, anyị nwere ike ịlaghachi na ụdị nke gara aga, gụnyere ụdị nchekwa data gara aga. Na nkenke, mgbanwe anyị ga-enye gị ohere ịrụ ọrụ n'otu oge na ọtụtụ ụdị ngwa.

Anyị na-eme atụmatụ imeghari mbugharị nchekwa data site na ọrụ K8S, na-etinye ya na usoro CD. Anyị ga-ekekọrịta ahụmịhe a na Habré.

isi: www.habr.com

Tinye a comment