GitOps: Konparezon Metòd Pull ak Pouse

Remak. trad.: Nan kominote Kubernetes, yon tandans ki rele GitOps ap pran popilarite evidan, jan nou te wè pèsonèlman, vizite KubeCon Europe 2019. Tèm sa a te relativman resan envante pa tèt Weaveworks - Alexis Richardson - epi li vle di itilizasyon zouti ki abitye ak devlopè yo (sitou Git, pakonsekan non an) pou rezoud pwoblèm operasyonèl yo. An patikilye, nou ap pale sou operasyon an nan Kubernetes pa estoke konfigirasyon li yo nan Git ak otomatikman woule soti chanjman nan gwoup la. Matthias Jg pale sou de apwòch nan deplwaye sa a nan atik sa a.

GitOps: Konparezon Metòd Pull ak Pouse

Ane pase a, (an reyalite, fòmèlman sa te rive nan mwa Out 2017 - approx. trad.) Gen yon nouvo apwòch pou deplwaye aplikasyon nan Kubernetes. Li rele GitOps, epi li baze sou lide debaz ke vèsyon deplwaman yo swiv nan anviwònman an sekirite nan yon depo Git.

Avantaj prensipal yo nan apwòch sa a se jan sa a::

  1. Deplwaman vèsyon ak istwa chanjman. Eta a nan tout gwoup la estoke nan yon depo Git, ak deplwaman yo mete ajou sèlman atravè komite. Anplis de sa, tout chanjman yo ka swiv lè l sèvi avèk istwa komèt la.
  2. Rollbacks lè l sèvi avèk kòmandman Git abitye. Senp git reset pèmèt ou Reyajiste chanjman nan deplwaman; eta sot pase yo toujou disponib.
  3. Kontwòl aksè pare. Tipikman, yon sistèm Git gen anpil done sansib, kidonk pifò konpayi yo peye atansyon espesyal pou pwoteje li. An konsekans, pwoteksyon sa a aplike tou pou operasyon ak deplwaman.
  4. Règleman pou Deplwaman. Pifò sistèm Git nativman sipòte règleman branch pa branch-pa egzanp, demann rale sèlman ka mete ajou mèt, epi chanjman yo dwe revize ak aksepte pa yon lòt manm ekip. Menm jan ak kontwòl aksè, menm règleman yo aplike pou mizajou deplwaman yo.

Kòm ou ka wè, gen anpil avantaj nan metòd GitOps la. Pandan ane ki sot pase a, de apwòch yo te pran popilarite patikilye. Youn se pouse ki baze sou, lòt la se rale ki baze sou. Anvan nou gade yo, ann premye gade ki jan deplwaman Kubernetes tipik yo sanble.

Metòd deplwaman

Nan dènye ane yo, Kubernetes te etabli divès metòd ak zouti pou deplwaman:

  1. Ki baze sou modèl natif natal Kubernetes/Kustomize. Sa a se fason ki pi fasil pou deplwaye aplikasyon sou Kubernetes. Pwomotè a kreye dosye YAML debaz yo epi aplike yo. Pou debarase m de toutan reekri menm modèl yo, Kustomize te devlope (li vire modèl Kubernetes nan modil). Remak. trad.: Kustomize te entegre nan kubectl ak lage Kubernetes 1.14.
  2. Tablo Helm. Tablo Helm pèmèt ou kreye seri modèl, resipyan init, sidecars, elatriye, ki itilize pou deplwaye aplikasyon ki gen opsyon personnalisation ki pi fleksib pase nan yon apwòch ki baze sou modèl. Metòd sa a baze sou dosye YAML modèl yo. Helm ranpli yo ak divès paramèt epi li voye yo bay Tiller, yon eleman gwoup ki deplwaye yo nan gwoup la epi ki pèmèt mizajou ak rollback. Bagay ki enpòtan an se ke Helm esansyèlman jis foure valè yo vle nan modèl yo ak Lè sa a, aplike yo nan menm fason an kòm li se fè nan apwòch tradisyonèl la. (li plis sou kijan li fonksyone ak kijan ou ka itilize li nan nou atik pa Helm - approx. trad.). Gen yon gran varyete tablo Helm ki pare ki kouvri yon pakèt travay.
  3. Zouti altènatif. Gen anpil zouti altènatif. Ki sa yo tout gen an komen se yo ke yo vire kèk dosye modèl nan Kubernetes-lizib dosye YAML ak Lè sa a, sèvi ak yo.

Nan travay nou an, nou toujou ap itilize tablo Helm pou zouti enpòtan (piske yo gen anpil bagay deja pare, sa ki fè lavi pi fasil) ak "pi" dosye Kubernetes YAML pou deplwaye aplikasyon pwòp nou yo.

Rale & Pouse

Nan youn nan dènye pòs blog mwen yo, mwen prezante zouti a Tise Flux, ki pèmèt ou komèt modèl nan repozitwa Git la epi mete ajou deplwaman an apre chak komèt oswa pouse veso a. Eksperyans mwen montre ke zouti sa a se youn nan prensipal yo nan pwomosyon apwòch la rale, kidonk mwen pral souvan refere a li. Si ou vle konnen plis sou kijan pou itilize li, isit la lyen nan atik la.

NB! Tout benefis ki genyen nan sèvi ak GitOps rete menm bagay la tou pou tou de apwòch.

Apwòch ki baze sou rale

GitOps: Konparezon Metòd Pull ak Pouse

Apwòch rale a baze sou lefèt ke tout chanjman yo aplike nan gwoup la. Gen yon operatè andedan gwoup la ki regilyèman tcheke depo Git ak Docker Rejis ki asosye yo. Si nenpòt chanjman rive nan yo, eta a nan gwoup la mete ajou intern. Pwosesis sa a jeneralman konsidere kòm trè an sekirite, paske pa gen okenn kliyan ekstèn ki gen aksè a dwa administratè gwoup.

Pou:

  1. Pa gen okenn kliyan ekstèn ki gen dwa fè chanjman nan gwoup la; tout mizajou yo ap soti anndan an.
  2. Gen kèk zouti tou ki pèmèt ou senkronize mizajou tablo Helm epi konekte yo ak gwoup la.
  3. Docker Rejis ka tcheke pou nouvo vèsyon. Si gen yon nouvo imaj ki disponib, depo Git ak deplwaman yo mete ajou nan nouvo vèsyon an.
  4. Zouti Pull yo ka distribye atravè diferan espas non ak diferan depo Git ak otorizasyon. Mèsi a sa a, yo ka itilize yon modèl multilocataire. Pou egzanp, ekip A ta ka itilize espas non A, ekip B ta ka itilize espas non B, ak ekip enfrastrikti a ta ka itilize espas mondyal.
  5. Kòm yon règ, zouti yo trè lejè.
  6. Konbine ak zouti tankou operatè Bitnami Sekrè sele, sekrè yo ka estoke kode nan yon repozitwa Git ak rekipere nan gwoup la.
  7. Pa gen okenn koneksyon ak tiyo CD depi deplwaman yo fèt nan gwoup la.

Kont:

  1. Jere sekrè deplwaman ki soti nan tablo Helm pi difisil pase sa yo regilye, depi premye yo dwe pwodwi nan fòm lan nan, di, sekrè sele, Lè sa a, dechifre pa yon operatè entèn, epi sèlman apre sa yo vin disponib nan zouti nan rale. Lè sa a, ou ka kouri lage a nan Helm ak valè yo nan sekrè yo deja deplwaye. Fason ki pi fasil la se kreye yon sekrè ak tout valè Helm yo itilize pou deplwaman, dechifre li epi komèt li nan Git.
  2. Lè ou pran yon apwòch rale, ou vin mare nan rale zouti. Sa limite abilite pou personnaliser pwosesis deplwaman nan yon gwoup. Pou egzanp, Kustomize konplike pa lefèt ke li dwe kouri anvan modèl final yo angaje nan Git. Mwen pa di ou pa ka sèvi ak zouti otonòm, men yo pi difisil pou entegre nan pwosesis deplwaman ou.

Apwòch ki baze sou pouse

GitOps: Konparezon Metòd Pull ak Pouse

Nan apwòch pouse a, yon sistèm ekstèn (sitou CD tuyaux) lanse deplwaman nan gwoup la apre yon angajman nan depo Git la oswa si tiyo CI anvan an gen siksè. Nan apwòch sa a, sistèm lan gen aksè a gwoup la.

Pou:

  1. Sekirite a detèmine pa depo Git la ak bati tiyo.
  2. Deplwaye tablo Helm se pi fasil epi li sipòte grefon Helm.
  3. Sekrè yo pi fasil pou jere paske sekrè yo ka itilize nan tiyo epi yo ka estoke ankode nan Git (ki depann sou preferans itilizatè a).
  4. Pa gen okenn koneksyon ak yon zouti espesifik, depi nenpòt kalite ka itilize.
  5. Mizajou vèsyon veso yo ka inisye pa tiyo konstriksyon an.

Kont:

  1. Done aksè gwoup la se andedan sistèm konstriksyon an.
  2. Mizajou kontenè deplwaman toujou pi fasil ak yon pwosesis rale.
  3. Gwo depandans sou sistèm CD a, depi tiyo nou bezwen yo te ekri orijinal pou Gitlab Runners, ak Lè sa a, ekip la deside deplase nan Azure DevOps oswa Jenkins ... epi yo pral gen imigre yon gwo kantite konstriksyon tiyo.

Rezilta: Pouse oswa Rale?

Kòm se nòmalman ka a, chak apwòch gen avantaj ak dezavantaj li yo. Gen kèk travay ki pi fasil pou akonpli ak youn ak pi difisil ak yon lòt. Okòmansman, mwen te fè deplwaman manyèlman, men apre mwen te rankontre kèk atik sou Weave Flux, mwen te deside aplike pwosesis GitOps pou tout pwojè yo. Pou modèl debaz sa a te fasil, men Lè sa a, mwen te kòmanse kouri nan difikilte ak tablo Helm. Nan moman sa a, Weave Flux sèlman ofri yon vèsyon rudimentaire nan Helm Chart Operator, men menm kounye a kèk travay yo pi difisil akòz bezwen an manyèlman kreye sekrè epi aplike yo. Ou ta ka diskite ke apwòch rale a pi an sekirite paske kalifikasyon gwoup la pa aksesib deyò gwoup la, sa ki fè li pi an sekirite ke li vo efò siplemantè a.

Apre kèk reflechi, mwen te rive nan konklizyon an inatandi ke sa a se pa konsa. Si nou pale sou eleman ki mande pou maksimòm pwoteksyon, lis sa a ap gen ladan depo sekrè, sistèm CI/CD, ak depo Git. Enfòmasyon ki anndan yo trè vilnerab e li bezwen pwoteksyon maksimòm. Anplis de sa, si yon moun antre nan depo Git ou a epi li ka pouse kòd la, yo ka deplwaye tou sa yo vle (si li se rale oswa pouse) epi enfiltre sistèm gwoup la. Kidonk, eleman ki pi enpòtan ki bezwen pwoteje yo se depo Git ak sistèm CI/CD, pa kalifikasyon gwoup yo. Si ou gen règleman byen konfigirasyon ak kontwòl sekirite pou kalite sistèm sa yo, epi kalifikasyon gwoup yo sèlman ekstrè nan tiyo kòm sekrè, sekirite a te ajoute nan yon apwòch rale ka pa gen menm valè jan yo te panse orijinal.

Se konsa, si apwòch rale a pi entansif travay epi li pa bay yon benefis sekirite, èske li lojik pou itilize sèlman apwòch pouse a? Men, yon moun ta ka diskite ke nan apwòch la pouse ou twò mare nan sistèm nan CD epi, petèt, li pi bon pa fè sa pou ke li pral pi fasil pote soti nan migrasyon nan tan kap vini an.

Nan opinyon mwen (tankou toujou), ou ta dwe itilize sa ki pi apwopriye pou yon ka patikilye oswa konbine. Pèsonèlman, mwen itilize tou de apwòch: Weave Flux pou deplwaman ki baze sou rale ki sitou gen ladan pwòp sèvis nou yo, ak yon apwòch pouse ak Helm ak grefon, ki fè li fasil pou aplike tablo Helm nan gwoup la epi pèmèt ou kreye sekrè san pwoblèm. Mwen panse ke pa janm pral gen yon sèl solisyon apwopriye pou tout ka yo, paske toujou gen yon anpil nan nuans epi yo depann sou aplikasyon an espesifik. Sa yo te di, mwen trè rekòmande GitOps - li fè lavi anpil pi fasil epi amelyore sekirite.

Mwen espere eksperyans mwen sou sijè sa a pral ede w deside ki metòd ki pi apwopriye pou kalite deplwaman ou, e mwen ta kontan tande opinyon w.

PS Remak soti nan tradiktè a

Dezavantaj nan modèl rale a se ke li difisil pou mete manifeste rann nan Git, men pa gen okenn dezavantaj ke tiyo CD nan modèl la rale viv separeman ak deplwaye a epi esansyèlman vin tounen yon tiyo kategori. Aplike kontinyèl. Se poutèt sa, menm plis efò yo pral oblije kolekte estati yo nan tout deplwaman ak yon jan kanmenm bay aksè a mòso bwa / estati, de preferans ak referans a sistèm nan CD.

Nan sans sa a, modèl pouse a pèmèt nou bay omwen kèk garanti nan deplwaye, paske lavi tiyo a ka egal ak tout lavi a nan deplwaye.

Nou te eseye tou de modèl e nou te rive nan menm konklizyon ak otè atik la:

  1. Modèl rale a apwopriye pou nou òganize mizajou konpozan sistèm yo sou yon gwo kantite grap (gade. atik sou addon-operatè).
  2. Modèl pouse ki baze sou GitLab CI byen adapte pou woule aplikasyon lè l sèvi avèk tablo Helm. An menm tan an, yo siveye deplwaman deplwaman nan tiyo yo lè l sèvi avèk zouti a werf. By wout la, nan kontèks pwojè sa a nou an, nou te tande konstan "GitOps" lè nou te diskite sou pwoblèm ijan enjenyè DevOps yo nan stand nou an nan KubeCon Europe'19.

PPS soti nan tradiktè

Li tou sou blog nou an:

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Èske w ap itilize GitOps?

  • Wi, rale apwòch

  • Wi, pouse

  • Wi, rale + pouse

  • Wi, yon lòt bagay

  • Pa gen

30 itilizatè yo te vote. 10 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè