Ny fampiharana ny Continuous Deployment amin'ny sehatra mpanjifa

Izahay ao amin'ny True Engineering dia nanangana dingana ho an'ny fandefasana fanavaozana tsy tapaka amin'ny mpizara mpanjifa ary te hizara ity traikefa ity.

Hanombohana, namolavola rafitra an-tserasera ho an'ny mpanjifa izahay ary nametraka izany tao amin'ny cluster Kubernetes manokana. Ankehitriny ny vahaolana avo lenta dia nifindra tany amin'ny sehatry ny mpanjifa, izay nametrahanay ny fizotry ny fandefasana mitohy mandeha ho azy. Noho izany, nanafaingana ny fotoana-tsena - ny fanaterana ny fiovana eo amin'ny tontolo iainana vokatra.

Amin'ity lahatsoratra ity dia hiresaka momba ny dingana rehetra amin'ny fizotran'ny Continuous Deployment (CD) na fanaterana fanavaozana amin'ny sehatry ny mpanjifa isika:

  1. Ahoana no fiaingan'ity dingana ity?
  2. fampifanarahana amin'ny tahiry Git mpanjifa,
  3. fivorian'ny backend sy frontend,
  4. fametrahana fampiharana mandeha ho azy amin'ny tontolo fitsapana,
  5. fametrahana mandeha ho azy amin'ny Prod.

Hizara ny antsipirian'ny fanamboarana izahay eny an-dalana.

Ny fampiharana ny Continuous Deployment amin'ny sehatra mpanjifa

1. Manomboka CD

Ny fandefasana mitohy dia manomboka amin'ny alΓ lan'ny mpamorona manosika ny fanovana amin'ny sampana famoahana ny tahiry Git.

Ny fampiharana anay dia mandeha amin'ny maritrano microservice ary ny singa rehetra ao aminy dia voatahiry ao anaty tahiry iray. Noho izany, angonina sy apetraka ny microservices rehetra, na dia niova aza ny iray tamin'izy ireo.

Nandamina asa tamin'ny alalan'ny tahiry iray izahay noho ny antony maro:

  • Mora ny fampandrosoana - ny fampiharana dia mivoatra mavitrika, mba hahafahanao miasa miaraka amin'ny code rehetra indray mandeha.
  • Fantsona CI/CD tokana izay miantoka fa ny fampiharana amin'ny maha-rafitra tokana dia mandalo fitsapana rehetra ary atolotra amin'ny tontolon'ny famokarana mpanjifa.
  • Esorinay ny fisafotofotoana amin'ny dikan-teny - tsy mila mitahiry sarintany misy dikan-teny microservice izahay ary mamaritra ny firafitry ny microservice tsirairay ao amin'ny script Helm.

2. Fandrindrana miaraka amin'ny tahiry Git ny kaody loharanon'ny mpanjifa

Ny fanovana natao dia atambatra ho azy miaraka amin'ny tahiry Git an'ny mpanjifa. Any no amboarina ny fivoriamben'ny fampiharana, izay atomboka aorian'ny fanavaozana ny sampana, ary ny fametrahana amin'ny fitohizana. Ireo dingana roa ireo dia avy amin'ny tontolo iainany avy amin'ny tahiry Git.

Tsy afaka miara-miasa mivantana amin'ny tahirim-bolan'ny mpanjifa izahay satria mila ny tontolo iainanay manokana ho an'ny fampandrosoana sy ny fitiliana. Mampiasa ny tahiry Git izahay ho an'ireo tanjona ireo - miaraka amin'ny tahiry Git azy ireo. Raha vantany vao misy mpandrindra mandefa fanovana amin'ny sampana mety amin'ny fitahirizanay, ny GitLab dia manosika avy hatrany ireo fiovana ireo amin'ny mpanjifa.

Ny fampiharana ny Continuous Deployment amin'ny sehatra mpanjifa

Aorian'izany dia mila manao ny fivoriambe ianao. Misy dingana maromaro izy io: fivorian'ny backend sy frontend, fitsapana ary fandefasana amin'ny famokarana.

3. Manangona ny backend sy frontend

Ny fananganana ny backend sy frontend dia asa roa mifanitsy izay atao amin'ny rafitra GitLab Runner. Ny firafitry ny fivoriambe tany am-boalohany dia hita ao amin'ny tahiry mitovy.

Tutorial amin'ny fanoratana script YAML amin'ny fananganana ao amin'ny GitLab.

GitLab Runner dia maka ny kaody avy amin'ny tahiry ilaina, manangona azy miaraka amin'ny baikon'ny fananganana fampiharana Java ary mandefa azy any amin'ny rejisitra Docker. Eto izahay dia manangona ny backend sy frontend, mahazo sary Docker, izay apetrakay ao anaty tahiry eo amin'ny lafiny mpanjifa. Mba hitantanana sary Docker dia ampiasainay Gradle plugin.

Ampifandraiso amin'ny dikan-tsarimihetsika amin'ny famoahana izay havoaka ao amin'ny Docker izahay. Ho an'ny fampandehanana milamina dia nanao fanitsiana maromaro izahay:

1. Ny kaontenera dia tsy amboarina eo anelanelan'ny tontolon'ny fitsapana sy ny tontolo famokarana. Nanao parametrizations izahay mba hahafahan'ilay kaontenera mitovy miasa amin'ny toe-javatra rehetra, ny fari-piainan'ny tontolo iainana ary ny serivisy na amin'ny tontolo fitsapana na amin'ny famokarana tsy misy fanamboarana.

2. Raha te hanavao fampiharana amin'ny alalan'ny Helm ianao dia tsy maintsy mamaritra ny dikan-ny. Manangana ny backend, frontend ary manavao ny fampiharana izahay - asa telo samihafa ireo, noho izany dia zava-dehibe ny fampiasana ny dikan-teny mitovy amin'ny fampiharana na aiza na aiza. Ho an'ity asa ity dia mampiasa angona avy amin'ny tantaran'ny Git izahay, satria ao amin'ny fitahirizana Git mitovy ny firafitry ny kluster K8S sy ny fampiharana anay.

Mahazo ny kinova fampiharana avy amin'ny valin'ny famonoana baiko izahay
git describe --tags --abbrev=7.

4. Fametrahana mandeha ho azy ny fanovana rehetra amin'ny tontolo fitsapana (UAT)

Ny dingana manaraka amin'ity script fananganana ity dia ny fanavaozana ho azy ny cluster K8S. Mitranga izany raha toa ka namboarina ny fampiharana manontolo ary navoaka tao amin'ny Docker Registry ny artifacts rehetra. Aorian'izany dia manomboka ny fanavaozana tontolo iainana fitsapana.

Manomboka mampiasa ny fanavaozana cluster Helm Update. Raha, vokatr'izany, misy zavatra tsy nandeha araka ny drafitra, Helm dia ho azy sy tsy miankina hanodina ny fiovana rehetra. Tsy mila fehezina ny asany.

Izahay dia mamatsy ny K8S cluster configuration miaraka amin'ny fivoriambe. Noho izany, ny dingana manaraka dia ny manavao azy: configMaps, deployments, services, secrets ary izay hafa K8S configurations izay novanay.

Helm avy eo dia manao fanavaozana RollOut amin'ny fampiharana ao amin'ny tontolo fitsapana. Alohan'ny handefasana ny fampiharana amin'ny famokarana. Natao izany mba ahafahan'ny mpampiasa mitsapa amin'ny tanana ireo endri-javatra fandraharahana izay apetrakay ao amin'ny tontolo andrana.

5. Fametrahana ho azy ny fanovana rehetra amin'ny Prod

Mba hametrahana fanavaozana amin'ny tontolon'ny famokarana dia mila manindry bokotra iray ao amin'ny GitLab ianao - ary alefa any amin'ny tontolo famokarana avy hatrany ny kaontenera.

Ny fampiharana mitovy dia afaka miasa amin'ny tontolo samihafa β€” fitsapana sy famokarana β€” tsy misy fanamboarana. Mampiasa artifacts mitovy izahay nefa tsy manova na inona na inona ao amin'ny fampiharana, ary mametraka ny mari-pamantarana ivelany.

Miankina amin'ny tontolo ametrahana ny fampiharana ny fanoritsoritana flexible amin'ny firafitry ny fampiharana. Nafindranay tany ivelany ny firafitry ny tontolo iainana rehetra: ny zava-drehetra dia voafantina amin'ny alΓ lan'ny fanamafisana K8S sy ny mari-pamantarana Helm. Rehefa mametraka fivoriambe amin'ny tontolon'ny fitsapana ny Helm, dia ampiharina amin'izany ny firafitry ny fitsapana, ary ampiharina amin'ny tontolo famokarana ny firafitry ny vokatra.

Ny sarotra indrindra dia ny mametaka ireo tolotra ampiasaina rehetra sy ny fari-piainana miankina amin'ny tontolo iainana, ary mandika azy ireo amin'ny fari-piainan'ny tontolo iainana sy ny famaritana-fandrindrana ny mari-pamantarana tontolo iainana ho an'ny Helm.

Ny firafitry ny fampiharana dia mampiasa fari-piainana manodidina. Ny soatoavin'izy ireo dia napetraka ao anaty kaontenera mampiasa configmap K8S, izay namboarina tamin'ny alΓ lan'ny modely Go. Ohatra, ny fametrahana fari-piainan'ny tontolo iainana amin'ny anaran-tsehatra dia azo atao toy izao:

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

.Values.global.env – io fari-piainana io dia mitahiry ny anaran'ny tontolo iainana (prod, stage, UAT).
.Values.app.properties.app_external_domain – ao anatin'io faribolana io no ametrahanay ny sehatra tiana ao amin'ny rakitra .Values.yaml

Rehefa manavao fampiharana dia mamorona rakitra configmap.yaml avy amin'ny mΓ΄dely i Helm ary mameno ny sanda APP_EXTERNAL_DOMAIN amin'ny sanda irina arakaraka ny tontolo iatombohan'ny fanavaozana ny fampiharana. Efa napetraka ao anaty fitoeran-javatra io fari-piainana io. Azo idirana amin'ny fampiharana izany, noho izany dia hanana sanda hafa ho an'ity fari-pahalalana ity ny tontolon'ny fampiharana tsirairay.

Vao haingana, ny fanohanan'ny K8S dia niseho tao amin'ny Spring Cloud, anisan'izany ny asa miaraka amin'ny configMaps: Lohataona Cloud Kubernetes. Na dia mivoatra sy miova tanteraka aza ny tetikasa dia tsy afaka mampiasa izany amin'ny famokarana isika. Saingy manara-maso mavitrika ny toe-javatra misy azy izahay ary mampiasa izany amin'ny fanamafisana DEV. Raha vantany vao miorim-paka izy dia hiova amin'ny fampiasana ny fari-piainan'ny tontolo iainana mankany aminy.

Π˜Ρ‚ΠΎΠ³ΠΎ

Noho izany, ny Continuous Deployment dia namboarina sy miasa. Ny fanavaozam-baovao rehetra dia mitranga amin'ny fanendry tokana. Ny fandefasana fanovana amin'ny tontolon'ny vokatra dia mandeha ho azy. Ary ny zava-dehibe dia tsy manakana ny rafitra ny fanavaozana.

Ny fampiharana ny Continuous Deployment amin'ny sehatra mpanjifa

Drafitra ho avy: fifindra-monina automatique

Nieritreritra ny hanavao ny angon-drakitra sy ny mety hamerenana ireo fanovana ireo izahay. Rehefa dinihina tokoa, ny dikan-teny roa samy hafa amin'ny fampiharana dia mandeha amin'ny fotoana iray: ny taloha dia mandeha, ary ny vaovao dia mandeha. Ary hovonoinay ilay taloha rehefa azo antoka fa miasa ilay kinova vaovao. Ny fifindra-monina angona dia tokony hamela anao hiasa amin'ny dikan-teny roa amin'ny fampiharana.

Noho izany, tsy afaka manova tsotra izao ny anaran'ny tsanganana na angona hafa izahay. Saingy afaka mamorona tsanganana vaovao isika, mandika ny angona avy amin'ny tsanganana taloha ao anatiny ary manoratra trigger izay, rehefa manavao ny angona, dia handika sy havaozina amin'ny tsanganana hafa. Ary aorian'ny fametrahana mahomby amin'ny dikan-teny vaovao amin'ny fampiharana, aorian'ny vanim-potoana fanohanan'ny fandefasana, dia ho afaka hamafa ny tsanganana taloha sy ny trigger izay nanjary tsy ilaina.

Raha tsy mandeha araka ny tokony ho izy ny kinova vaovaon'ny rindranasa dia afaka miverina amin'ny dikan-teny teo aloha isika, anisan'izany ny dikan-teny teo aloha. Raha fintinina, ny fanovana ataonay dia ahafahanao miasa miaraka amin'ny dikan-teny maromaro amin'ny fampiharana.

Mikasa ny hanao automatique ny fifindra-monina amin'ny alΓ lan'ny asa K8S izahay, hampiditra izany amin'ny fizotry ny CD. Ary tena hizara izany traikefa izany amin'ny HabrΓ© izahay.

Source: www.habr.com

Add a comment