Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)

Hanomboka ny bilaoginay amin'ny alalan'ny famoaham-boky mifototra amin'ny lahateny farany nataon'ny tale teknika izahay distol (Dmitry Stolyarov). Ireo rehetra ireo dia natao tamin'ny 2016 tamin'ny hetsika matihanina isan-karazany ary natokana ho an'ny lohahevitra DevOps sy Docker. Lahatsary iray avy amin'ny fivorian'ny Docker Moscow tao amin'ny biraon'ny Badoo, efa vitantsika MIVOAKA Online. Ireo vaovao dia hampiarahina amin’ny lahatsoratra mampita ny votoatin’ireo tatitra. Noho izany…

31 Mey tamin'ny fihaonambe RootConf 2016, natao tao anatin'ny fetiben'ny "Teknolojian'ny Internet Rosiana" (RIT ++ 2016), ny fizarana "Fametrahana sy fandefasana mitohy" dia nisokatra niaraka tamin'ny tatitra "Fomba tsara indrindra amin'ny fandefasana tsy tapaka miaraka amin'ny Docker". Izy io dia namintina sy nandamina ny fomba fanao tsara indrindra amin'ny fananganana fizotry ny fandefasana Continuous (CD) amin'ny fampiasana Docker sy vokatra Open Source hafa. Miara-miasa amin'ireo vahaolana ireo izahay amin'ny famokarana, izay ahafahantsika miantehitra amin'ny traikefa azo ampiharina.

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)

Raha manana fahafahana handany adiny iray ianao video ny tatitra, manoro hevitra izahay hijery azy manontolo. Raha tsy izany, eto ambany ny famintinana lehibe amin'ny endrika lahatsoratra.

Fanaterana mitohy miaraka amin'ny Docker

ambany Fanaterana mitohy takatsika ny rohim-pisehoana izay vokatry ny kaody fampiharana avy amin'ny tahiry Git no tonga voalohany amin'ny famokarana, ary avy eo dia miafara amin'ny arisiva. Toy izao izy: Git → Build → Test → Release → Operate.

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)
Ny ankabeazan'ny tatitra dia natokana ho an'ny dingan'ny fananganana (fanangonana fampiharana), ary ny lohahevitra mivoaka sy miasa dia voaresaka fohy. Hiresaka momba ny olana sy ny lamina izay ahafahanao mamaha azy ireo isika, ary mety tsy mitovy ny fampiharana manokana amin'ireo lamina ireo.

Nahoana no ilaina eto mihitsy i Docker? Tsy maninona fa nanapa-kevitra izahay ny hiresaka momba ny fanaterana tsy tapaka amin'ny tontolon'ity fitaovana Open Source ity. Na dia natokana ho an'ny fampiasana azy aza ny tatitra iray manontolo, antony maro no ambara rehefa mandinika ny lamina fototra amin'ny famoahana kaody fampiharana.

Modely famoahana lehibe

Noho izany, rehefa mamoaka dikan-teny vaovao amin'ny fampiharana isika dia azo antoka fa miatrika izany olana amin'ny fiatoana, novokarina nandritra ny famadihana ny mpizara famokarana. Ny fifamoivoizana avy amin'ny dikan-teny taloha amin'ny rindranasa mankany amin'ny vaovao dia tsy afaka mifamadika eo noho eo: aloha dia tsy maintsy ataontsika antoka fa tsy vitan'ny fampidinana soa aman-tsara ny dikan-teny vaovao, fa koa "mafana" (izany hoe, vonona tanteraka amin'ny fangatahana).

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)
Noho izany, mandritra ny fotoana fohy dia hiasa miaraka ny dikan-teny roa (antitra sy vaovao). Izay mitondra ho azy fifandirana loharanon-karena iombonana: tambajotra, rafitra fichier, IPC, sns. Miaraka amin'i Docker, io olana io dia mora voavaha amin'ny alàlan'ny fampandehanana dikan-teny samihafa amin'ny fampiharana ao anaty fitoeran-javatra misaraka, izay iantohana ny fitokanana loharano ao anatin'ny mpampiantrano iray (server/milina virtoaly). Mazava ho azy, azonao atao ny mandefitra amin'ny tricks sasany tsy misy insulation mihitsy, fa raha misy fitaovana efa vita sy mety, dia misy ny antony mifanohitra amin'izany - tsy manao tsirambina izany.

Ny Containerization dia manome tombony maro hafa rehefa apetraka. Ny fampiharana rehetra dia miankina amin'ny dikan-teny manokana (na dikan-teny) mpandika, ny fisian'ny modules/extension, sns., ary koa ny dikan-ny. Ary izany dia tsy mihatra amin'ny tontolo iainana azo tanterahina avy hatrany, fa koa amin'ny tontolo iainana manontolo, anisan'izany rafitra rindrambaiko ary ny dikan-ny (hatramin'ny fizarana Linux ampiasaina). Noho ny zava-misy fa ny kaontenera dia tsy ny fampiharana code ihany, fa koa ny rafitra efa napetraka sy ny rindrambaiko fampiharana ny dikan-teny ilaina, dia afaka manadino ny olana amin'ny miankina.

Andao hamintina maodely fandefasana lehibe dikan-teny vaovao amin'ny fiheverana ireto antony manaraka ireto:

  1. Amin'ny voalohany, ny dikan-teny taloha amin'ny fampiharana dia mandeha ao amin'ny kaontenera voalohany.
  2. Ny dikan-teny vaovao dia mihodina ary "manafana" ao anaty fitoeran-javatra faharoa. Tsara homarihina fa ity dikan-teny vaovao ity dia mety hitondra tsy ny kaody fampiharana nohavaozina ihany, fa koa izay miankina aminy, ary koa ireo singa rafitra (ohatra, dikan-teny vaovao amin'ny OpenSSL na ny fizarana manontolo).
  3. Rehefa vonona tanteraka ny kinova vaovao hatolotra ny fangatahana dia miova ny fifamoivoizana avy amin'ny kaontenera voalohany mankany amin'ny faharoa.
  4. Ny dikan-teny taloha dia azo ajanona.

Ity fomba fametrahana dikan-teny samihafa amin'ny fampiharana amin'ny kaontenera misaraka ity dia manome fahafahana hafa - famerenana haingana amin'ny dikan-teny taloha (na izany aza, ampy ny mamadika ny fifamoivoizana amin'ny fitoeran-javatra irina).

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)
Ny tolo-kevitra voalohany farany dia toa zavatra izay tsy hitan'ny Kapiteny hoe: "[rehefa mandamina ny fandefasana mitohy miaraka amin'i Docker] Ampiasao ny Docker [ary fantaro izay omeny]" Tsarovy fa tsy bala volafotsy izay hamaha ny olana rehetra izany, fa fitaovana manome fototra mahafinaritra.

reproducibility

Ny dikan'ny hoe "reproducibility" dia andiana olana amin'ny ankapobeny mitranga rehefa mampiasa fampiharana. Miresaka tranga toy izany isika:

  • Ireo sora-baventy nohamarinin'ny departemantan'ny kalitao ho an'ny fampisehoana dia tsy maintsy averina amin'ny fomba marina amin'ny famokarana.
  • Ny fampiharana dia navoaka amin'ny lohamilina izay afaka mahazo fonosana avy amin'ny fitaratra fitehirizana samihafa (rehefa mandeha ny fotoana dia havaozina izy ireo, ary miaraka amin'izy ireo ny dikan'ny fampiharana napetraka).
  • “Miasa ho ahy eto an-toerana ny zava-drehetra!” (...ary tsy mahazo mamokatra ny developer.)
  • Mila manamarina zavatra ao amin'ny dikan-teny taloha (archived) ianao.
  • ...

Ny maha-zava-dehibe azy ireo amin'ny ankapobeny dia miankina amin'ny zava-misy fa ilaina ny fanarahana tanteraka ny tontolo iainana ampiasaina (ary koa ny tsy fisian'ny maha-olombelona). Ahoana no ahafahantsika miantoka ny famerenana indray? Manaova sary Docker mifototra amin'ny kaody avy amin'ny Git, ary ampiasao izy ireo amin'ny asa rehetra: amin'ny tranokalan'ny fitsapana, amin'ny famokarana, amin'ny milina programer eo an-toerana ... Amin'izany fotoana izany, zava-dehibe ny manamaivana ny hetsika atao. после famoriana ny sary: ​​arakaraky ny maha-tsotra azy no tsy dia misy lesoka.

Ny fotodrafitrasa dia code

Raha toa ka tsy voalamina sy “voalamina” ny fepetran'ny fotodrafitrasa (ny fisian'ny rindrambaiko mpizara, ny dikan-ny, sns.) dia mety hiteraka voka-dratsy ny famoahana ny fanavaozana fampiharana rehetra. Ohatra, eo amin'ny sehatra dia efa nivadika tamin'ny PHP 7.0 ianao ary namerina nanoratra ny kaody mifanaraka amin'izany - dia azo antoka fa hahagaga ny olona ny fisehoany amin'ny famokarana miaraka amin'ny PHP taloha (5.5). Mety tsy hohadinoinao ny fiovana lehibe amin'ny dikan-teny mpandika teny, fa "ny devoly dia ao amin'ny antsipiriany": ny mahagaga dia mety amin'ny fanavaozana kely amin'ny fiankinan-doha rehetra.

Ny fomba iray hamahana ity olana ity dia fantatra amin'ny hoe IaC (Infrastructure as Code, "Infrastructure as Code") ary tafiditra amin'ny fitehirizana ny fepetra takian'ny fotodrafitrasa miaraka amin'ny fehezan-dalàna fampiharana. Amin'ny fampiasana azy dia afaka miara-miasa amin'ny fitahirizana fampiharana Git mitovy ny mpamorona sy ny manam-pahaizana DevOps, fa amin'ny faritra samihafa amin'izany. Avy amin'ity kaody ity dia misy sary Docker noforonina ao amin'ny Git, izay ametrahana ny fampiharana amin'ny fiheverana ny antsipiriany rehetra momba ny fotodrafitrasa. Raha tsorina, ny scripts (fitsipika) amin'ny fanangonana sary dia tokony ho ao amin'ny tahiry mitovy amin'ny kaody loharano ary mitambatra.

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)

Raha ny maritrano fampiharana maro sosona - ohatra, misy nginx, izay mijoro eo anoloan'ny rindranasa iray efa mandeha ao anaty container Docker - Ny sary Docker dia tsy maintsy noforonina avy amin'ny kaody ao amin'ny Git isaky ny sosona. Avy eo ny sary voalohany dia ahitana fampiharana misy mpandika teny sy fiankinan-doha "akaiky", ary ny sary faharoa dia ahitana ny nginx ambony.

Sary Docker, fifandraisana amin'i Git

Zarainay ho sokajy roa ny sary Docker rehetra nangonina tao amin'ny Git: vonjimaika sy famoahana. Sary vonjimaika voamarika amin'ny anaran'ny sampana ao amin'ny Git, dia azo soloina amin'ny commit manaraka ary navoaka ho an'ny fijerena fotsiny (fa tsy ho an'ny famokarana). Ity no maha-samihafa azy ireo amin'ny famoahana azy: tsy fantatrao izay fanoloran-tena manokana ao aminy.

Misy dikany ny manangona ho sary vonjimaika: ny sampana master (azonao atao ny manodina azy ho azy amin'ny tranokala iray mba hahitana tsy tapaka ny dikan-teny master ankehitriny), sampana misy famoahana, sampana misy fanavaozana manokana.

Fanao fanaterana mitohy miaraka amin'i Docker (famerenana sy horonan-tsary)
Taorian'ny fijerena ny sary vonjimaika dia ilaina ny fandikana ho amin'ny famokarana, nametraka marika iray ny mpamorona. Angonina ho azy amin'ny marika famoahana sary (ny marika dia mifanandrify amin'ny tag avy amin'ny Git) ary navoaka ho an'ny fandaharana. Raha hamarinin'ny sampan-draharahan'ny kalitao izy io dia mandeha any amin'ny famokarana.

dapp

Ny zavatra rehetra voalaza (famoahana, fanangonana sary, fikojakojana manaraka) dia azo ampiharina tsy miankina amin'ny alàlan'ny script Bash sy fitaovana hafa "improvised". Fa raha manao izany ianao, dia amin'ny fotoana iray ny fampiharana dia hitarika amin'ny fahasarotana lehibe sy ny fanaraha-maso ratsy. Noho ny fahatakarana izany, dia tonga namorona fitaovana manokana momba ny Workflow manokana izahay amin'ny fananganana CI/CD - dapp.

Ny kaody loharanony dia nosoratana tamin'ny Ruby, loharano misokatra ary navoaka tamin'ny GitHub. Indrisy anefa fa ny antontan-taratasy no toerana malemy indrindra amin'ny fitaovana amin'izao fotoana izao, saingy miasa amin'izany izahay. Ary hanoratra sy hiresaka momba ny dapp mihoatra ny indray mandeha izahay, satria... Tsy afaka miandry amin-kitsimpo izahay hizara ny fahaizany amin'ny vondrom-piarahamonina liana manontolo, fa mandritra izany fotoana izany, alefaso ny olanao sy ny fangatahanao ary/na araho ny fivoaran'ny tetikasa amin'ny GitHub.

Nohavaozina tamin'ny 13 Aogositra 2019: tetikasa amin'izao fotoana izao dapp novana anarana ho werf, naverina nosoratana tanteraka tao amin'ny Go ny kaodiny, ary nohatsaraina be ny antontan-taratasiny.

Kubernetes

Fitaovana Open Source hafa vonona izay efa nahazo fankasitrahana lehibe eo amin'ny tontolo matihanina dia Kubernetes, cluster fitantanana Docker. Ny lohahevitry ny fampiasana azy amin'ny fampandehanana ny tetikasa naorina ao amin'ny Docker dia mihoatra ny sehatry ny tatitra, noho izany dia voafetra amin'ny fijerena ireo endri-javatra mahaliana sasany ny famelabelarana.

Ho an'ny famoahana, Kubernetes dia manolotra:

  • famotopotorana fahavononana - manamarina ny fahavononan'ny dikan-teny vaovao amin'ny rindranasa (mba hanovana ny fifamoivoizana amin'izany);
  • fanavaozana mihodinkodina - fanavaozana sary misesy ao anaty vondron'ny kaontenera (fanakatonana, fanavaozana, fiomanana amin'ny fandefasana, fanodinana fifamoivoizana);
  • fanavaozana synchronous - fanavaozana sary ao anaty cluster miaraka amin'ny fomba hafa: voalohany amin'ny antsasaky ny kaontenera, avy eo amin'ny ambiny;
  • famotsorana canary - fandefasana sary vaovao amin'ny kaontenera voafetra (kely) hanaraha-maso ny tsy fetezana.

Koa satria ny Continuous Delivery dia tsy ny famoahana dikan-teny vaovao ihany, Kubernetes dia manana fahaiza-manao maromaro ho an'ny fikojakojana fotodrafitrasa manaraka: fanaraha-maso sy fandraketana an-tsoratra ho an'ny kaontenera rehetra, fanamafisam-peo mandeha ho azy, sns. Izany rehetra izany dia efa mandeha ary miandry ny mety. fampiharana amin'ny fizotranao.

Tolo-kevitra farany

  1. Ampiasao ny Docker.
  2. Mamorona sarin'ny fampiharana Docker ho an'ny filanao rehetra.
  3. Araho ny fitsipika hoe “Infrastructure is code”.
  4. Rohy Git mankany Docker.
  5. Arindra ny filaharan'ny fandefasana.
  6. Mampiasà sehatra efa vita (Kubernetes na hafa).

Horonantsary sy sary mihetsika

Lahatsary avy amin'ny fampisehoana (adiny iray eo ho eo) navoaka tao amin'ny YouTube (ny tatitra dia manomboka amin'ny minitra faha-5 - araho ny rohy mba hilalao manomboka izao).

Fampisehoana ny tatitra:

Sal

Tatitra hafa momba ny lohahevitra ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment