Peb qhov kev siv ntawm Nruam Deployment ntawm tus neeg siv khoom lub platform

Peb ntawm True Engineering tau teeb tsa cov txheej txheem rau kev xa khoom txuas ntxiv mus rau cov neeg siv khoom servers thiab xav qhia qhov kev paub no.

Yuav pib nrog, peb tau tsim ib qho online system rau cov neeg siv khoom thiab siv nws hauv peb tus kheej Kubernetes pawg. Tam sim no peb cov kev daws teeb meem siab tau hloov mus rau cov neeg siv khoom lub platform, uas peb tau teeb tsa cov txheej txheem kev xa mus tas li tsis siv neeg. Ua tsaug rau qhov no, peb tau nrawm lub sijhawm-rau-kev ua lag luam - kev xa khoom ntawm kev hloov pauv rau cov khoom lag luam ib puag ncig.

Hauv tsab xov xwm no peb yuav tham txog tag nrho cov theem ntawm Kev Tshaj Tawm Ntxiv (CD) txheej txheem lossis xa cov hloov tshiab rau cov neeg siv khoom lub platform:

  1. Cov txheej txheem no pib li cas?
  2. synchronization nrog tus neeg siv khoom Git repository,
  3. kev sib dhos ntawm backend thiab frontend,
  4. tsis siv neeg daim ntawv thov xa mus rau hauv qhov chaw sim,
  5. tsis siv neeg xa mus rau Prod.

Peb mam li qhia cov ntsiab lus teeb tsa ntawm txoj kev.

Peb qhov kev siv ntawm Nruam Deployment ntawm tus neeg siv khoom lub platform

1. Pib CD

Kev xa mus tas li pib nrog tus tsim tawm thawb hloov pauv mus rau kev tso tawm ceg ntawm peb qhov chaw khaws cia Git.

Peb daim ntawv thov khiav ntawm microservice architecture thiab tag nrho nws cov khoom raug khaws cia rau hauv ib lub chaw cia khoom. Ua tsaug rau qhov no, tag nrho cov microservices tau sau thiab teeb tsa, txawm tias ib qho ntawm lawv tau hloov pauv.

Peb tau teeb tsa ua haujlwm los ntawm ib lub chaw cia khoom rau ntau yam laj thawj:

  • Yooj yim ntawm kev txhim kho - daim ntawv thov yog nquag txhim kho, yog li koj tuaj yeem ua haujlwm nrog txhua tus lej ib zaug.
  • Ib qho CI / CD pipeline uas lav tias daim ntawv thov raws li ib qho kev xeem dhau txhua qhov kev xeem thiab xa mus rau cov neeg siv khoom qhov chaw tsim khoom.
  • Peb tshem tawm qhov tsis meej pem hauv versions - peb tsis tas yuav khaws ib daim ntawv qhia ntawm microservice versions thiab piav qhia nws qhov kev teeb tsa rau txhua microservice hauv Helm scripts.

2. Synchronization nrog Git repository ntawm tus neeg siv khoom qhov chaws

Cov kev hloov pauv tau raug synchronized nrog tus neeg siv khoom Git repository. Muaj cov ntawv thov sib dhos tau teeb tsa, uas tau pib tom qab hloov kho cov ceg, thiab xa mus rau qhov txuas ntxiv. Ob qhov txheej txheem pib hauv lawv ib puag ncig los ntawm Git repository.

Peb tsis tuaj yeem ua haujlwm nrog tus neeg siv khoom lub chaw cia khoom ncaj qha vim peb xav tau peb tus kheej ib puag ncig rau kev txhim kho thiab kev sim. Peb siv peb Git repository rau cov hom phiaj no - nws yog synchronized nrog lawv Git repository. Thaum tus tsim tawm tshaj tawm hloov pauv mus rau cov ceg tsim nyog ntawm peb lub chaw cia khoom, GitLab tam sim ntawd thawb cov kev hloov pauv no rau cov neeg siv khoom.

Peb qhov kev siv ntawm Nruam Deployment ntawm tus neeg siv khoom lub platform

Tom qab no koj yuav tsum tau ua lub rooj sib txoos. Nws muaj ob peb theem: backend thiab frontend sib dhos, kuaj thiab xa mus rau ntau lawm.

3. Sib sau ua ke lub backend thiab frontend

Tsim lub backend thiab frontend yog ob txoj haujlwm sib luag uas tau ua hauv GitLab Runner system. Nws thawj kev sib dhos configuration yog nyob rau hauv tib lub repository.

Kev qhia sau ntawv YAML rau kev tsim hauv GitLab.

GitLab Runner siv cov cai los ntawm qhov chaw cia khoom xav tau, sib sau ua ke nrog Java daim ntawv thov tsim cov lus txib thiab xa mus rau Docker npe. Ntawm no peb sib sau ua ke lub backend thiab frontend, tau Docker dluab, uas peb muab tso rau hauv lub repository ntawm tus neeg siv khoom sab. Txhawm rau tswj cov duab Docker peb siv Gradle plugin.

Peb synchronize cov versions ntawm peb cov dluab nrog qhov tso tawm version uas yuav tsum luam tawm nyob rau hauv Docker. Rau kev ua haujlwm du peb tau ua ntau yam kev hloov kho:

1. Cov thawv ntim tsis yog rov tsim dua ntawm qhov chaw sim thiab qhov chaw tsim khoom. Peb tau ua parametrizations kom tib lub thawv tuaj yeem ua haujlwm nrog txhua qhov chaw, kev hloov pauv ib puag ncig thiab kev pabcuam ob qho tib si hauv qhov chaw sim thiab hauv kev tsim khoom yam tsis muaj kev tsim kho dua tshiab.

2. Txhawm rau hloov kho daim ntawv thov ntawm Helm, koj yuav tsum qhia nws cov version. Peb tsim lub backend, frontend thiab hloov kho daim ntawv thov - cov no yog peb txoj haujlwm sib txawv, yog li nws tseem ceeb heev uas yuav tsum siv tib lub version ntawm daim ntawv thov txhua qhov chaw. Rau txoj haujlwm no, peb siv cov ntaub ntawv los ntawm Git keeb kwm, txij li peb cov K8S pawg teeb tsa thiab cov ntawv thov nyob hauv tib qhov chaw khaws cia Git.

Peb tau txais daim ntawv thov version los ntawm cov lus txib ua tiav
git describe --tags --abbrev=7.

4. Tsis siv neeg xa khoom ntawm txhua qhov kev hloov pauv mus rau qhov chaw xeem (UAT)

Cov kauj ruam tom ntej hauv tsab ntawv tsim no yog kom hloov kho K8S pawg. Qhov no tshwm sim yog tias tag nrho daim ntawv thov tau tsim thiab tag nrho cov khoom qub tau muab luam tawm rau Docker Registry. Tom qab qhov no, qhov kev xeem ib puag ncig hloov tshiab pib.

Kev hloov tshiab pawg tau pib siv Helm Update. Yog li ntawd, ib yam dab tsi tsis mus raws li txoj kev npaj, Helm yuav txiav thiab nws tus kheej rov qab tag nrho nws cov kev hloov pauv. Nws txoj hauj lwm tsis tas yuav tswj tau.

Peb muab K8S pawg teeb tsa nrog rau kev sib dhos. Yog li ntawd, cov kauj ruam tom ntej yog hloov kho nws: configMaps, kev xa tawm, kev pabcuam, zais cia thiab lwm yam K8S teeb tsa uas peb tau hloov pauv.

Helm ces khiav RollOut hloov tshiab ntawm daim ntawv thov nws tus kheej hauv qhov chaw sim. Ua ntej daim ntawv thov yog deployed rau ntau lawm. Qhov no yog ua kom cov neeg siv tau manually sim cov yam ntxwv ntawm kev lag luam uas peb muab tso rau hauv qhov chaw sim.

5. Tsis siv neeg xa khoom ntawm txhua qhov kev hloov pauv rau Prod

Txhawm rau xa qhov hloov tshiab rau ib puag ncig tsim khoom, koj tsuas yog yuav tsum nyem ib lub pob hauv GitLab - thiab cov ntim khoom tam sim ntawd xa mus rau qhov chaw tsim khoom.

Tib daim ntawv thov tuaj yeem ua haujlwm nyob rau hauv ib puag ncig sib txawv - sim thiab tsim khoom - yam tsis muaj kev tsim kho dua tshiab. Peb siv cov khoom qub qub yam tsis hloov pauv dab tsi hauv daim ntawv thov, thiab peb teeb tsa cov kev txwv sab nraud.

Saj zawg zog parameterization ntawm daim ntawv thov kev teeb tsa nyob ntawm ib puag ncig uas yuav ua tiav daim ntawv thov. Peb tau hloov tag nrho cov chaw ib puag ncig sab nraud: txhua yam yog parameterized los ntawm K8S teeb tsa thiab Helm tsis. Thaum Helm xa ib qho kev sib dhos mus rau qhov chaw sim, qhov ntsuas qhov ntsuas tau siv rau nws, thiab cov khoom teeb tsa tau siv rau qhov chaw tsim khoom.

Qhov nyuaj tshaj plaws yog parameterize tag nrho cov kev pabcuam siv thiab hloov pauv uas nyob ntawm ib puag ncig, thiab txhais lawv mus rau hauv ib puag ncig hloov pauv thiab piav qhia-kev teeb tsa ntawm ib puag ncig tsis muaj rau Helm.

Kev teeb tsa daim ntawv thov siv ib puag ncig hloov pauv. Lawv cov txiaj ntsig tau teeb tsa hauv cov thawv uas siv K8S configmap, uas yog templated siv Go templates. Piv txwv li, teeb tsa ib puag ncig hloov pauv mus rau lub npe sau tuaj yeem ua tau zoo li no:

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

.Values.global.env - qhov sib txawv no khaws cov npe ntawm ib puag ncig (prod, theem, UAT).
.Values.app.properties.app_external_domain - hauv qhov sib txawv no peb teeb tsa qhov xav tau sau hauv cov ntaub ntawv .Values.yaml

Thaum hloov kho ib daim ntawv thov, Helm tsim cov ntaub ntawv configmap.yaml los ntawm cov qauv thiab sau tus nqi APP_EXTERNAL_DOMAIN nrog tus nqi xav tau nyob ntawm ib puag ncig uas qhov kev hloov tshiab pib pib. Qhov kev hloov pauv no twb tau teeb tsa hauv lub thawv. Nws tuaj yeem nkag tau los ntawm daim ntawv thov, yog li txhua daim ntawv thov ib puag ncig yuav muaj tus nqi sib txawv rau qhov sib txawv no.

Tsis ntev los no, K8S kev txhawb nqa tau tshwm sim hauv Spring Cloud, suav nrog kev ua haujlwm nrog configMaps: Spring Cloud Kubernetes. Thaum lub phiaj xwm tseem tab tom txhim kho thiab hloov pauv radically, peb tsis tuaj yeem siv nws hauv kev tsim khoom. Tab sis peb nquag saib xyuas nws tus mob thiab siv nws hauv DEV teeb tsa. Thaum nws stabilizes, peb yuav hloov los ntawm kev siv ib puag ncig variables rau nws.

Tag nrho

Yog li, Nruam Deployment yog configured thiab ua hauj lwm. Txhua qhov hloov tshiab tshwm sim nrog ib qho keystroke. Kev xa cov kev hloov pauv rau cov khoom ib puag ncig yog tsis siv neeg. Thiab, qhov tseem ceeb, kev hloov tshiab tsis txwv lub kaw lus.

Peb qhov kev siv ntawm Nruam Deployment ntawm tus neeg siv khoom lub platform

Cov phiaj xwm yav tom ntej: tsis siv neeg database migration

Peb tau xav txog kev kho dua tshiab ntawm cov ntaub ntawv thiab muaj peev xwm thim rov qab cov kev hloov pauv no. Tom qab tag nrho, ob qhov sib txawv ntawm daim ntawv thov tau khiav tib lub sijhawm: qhov qub khiav, thiab qhov tshiab tau nce. Thiab peb yuav tua tus qub tsuas yog thaum peb paub tseeb tias qhov tshiab version ua haujlwm. Cov ntaub ntawv tsiv teb tsaws chaw yuav tsum tso cai rau koj ua haujlwm nrog ob qho tib si ntawm daim ntawv thov.

Yog li ntawd, peb tsis tuaj yeem hloov lub npe kab lossis lwm cov ntaub ntawv. Tab sis peb tuaj yeem tsim ib kab tshiab, luam cov ntaub ntawv los ntawm kab qub rau hauv nws thiab sau cov cim uas, thaum hloov kho cov ntaub ntawv, yuav ib txhij luam thiab hloov kho rau lwm kab. Thiab tom qab ua tiav kev xa tawm ntawm daim ntawv thov tshiab, tom qab lub sijhawm xa tawm kev txhawb nqa, peb yuav muaj peev xwm tshem tawm cov qub kem thiab qhov cuam tshuam uas tsis tsim nyog.

Yog tias qhov tshiab version ntawm daim ntawv thov tsis ua haujlwm raug, peb tuaj yeem thim rov qab mus rau yav dhau los version, suav nrog cov ntawv dhau los ntawm cov ntaub ntawv. Hauv luv luv, peb cov kev hloov pauv yuav tso cai rau koj ua haujlwm ib txhij nrog ntau lub versions ntawm daim ntawv thov.

Peb npaj yuav automate database migration ntawm K8S txoj hauj lwm, integrating nws mus rau hauv cov txheej txheem CD. Thiab peb yuav twv yuav raug hu qhov kev paub no ntawm Habre.

Tau qhov twg los: www.hab.com

Ntxiv ib saib