Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Ny lahatsoratra dia miresaka momba ny olana amin'ny fanadiovana sary miangona ao amin'ny rejisitra kaontenera (Docker Registry sy ny analogues) amin'ny zava-misy amin'ny fantsona CI/CD maoderina ho an'ny rindranasa teratany rahona alefa any Kubernetes. Ny fepetra fototra amin'ny maha-zava-dehibe ny sary sy ny fahasarotana aterak'izany amin'ny fanadiovana automatique, ny fitsitsiana toerana ary ny fanomezana ny filan'ny ekipa dia omena. Farany, amin'ny fampiasana ny ohatra momba ny tetikasa Open Source manokana, dia holazainay aminao ny fomba handresena ireo fahasahiranana ireo.

fampidirana

Mety hitombo haingana ny isan'ny sary ao amin'ny rejisitra kaontenera, maka toerana fitahirizana bebe kokoa ary mampitombo be ny vidiny. Mba hifehezana, hamerana na hitazonana ny fitomboan'ny habaka azo ekena ao amin'ny rejisitra, dia ekena:

  1. mampiasa marika maromaro ho an'ny sary;
  2. manadio ny sary amin'ny fomba sasany.


Ny fetra voalohany dia azo ekena indraindray ho an'ny ekipa kely. Raha manana marika maharitra ampy ny mpamorona (latest, main, test, boris sns), ny rejisitra dia tsy hivonto amin'ny habeny ary mandritra ny fotoana maharitra dia tsy mila mieritreritra ny hanadio azy mihitsy ianao. Rehefa dinihina tokoa, dia voafafa ny sary rehetra tsy misy ifandraisany, ary tsy misy intsony ny asa ho an'ny fanadiovana (ny zavatra rehetra dia ataon'ny mpanangom-pako mahazatra).

Na izany aza, io fomba fiasa io dia mametra tanteraka ny fampandrosoana ary zara raha azo ampiharina amin'ny tetikasa CI/CD maoderina. Anisan'ny nisongadina tamin'ny fampandrosoana automatique, izay ahafahanao mitsapa, manaparitaka ary manolotra fiasa vaovao amin'ny mpampiasa haingana kokoa. Ohatra, amin'ny tetikasantsika rehetra, misy fantsona CI dia noforonina ho azy miaraka amin'ny fanoloran-tena tsirairay. Ao anatin'izany, ny sary dia natambatra, notsapaina, navoaka tamin'ny faritra Kubernetes isan-karazany ho an'ny debugging sy ny fisavana sisa, ary raha tsara ny zava-drehetra, dia tonga any amin'ny mpampiasa farany ny fanovana. Ary tsy siansa rocket intsony izany, fa zava-mitranga isan'andro ho an'ny maro - mety ho anao, satria mamaky ity lahatsoratra ity ianao.

Koa satria ny fanamboarana ny bug sy ny fampivelarana fiasa vaovao dia atao mifanandrify, ary ny famoahana dia azo atao imbetsaka isan'andro, dia miharihary fa ny fizotran'ny fampandrosoana dia miaraka amin'ny fanoloran-tena marobe, izay midika fa sary maro be ao amin'ny rejisitra. Vokatr'izany dia mipoitra ny olana amin'ny fikarakarana fanadiovana mahomby ny rejisitra, i.e. manala sary tsy misy ifandraisany.

Ahoana anefa no hamaritana raha ilaina ny sary iray?

Fepetra momba ny maha-zava-dehibe ny sary

Amin'ny ankamaroan'ny tranga, ny fepetra fototra dia:

1. Ny voalohany (ny tena miharihary sy mitsikera indrindra) dia ny sary izay ampiasaina amin'izao fotoana izao ao amin'ny Kubernetes. Ny fanesorana ireo sary ireo dia mety hiteraka saram-pamokarana lehibe (ohatra, ny sary dia mety takiana amin'ny famerenana) na mandΓ  ny ezaka ataon'ny ekipa amin'ny debugging amin'ny iray amin'ireo tadivavarana. (Noho izany antony izany dia nanao manokana mihitsy aza izahay Prometheus mpanondrana, izay manara-maso ny tsy fisian'ny sary toy izany ao amin'ny cluster Kubernetes.)

2. Faharoa (tsy dia mazava loatra, fa tena zava-dehibe koa ary mifandray indray amin'ny fanararaotana) - sary izay ilaina amin'ny famerenana indray raha sendra misy olana goavana amin'ny dikan-teny ankehitriny. Ohatra, amin'ny raharaha Helm, ireo dia sary ampiasaina amin'ny dikan-teny voatahiry amin'ny famoahana. (Raha ny tokony ho izy, amin'ny alΓ lan'ny default ao amin'ny Helm dia ny fanavaozana 256, saingy tsy azo inoana fa misy olona mila mitahiry. izany dikan-teny maro be?..) Rehefa dinihina tokoa, isika, indrindra, dia mitahiry dikan-teny mba hampiasaina any aoriana, izany hoe. "miverena" amin'izy ireo raha ilaina.

3. Fahatelo - ilain'ny developer: Ny sary rehetra mifandraika amin'ny asany ankehitriny. Ohatra, raha mandinika PR isika, dia misy dikany ny mamela sary mifanaraka amin'ny fanoloran-tena farany ary, ohatra, ny fanoloran-tena teo aloha: amin'izany fomba izany dia afaka miverina haingana amin'ny asa rehetra ny developer ary miasa miaraka amin'ireo fanovana farany.

4. Fahefatra - sary izay mifanaraka amin'ny dikan'ny fampiharanay, i.e. ny vokatra farany: v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, sns.

NB: Ny fepetra voafaritra eto dia novolavolaina mifototra amin'ny traikefa mifandray amin'ny ekipa fampandrosoana am-polony avy amin'ny orinasa samihafa. Na izany aza, mazava ho azy, miankina amin'ny antsipiriany amin'ny fizotran'ny fampandrosoana sy ny fotodrafitrasa ampiasaina (ohatra, tsy ampiasaina ny Kubernetes), mety tsy hitovy ireo fepetra ireo.

Fahamendrehana sy vahaolana efa misy

Ny serivisy malaza miaraka amin'ny rejisitry ny kaontenera, amin'ny ankapobeny, dia manolotra ny politikany fanadiovana sary: ​​ao anatin'izy ireo dia azonao atao ny mamaritra ny fepetra esorina amin'ny rejisitra. Na izany aza, ireo fepetra ireo dia voafetra amin'ny mari-pamantarana toy ny anarana, ny fotoana famoronana ary ny isan'ny marika*.

* Miankina amin'ny fampiharana rejisitra kaontenera manokana. Nodinihinay ny mety ho vahaolana manaraka ireto: Azure CR, Docker Hub, ECR, GCR, GitHub Packages, GitLab Container Registry, Harbour Registry, JFrog Artifactory, Quay.io - tamin'ny Septambra'2020.

Ity andiana masontsivana ity dia ampy hanomezana fahafaham-po ny fepetra fahefatra - izany hoe mifantina sary mifanaraka amin'ny dikan-teny. Na izany aza, ho an'ny fepetra hafa rehetra, ny tsirairay dia tsy maintsy misafidy karazana vahaolana marimaritra iraisana (politika henjana kokoa na, mifanohitra amin'izany, milefitra kokoa) - miankina amin'ny zavatra andrasana sy ny fahaiza-manao ara-bola.

Ohatra, ny fepetra fahatelo - mifandraika amin'ny filan'ny mpamorona - dia azo vahana amin'ny alΓ lan'ny fandaminana ny dingana ao anatin'ny ekipa: anarana manokana ny sary, fitazonana lisitra fahazoan-dΓ lana manokana sy fifanarahana anatiny. Saingy amin'ny farany dia mbola mila mandeha ho azy. Ary raha tsy ampy ny fahaiza-manaon'ny vahaolana efa vita, dia tsy maintsy manao zavatra ho anao manokana ianao.

Mitovitovy ihany ny toe-javatra misy ireo fepetra roa voalohany: tsy mety afa-po izy ireo raha tsy mahazo angon-drakitra avy amin'ny rafitra ivelany - ilay toerana ametrahana fampiharana (amin'ny tranga misy antsika, Kubernetes).

Sarin'ny workflow ao amin'ny Git

Andeha atao hoe miasa toy izao ianao ao amin'ny Git:

Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Ny kisary misy loha eo amin'ny kisary dia manondro sary fitoeran-javatra izay apetraka ao amin'ny Kubernetes amin'izao fotoana izao ho an'ny mpampiasa rehetra (mpampiasa farany, mpanandrana, mpitantana, sns.) na ampiasain'ny mpamorona ho an'ny debugging sy tanjona mitovy.

Inona no mitranga raha tsy mamela sary hotazonina fotsiny ny politikan'ny fanadiovana (tsy voafafa) amin'ny anarana tag nomena?

Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Mazava ho azy fa tsy hahafaly na iza na iza ny toe-javatra toy izany.

Inona no hiova raha mamela ny sary tsy ho voafafa ny politika? araka ny elanelam-potoana nomena / isan'ny fanolorana farany?

Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Ny vokatra dia nanjary tsara kokoa, saingy mbola lavitra ny idealy. Rehefa dinihina tokoa, dia mbola manana mpamorona mila sary ao amin'ny rejisitra (na apetraka ao amin'ny K8s mihitsy aza) hanesorana ny bibikely ...

Raha fintinina ny zava-misy eo amin'ny tsena amin'izao fotoana izao: ny fiasa hita ao amin'ny rejisitra kaontenera dia tsy manome fahafaha-manao ampy rehefa manadio, ary ny antony lehibe indrindra amin'izany dia tsy misy fomba hifandraisana amin'ny tontolo ivelany. Hita fa ireo ekipa izay mitaky flexibilitΓ© toy izany dia voatery manatanteraka tsy miankina ny famafana sary "avy any ivelany", amin'ny fampiasana ny Docker Registry API (na ny API teratany amin'ny fampiharana mifanaraka amin'izany).

Na izany aza, nitady vahaolana manerantany izahay izay hanadio ny sary ho an'ny ekipa samihafa amin'ny fampiasana rejisitra samihafa...

Ny lalanay mankany amin'ny fanadiovana sary manerantany

Avy aiza izany filana izany? Ny zava-misy dia tsy vondrona mpamorona misaraka izahay, fa ekipa iray izay manompo ny maro amin'izy ireo indray mandeha, manampy amin'ny famahana tanteraka ny olan'ny CI/CD. Ary ny fitaovana ara-teknika lehibe indrindra amin'izany dia ny Open Source utility werf. Ny mampiavaka azy dia tsy manao asa tokana izy, fa miaraka amin'ny fizotry ny fandefasana mitohy amin'ny dingana rehetra: manomboka amin'ny fivoriambe ka hatramin'ny fametrahana.

Ny famoahana sary ao amin'ny rejisitra* (avy hatrany aorian'ny fananganana azy) dia asa miharihary amin'ny fitaovana toy izany. Ary satria apetraka eo ny sary ho fitehirizana, dia - raha tsy voafetra ny fitahirizanao - mila tompon'andraikitra amin'ny fanadiovana azy ireo ianao. Ny fomba nahazoanay fahombiazana tamin'izany, mahafeno ny fepetra rehetra voalaza, dia hodinihina bebe kokoa.

* Na dia mety tsy mitovy aza ny rejisitra (Docker Registry, GitLab Container Registry, Harbor, sns.), dia miatrika olana mitovy amin'izany ny mpampiasa azy. Ny vahaolana manerantany amin'ny tranga misy antsika dia tsy miankina amin'ny fampiharana ny rejisitra, satria mihazakazaka ivelan'ny rejisitra ny tenany ary manolotra fitondran-tena mitovy ho an'ny rehetra.

Na dia mampiasa werf ho ohatra fampiharana aza izahay, manantena izahay fa ireo fomba fiasa ampiasaina dia hahasoa ireo ekipa hafa miatrika olana mitovy amin'izany.

Ka sahirana izahay ivelany fampiharana fomba fanadiovana sary - fa tsy ireo fahaiza-manao izay efa natsangana ho rejistra ho an'ny kaontenera. Ny dingana voalohany dia ny fampiasana ny Docker Registry API mba hamoronana politika primitive mitovy amin'ny isan'ny marika sy ny fotoana namoronana azy (voalaza etsy ambony). Nampiana azy ireo avelao ny lisitra mifototra amin'ny sary ampiasaina amin'ny fotodrafitrasa napetraka, i.e. Kubernetes. Ho an'ity farany dia ampy ny nampiasana ny Kubernetes API mba hamerenana amin'ny alΓ lan'ny loharano rehetra napetraka ary hahazoana lisitry ny soatoavina. image.

Ity vahaolana tsy dia misy dikany ity dia namaha ny olana lehibe indrindra (kriteria No. 1), saingy vao fiandohan'ny dianay hanatsarana ny mekanika fanadiovana. Ny dingana manaraka - ary mahaliana kokoa - dia ny fanapahan-kevitra ampifandraiso amin'ny tantaran'ny Git ny sary navoaka.

Tetika fametahana

Hanombohana, nisafidy fomba iray izay tokony hitahirizan'ny sary farany ny fampahalalana ilaina amin'ny fanadiovana, ary nanangana ny dingana amin'ny tetika fametahana. Rehefa namoaka sary dia nisafidy safidy fanisiana manokana ny mpampiasa (git-branch, git-commit na git-tag) ary nampiasa ny sanda mifanaraka amin'izany. Ao amin'ny rafitra CI, ireo soatoavina ireo dia napetraka ho azy mifototra amin'ny fari-piainan'ny tontolo iainana. Raha ny tena izy ny sary farany dia mifandray amin'ny primitive Git manokana, mitahiry ny angona ilaina amin'ny fanadiovana ao anaty etikety.

Ity fomba fiasa ity dia niteraka politika maromaro izay namela an'i Git hampiasaina ho loharanom-pahamarinana tokana:

  • Rehefa mamafa sampana/tag ao amin'ny Git dia voafafa ho azy ireo sary mifandraika amin'ny rejisitra.
  • Ny isan'ny sary mifandray amin'ny Git tags sy commits dia azo fehezin'ny isan'ny tag ampiasaina amin'ny skema voafantina sy ny fotoana namoronana ny commit mifandraika.

Amin'ny ankapobeny, nanome fahafaham-po ny filanay ny fampiharana vokatr'izany, saingy tsy ela dia nisy fanamby vaovao niandry anay. Ny zava-misy dia rehefa mampiasa tetika fametahana mifototra amin'ny Git primitives izahay dia nahita lesoka maromaro. (Satria tsy tafiditra ao anatin'ity lahatsoratra ity ny filazalazana azy ireo, ny tsirairay dia afaka mahafantatra ny antsipiriany eto.) Noho izany, rehefa nanapa-kevitra ny hifindra amin'ny fomba mahomby kokoa amin'ny fanindriana (famaritana mifototra amin'ny votoaty), dia tsy maintsy nandinika indray ny fampiharana ny fanadiovana sary izahay.

Algorithm vaovao

Nahoana? Miaraka amin'ny fanindriana mifototra amin'ny atiny, ny tag tsirairay dia afaka manome fahafaham-po ny fanoloran-tena marobe ao amin'ny Git. Rehefa manadio sary dia tsy afaka mihevitra intsony ianao ihany avy amin'ny commit izay nampidirina ny tag vaovao amin'ny rejisitra.

Ho an'ny algorithm fanadiovana vaovao dia nanapa-kevitra ny hiala amin'ny tetika fametahana ary hanorina dingana meta-tsary, izay samy mitahiry andiana:

  • ny fanoloran-tena izay nanaovana ny famoahana (tsy maninona na nampiana, niova na nijanona ho toy ny ao amin'ny rejisitry ny kaontenera ny sary);
  • ary ny famantarana anatiny mifanaraka amin'ny sary tafangona.

Izany hoe nomena izany mampifandray ireo marika navoaka miaraka amin'ny commits ao amin'ny Git.

Fanofanana farany sy algorithm ankapobeny

Rehefa manamboatra fanadiovana dia afaka miditra amin'ny politika mifidy sary ankehitriny ny mpampiasa. Ny politika tsirairay toy izany dia voafaritra:

  • references maro, i.e. Git tags na sampana Git izay ampiasaina mandritra ny scan;
  • ary ny fetran'ny sary nokarohina ho an'ny references tsirairay avy amin'ilay napetraka.

Mba hanazavana, dia toy izao no nanombohan'ny fandrindrana ny politika default:

cleanup:
  keepPolicies:
  - references:
      tag: /.*/
      limit:
        last: 10
  - references:
      branch: /.*/
      limit:
        last: 10
        in: 168h
        operator: And
    imagesPerReference:
      last: 2
      in: 168h
      operator: And
  - references:  
      branch: /^(main|staging|production)$/
    imagesPerReference:
      last: 10

Ity fanitsiana ity dia misy politika telo izay manaraka ireto fitsipika manaraka ireto:

  1. Tehirizo ny sary ho an'ny marika Git 10 farany (amin'ny daty famoronana marika).
  2. Tehirizo tsy mihoatra ny sary 2 navoaka tamin'ny herinandro lasa ho an'ny lohahevitra 10 tsy mihoatra ny hetsika tamin'ny herinandro lasa.
  3. Tehirizo sary 10 ho an'ny sampana main, staging ΠΈ production.

Ny algorithm farany dia midina amin'ireto dingana manaraka ireto:

  • Retrieving manifests from container registry.
  • Tsy tafiditra ao ny sary ampiasaina ao amin'ny Kubernetes, satria Efa nifidy azy ireo izahay tamin'ny fandatsaham-bato ny K8s API.
  • Mamakafaka ny tantaran'ny Git ary manilika sary mifototra amin'ny politika voafaritra.
  • Esory ny sary sisa.

Raha iverenana ny fanoharana ataontsika dia izao no mitranga amin'ny werf:

Ny olana amin'ny fanadiovana "smart" ny sary fitoeran-javatra sy ny vahaolana amin'ny werf

Na izany aza, na dia tsy mampiasa werf aza ianao, dia azo ampiharina amin'ny rafitra/fitaovana hafa ny fomba fiasa mitovy amin'ny fanadiovana sary mandroso - amin'ny fampiharana iray na hafa (araka ny fomba tiana indrindra amin'ny fametahana sary). Mba hanaovana izany, dia ampy ny mitadidy ireo olana mipoitra ary mahita ireo fahafahana ireo ao amin'ny stack izay ahafahanao mampiditra ny famahana azy ireo araka izay azo atao. Manantena izahay fa ny lalana nodiavinay dia hanampy anao hijery ny raharahanao manokana miaraka amin'ny antsipiriany sy eritreritra vaovao.

famaranana

  • Na ho ela na ho haingana, ny ankamaroan'ny ekipa dia miatrika olana amin'ny fihoaran'ny rejisitra.
  • Rehefa mikaroka vahaolana dia ilaina aloha ny mamaritra ny fepetra momba ny maha-zava-dehibe ny sary.
  • Ny fitaovana atolotry ny serivisy fisoratana anarana kaontenera malaza dia ahafahanao mandamina fanadiovana tena tsotra izay tsy miraharaha ny "tany ivelany": ny sary ampiasaina ao amin'ny Kubernetes sy ny mampiavaka ny fizotran'ny ekipa.
  • Ny algorithm mora sy mahomby dia tsy maintsy manana fahatakarana ny fizotran'ny CI/CD ary tsy miasa amin'ny angon-drakitra sary Docker ihany.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment