GitOps: Fampitahana ny fomba fisintonana sy fanosehana

Fanamarihana. transl.: Ao amin'ny vondrom-piarahamonina Kubernetes, ny fironana iray antsoina hoe GitOps dia lasa malaza, araka ny efa hitantsika manokana, famangiana KubeCon Europe 2019. Ity teny ity dia vao haingana namorona avy amin'ny lehiben'ny Weaveworks - Alexis Richardson - ary midika ny fampiasana fitaovana mahazatra ny mpamorona (indrindra indrindra, Git, noho izany ny anarana) hamahana ny olan'ny asa. Indrindra indrindra, miresaka momba ny fiasan'ny Kubernetes isika amin'ny alàlan'ny fitehirizana ny fanamafisam-peo ao amin'ny Git ary ny fanovana ho azy amin'ny cluster. Matthias Jg dia miresaka momba ny fomba roa amin'ity famoahana ity ato amin'ity lahatsoratra ity.

GitOps: Fampitahana ny fomba fisintonana sy fanosehana

Tamin'ny herintaona (raha ny marina, tamin'ny volana Aogositra 2017 no nitrangan'izany tamin'ny fomba ofisialy - teo ho eo amin'ny transl.) Misy fomba fiasa vaovao amin'ny fametrahana fampiharana ao amin'ny Kubernetes. Antsoina hoe GitOps izy io, ary mifototra amin'ny hevitra fototra hoe arahana ao amin'ny tontolo azo antoka amin'ny tahiry Git ny dikan-teny fandefasana.

Ny tombony lehibe amin'ity fomba ity dia ireto manaraka ireto::

  1. Famoronana dikan-teny sy tantara fanovana. Ny toetry ny cluster manontolo dia voatahiry ao amin'ny tahiry Git, ary ny fametrahana dia havaozina amin'ny alàlan'ny commits. Ho fanampin'izay, azo arahana ny fanovana rehetra amin'ny alàlan'ny tantaran'ny commit.
  2. Rollbacks mampiasa baiko Git mahazatra. TSOTRA git reset mamela anao hamerina ny fanovana amin'ny fametrahana; misy foana ny fanjakana taloha.
  3. Fanaraha-maso ny fidirana vonona. Amin'ny ankapobeny, ny rafitra Git dia misy angona saro-pady be dia be, ka ny ankamaroan'ny orinasa dia mifantoka manokana amin'ny fiarovana azy. Arak'izany, io fiarovana io dia mihatra amin'ny asa miaraka amin'ny fametrahana.
  4. Politika momba ny fandefasana. Ny ankamaroan'ny rafitra Git dia manohana ny politikan'ny sampana isaky ny sampana — ohatra, ny fangatahana fisintonana ihany no afaka manavao ny master, ary ny fanovana dia tsy maintsy jerena sy eken'ny mpikambana iray ao amin'ny ekipa. Tahaka ny amin'ny fanaraha-maso ny fidirana, ny politika mitovy amin'izany dia mihatra amin'ny fanavaozana ny fametrahana.

Araka ny hitanao dia misy tombony maro amin'ny fomba GitOps. Nandritra ny taona lasa, fomba roa no nahazo laza manokana. Ny iray dia mifototra amin'ny push, ny iray miorina amin'ny pull. Alohan'ny hijerentsika azy ireo, andeha hojerentsika aloha ny endriky ny fametrahana Kubernetes mahazatra.

Fomba fandefasana

Tao anatin'ny taona vitsivitsy izay, niorina tao amin'ny Kubernetes ny fomba sy fitaovana isan-karazany amin'ny fametrahana:

  1. Mifototra amin'ny maodely Kubernetes/Kustomize teratany. Ity no fomba mora indrindra hametrahana fampiharana amin'ny Kubernetes. Ny mpamorona dia mamorona ny rakitra YAML fototra ary mampihatra azy ireo. Mba hialana amin'ny fanoratana tsy tapaka ireo môdely mitovy, dia novolavolaina ny Kustomize (mamadika ny maodely Kubernetes ho maody). Fanamarihana. transl.: Kustomize dia nampidirina ao amin'ny kubectl miaraka amin'ny Famotsorana ny Kubernetes 1.14.
  2. Helm Charts. Ny tabilao helm dia ahafahanao mamorona andiana môdely, kaontenera init, sidecars, sns., izay ampiasaina amin'ny fametrahana rindranasa misy safidy fanamboarana mora kokoa noho ny amin'ny fomba mifototra amin'ny môdely. Ity fomba ity dia mifototra amin'ny rakitra YAML misy modely. Helm dia mameno azy ireo amin'ny masontsivana isan-karazany ary avy eo dia mandefa azy ireo any amin'ny Tiller, singa cluster izay mametraka azy ireo amin'ny cluster ary mamela ny fanavaozana sy ny famerenana indray. Ny zava-dehibe dia ny Helm amin'ny ankapobeny dia mampiditra ny soatoavina irina ao anaty maodely ary avy eo dia mampihatra azy ireo amin'ny fomba mitovy amin'ny fomba fanao amin'ny fomba nentim-paharazana. (vakio bebe kokoa ny fomba fiasan'izy rehetra sy ny fomba ahafahanao mampiasa azy ao amin'ny anay lahatsoratra nataon'i Helm - eo ho eo. transl.). Misy karazana sariitatra Helm efa vonona mandrakotra asa isan-karazany.
  3. Fitaovana hafa. Misy fitaovana hafa maro. Ny iraisan'izy rehetra dia ny mamadika ny rakitra môdely sasany ho rakitra YAML azo vakiana Kubernetes ary mampiasa azy ireo avy eo.

Amin'ny asantsika dia mampiasa tsy tapaka ny sarin'ny Helm ho an'ny fitaovana manan-danja izahay (satria manana zavatra maro efa vonona izy ireo, izay manamora ny fiainana) sy ny rakitra Kubernetes YAML "madio" amin'ny fametrahana ny fampiharanay manokana.

Misintona & manosika

Ao amin'ny iray amin'ireo lahatsoratra bilaogy vao haingana, nampidiriko ilay fitaovana Weave Flux, izay ahafahanao mametraka môdely ao amin'ny tahiry Git ary manavao ny fametrahana aorian'ny fanolorana na fanosehana ny container. Ny traikefako dia mampiseho fa ity fitaovana ity dia iray amin'ireo lehibe indrindra amin'ny fampiroboroboana ny fomba fisintonana, ka matetika aho no hiresaka momba izany. Raha te hahalala bebe kokoa momba ny fampiasana azy ianao, eto rohy mankany amin'ny lahatsoratra.

NB! Ny tombony rehetra amin'ny fampiasana GitOps dia mitovy amin'ny fomba roa.

Fomba fiasa misintona

GitOps: Fampitahana ny fomba fisintonana sy fanosehana

Ny fomba fisintonana dia mifototra amin'ny zava-misy fa ny fanovana rehetra dia ampiharina avy ao anaty cluster. Misy opérateur ao anatin'ilay cluster izay manara-maso tsy tapaka ireo tahiry Git sy Docker Registry mifandraika. Raha misy fiovana mitranga amin'izy ireo dia havaozina ao anatiny ny toetry ny cluster. Ity dingana ity dia heverina ho tena azo antoka, satria tsy misy mpanjifa ivelany afaka miditra amin'ny zon'ny mpitantana cluster.

matihanina:

  1. Tsy misy mpanjifa ivelany manana zo hanova ny cluster; ny fanavaozana rehetra dia mivoaka avy ao anatiny.
  2. Ny fitaovana sasany koa dia ahafahanao mampifanaraka ny fanavaozana tabilao Helm ary mampifandray azy ireo amin'ny cluster.
  3. Ny Docker Registry dia azo jerena amin'ny dikan-teny vaovao. Raha misy sary vaovao misy dia havaozina amin'ny kinova vaovao ny tahiry Git sy ny fametrahana azy.
  4. Ny fitaovam-pisintonana dia azo zaraina amin'ny sehatra anarana samihafa miaraka amin'ny tahiry sy fahazoan-dàlana Git samihafa. Noho izany dia azo ampiasaina ny modely multitenant. Ohatra, ny ekipa A dia mety mampiasa ny anaran'ny toerana A, ny ekipa B dia mety mampiasa ny anaran'ny toerana B, ary ny ekipan'ny fotodrafitrasa dia mety mampiasa ny habaka manerantany.
  5. Toy ny fitsipika, ny fitaovana dia tena maivana.
  6. Miaraka amin'ny fitaovana toy ny operator Tsiambaratelo voaisy tombo-kase Bitnami, ny tsiambaratelo dia azo tehirizina ao anaty tahiry Git ary alaina ao anatin'ny cluster.
  7. Tsy misy fifandraisana amin'ny fantsona CD hatramin'ny nisian'ny fametrahana ao anaty cluster.

Минусы:

  1. Sarotra kokoa noho ny mahazatra ny fitantanana ny tsiambaratelon'ny fanaparitahana avy amin'ny tabilao Helm, satria tsy maintsy amboarina amin'ny endrika, ohatra, tsiambaratelo voaisy tombo-kase izy ireo, avy eo decrypted amin'ny mpandraharaha anatiny, ary aorian'izay dia ho azo ampiasaina amin'ny fitaovana fisintonana. Avy eo dia azonao atao ny mampandeha ny famoahana ao amin'ny Helm miaraka amin'ireo soatoavina ao amin'ireo tsiambaratelo efa napetraka. Ny fomba tsotra indrindra dia ny mamorona tsiambaratelo miaraka amin'ny soatoavin'ny Helm rehetra ampiasaina amin'ny fametrahana azy, manafoana azy ary manolotra azy amin'ny Git.
  2. Rehefa maka fomba fisintonana ianao dia lasa mifamatotra amin'ny fitaovana misintona. Izany dia mametra ny fahafahana manamboatra ny fizotry ny fametrahana ao anaty cluster. Ohatra, sarotra ny Kustomize noho ny hoe tsy maintsy mandeha izy io alohan'ny hanolorana ny modely farany amin'ny Git. Tsy miteny aho hoe tsy afaka mampiasa fitaovana tokana ianao, fa sarotra kokoa ny mampiditra azy ireo amin'ny fizotran'ny fametrahanao.

Fomba fiasa mifototra amin'ny push

GitOps: Fampitahana ny fomba fisintonana sy fanosehana

Amin'ny fomba fanosehana, ny rafitra ivelany (indrindra ny fantsona CD) dia manomboka ny fametrahana ny cluster aorian'ny fanoloran-tena amin'ny tahiry Git na raha mahomby ny fantsona CI teo aloha. Amin'ity fomba ity dia manana fidirana amin'ny cluster ny rafitra.

Плюсы:

  1. Ny fiarovana dia voafaritry ny tahiry Git ary manangana fantsona.
  2. Mora kokoa ny fametrahana tabilao Helm ary manohana plugins Helm.
  3. Mora kokoa ny mitantana ny tsiambaratelo satria azo ampiasaina amin'ny fantsona ny tsiambaratelo ary azo tehirizina ao amin'ny Git ihany koa (miankina amin'ny safidin'ny mpampiasa).
  4. Tsy misy fifandraisana amin'ny fitaovana iray manokana, satria azo ampiasaina ny karazana rehetra.
  5. Ny fanavaozana ny dikan-kaontenera dia azo atomboka amin'ny alàlan'ny fantsona fananganana.

Минусы:

  1. Ny angona fidirana cluster dia ao anatin'ny rafitra fananganana.
  2. Mbola mora kokoa ny fanavaozana ny kaontenera fametrahana azy miaraka amin'ny fizotry ny fisarihana.
  3. Ny fiankinan-doha mafy amin'ny rafitra CD, satria ny fantsona ilaintsika dia mety ho nosoratana tany am-boalohany ho an'ny Gitlab Runners, ary avy eo ny ekipa dia manapa-kevitra ny hifindra any Azure DevOps na Jenkins ...

Vokatra: Tosika sa Sintonina?

Toy ny mahazatra, ny fomba fiasa tsirairay dia manana ny mahatsara sy maharatsy azy. Ny asa sasany dia mora tanterahana amin'ny iray ary sarotra kokoa amin'ny iray hafa. Tamin'ny voalohany dia nanao deployments tamin'ny tanana aho, saingy rehefa nahita lahatsoratra vitsivitsy momba ny Weave Flux aho dia nanapa-kevitra ny hampihatra ny fizotran'ny GitOps ho an'ny tetikasa rehetra. Ho an'ny maodely fototra dia mora izany, saingy avy eo dia nanomboka sahirana tamin'ny tabilao Helm aho. Tamin'izany fotoana izany, ny Weave Flux dia nanolotra dikan-teny fototra ho an'ny Helm Chart Operator, saingy na dia ankehitriny aza dia sarotra kokoa ny asa sasany noho ny filàna mamorona tsiambaratelo sy mampihatra azy ireo. Azonao atao ny miady hevitra fa ny fomba fisintonana dia azo antoka kokoa satria ny fahazoan-dàlana cluster dia tsy azo idirana ivelan'ny cluster, izay manatsara ny fiarovana mba hahatonga azy ho mendrika ny ezaka fanampiny.

Rehefa avy nieritreritra aho dia tonga tamin'ny fanatsoahan-kevitra tsy nampoizina fa tsy izany no izy. Raha miresaka momba ny singa mila fiarovana ambony indrindra isika, ity lisitra ity dia ahitana fitahirizana miafina, rafitra CI/CD, ary fitahirizana Git. Ny vaovao ao anatin'izy ireo dia tena marefo ary mila fiarovana ambony indrindra. Fanampin'izay, raha misy olona miditra ao amin'ny fitahirizanao Git ary afaka manosika kaody ao, dia afaka mametraka izay tiany (na misintona na manosika) ary miditra ao amin'ny rafitry ny cluster. Noho izany, ny singa manan-danja indrindra mila arovana dia ny tahiry Git sy ny rafitra CI/CD, fa tsy ny fahazoan-dàlana cluster. Raha manana politika sy fanaraha-maso fiarovana tsara ho an'ireo karazana rafitra ireo ianao, ary ny fahazoan-dàlana cluster dia alaina amin'ny fantsona ho tsiambaratelo fotsiny, ny fiarovana fanampiny amin'ny fomba fisarihana dia mety tsy ho sarobidy araka ny fiheverana tany am-boalohany.

Noho izany, raha ny fomba fisintonana dia mitaky asa bebe kokoa ary tsy manome tombony azo antoka, tsy lojika ve ny fampiasana ny fomba fanosehana fotsiny? Saingy misy olona mety hiady hevitra fa amin'ny fomba fanosehana dia mifamatotra loatra amin'ny rafitra CD ianao ary, angamba, tsara kokoa ny tsy manao izany mba ho mora kokoa ny fanatanterahana ny fifindra-monina amin'ny ho avy.

Raha ny hevitro (toy ny mahazatra), dia tokony hampiasa izay mety indrindra amin'ny tranga manokana ianao na mitambatra. Izaho manokana dia mampiasa ireo fomba roa ireo: Weave Flux ho an'ny fametrahana mifototra amin'ny fisintonana izay ahitana ny serivisintsika manokana indrindra, ary fomba fanosehana miaraka amin'ny Helm sy plugins, izay manamora ny fampiharana ny sarin'ny Helm amin'ny cluster ary mamela anao hamorona tsiambaratelo tsy misy dikany. Heveriko fa tsy hisy vahaolana tokana mety amin'ny tranga rehetra, satria misy foana ny nuances ary miankina amin'ny fampiharana manokana. Raha lazaina izany, tena manoro hevitra ny GitOps aho - manamora ny fiainana izany ary manatsara ny fiarovana.

Manantena aho fa ny traikefako momba ity lohahevitra ity dia hanampy anao hanapa-kevitra hoe inona no fomba mety kokoa amin'ny karazana fametrahanao, ary faly aho mandre ny hevitrao.

PS Note avy amin'ny mpandika teny

Ny lafy ratsiny amin'ny maodely sintonina dia sarotra ny mametraka ireo fanehoana voadika ao amin'ny Git, saingy tsy misy lafy ratsiny fa ny fantsona CD ao amin'ny maodely sintonina dia miaina misaraka amin'ny fivoahana ary lasa fantsona sokajy amin'ny ankapobeny. Ampiharo hatrany. Noho izany, ilaina ny ezaka bebe kokoa mba hanangonana ny satan'izy ireo avy amin'ny fametrahana rehetra ary amin'ny fomba ahoana no ahafahana miditra amin'ny logs/status, indrindra raha mifandray amin'ny rafitra CD.

Amin'io lafiny io, ny maodely fanosehana dia ahafahantsika manome antoka farafaharatsiny amin'ny fivoahana, satria ny androm-piainan'ny fantsona dia azo atao mitovy amin'ny androm-piainan'ny fivoahana.

Nanandrana ireo modely roa ireo izahay ary tonga tamin'ny fanatsoahan-kevitra mitovy amin'ny mpanoratra ny lahatsoratra:

  1. Ny maodely fisintonana dia mety ho antsika handamina ny fanavaozana ny singa rafitra amin'ny cluster marobe (jereo. lahatsoratra momba ny addon-operator).
  2. Ny maodely fanosehana miorina amin'ny GitLab CI dia mety tsara amin'ny famoahana rindranasa mampiasa tabilao Helm. Amin'izay fotoana izay ihany koa, ny fandefasana ny fametrahana ao anatin'ny fantsona dia araha-maso amin'ny alàlan'ny fitaovana werf. Raha ny tokony ho izy, ao anatin'ny tontolon'ity tetikasanay ity, dia nandre ny "GitOps" tsy tapaka izahay rehefa niresaka momba ireo olana mavesatry ny injeniera DevOps teo amin'ny toerana misy anay ao amin'ny KubeCon Europe'19.

PPS avy amin'ny mpandika teny

Vakio ihany koa ao amin'ny bilaoginay:

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Mampiasa GitOps ve ianao?

  • Eny, misintona fomba

  • Eny, tosika

  • Eny, misintona + manosika

  • Eny, zavatra hafa

  • No

Mpampiasa 30 no nifidy. Mpampiasa 10 no nifady.

Source: www.habr.com

Add a comment