Kini GitOps?

Akiyesi. itumọ.: Lẹhin ti a laipe atejade ohun elo nipa awọn ọna fifa ati titari ni GitOps, a rii iwulo ninu awoṣe yii ni gbogbogbo, ṣugbọn awọn atẹjade ede Rọsia pupọ wa lori koko yii (ko si ọkan lori Habré). Nitorinaa, a ni inudidun lati fun akiyesi rẹ ni itumọ ti nkan miiran - botilẹjẹpe o fẹrẹ to ọdun kan sẹhin! - lati Weaveworks, ori eyiti o da ọrọ naa “GitOps.” Ọrọ naa ṣe alaye pataki ti ọna ati awọn iyatọ bọtini lati awọn ti o wa tẹlẹ.

A odun seyin a atejade ifihan to GitOps. Ni akoko yẹn, a pin bi ẹgbẹ Weaveworks ṣe ṣe ifilọlẹ SaaS ni kikun ti o da lori Kubernetes ati idagbasoke eto awọn iṣe ti o dara julọ fun imuṣiṣẹ, iṣakoso, ati ibojuwo ni agbegbe abinibi awọsanma.

Nkan naa yipada lati jẹ olokiki. Awọn eniyan miiran bẹrẹ si sọrọ nipa GitOps ati bẹrẹ titẹjade awọn irinṣẹ tuntun fun git titari, idagbasoke, asiri, awọn iṣẹ, lemọlemọfún Integration ati bẹbẹ lọ. Ti han lori oju opo wẹẹbu wa kan ti o tobi nọmba ti Awọn atẹjade ati awọn ọran lilo GitOps. Ṣugbọn diẹ ninu awọn eniyan tun ni ibeere. Bawo ni awoṣe ṣe yatọ si ti aṣa? amayederun bi koodu ati ifijiṣẹ lemọlemọfún (ifijiṣẹ ilọsiwaju)? Ṣe o jẹ dandan lati lo Kubernetes?

Laipẹ a rii pe a nilo apejuwe tuntun kan, fifunni:

  1. Nọmba nla ti awọn apẹẹrẹ ati awọn itan;
  2. Itumọ pato ti GitOps;
  3. Afiwera pẹlu ibile lemọlemọfún ifijiṣẹ.

Ninu nkan yii a ti gbiyanju lati bo gbogbo awọn akọle wọnyi. O pese ifihan imudojuiwọn si GitOps ati idagbasoke ati irisi CI/CD. A nipataki idojukọ lori Kubernetes, biotilejepe awọn awoṣe le ti wa ni ti ṣakopọ.

Pade GitOps

Fojuinu Alice. O nṣiṣẹ Iṣeduro Ẹbi, eyiti o funni ni ilera, ọkọ ayọkẹlẹ, ile, ati iṣeduro irin-ajo si awọn eniyan ti o nšišẹ pupọ lati ṣawari awọn ins ati awọn ijade ti awọn adehun funrararẹ. Iṣowo rẹ bẹrẹ bi iṣẹ akanṣe ẹgbẹ nigbati Alice n ṣiṣẹ ni banki kan bi onimọ-jinlẹ data. Ni ọjọ kan o rii pe o le lo awọn algoridimu kọnputa ti ilọsiwaju lati ṣe itupalẹ data diẹ sii daradara ati ṣe agbekalẹ awọn idii iṣeduro. Awọn oludokoowo ṣe inawo iṣẹ akanṣe naa, ati ni bayi ile-iṣẹ rẹ n mu diẹ sii ju $20 million ni ọdun kan ati pe o n dagba ni iyara. Lọwọlọwọ, o gba awọn eniyan 180 ni awọn ipo pupọ. Eyi pẹlu ẹgbẹ imọ-ẹrọ ti o ndagba, ṣetọju oju opo wẹẹbu, data data, ati itupalẹ ipilẹ alabara. Ẹgbẹ ti awọn eniyan 60 jẹ oludari nipasẹ Bob, oludari imọ-ẹrọ ti ile-iṣẹ naa.

Ẹgbẹ Bob n gbe awọn eto iṣelọpọ ṣiṣẹ ninu awọsanma. Awọn ohun elo mojuto wọn ṣiṣẹ lori GKE, ni anfani ti Kubernetes lori Google Cloud. Ni afikun, wọn lo orisirisi data ati awọn irinṣẹ atupale ninu iṣẹ wọn.

Iṣeduro Ẹbi ko ṣeto lati lo awọn apoti, ṣugbọn a mu ninu itara Docker. Laipẹ ile-iṣẹ ṣe awari pe GKE jẹ ki o rọrun lati ran awọn iṣupọ lati ṣe idanwo awọn ẹya tuntun. Jenkins fun CI ati Quay ni a ṣafikun lati ṣeto iforukọsilẹ eiyan, awọn iwe afọwọkọ ti kọ fun Jenkins ti o ti awọn apoti tuntun ati awọn atunto si GKE.

Diẹ ninu awọn akoko ti koja. Alice ati Bob ni ibanujẹ pẹlu iṣẹ ti ọna ti wọn yan ati ipa rẹ lori iṣowo naa. Ifilọlẹ ti awọn apoti ko mu iṣelọpọ pọ si bi ẹgbẹ ti nireti. Nigba miiran awọn imuṣiṣẹ yoo fọ, ati pe ko ṣe akiyesi boya awọn iyipada koodu jẹ ẹbi. O tun jade lati ṣoro lati tọpinpin awọn iyipada atunto. Nigbagbogbo o jẹ dandan lati ṣẹda iṣupọ tuntun ati gbe awọn ohun elo si rẹ, nitori eyi ni ọna ti o rọrun julọ lati yọkuro idotin ti eto naa ti di. Alice bẹru pe ipo naa yoo buru si bi ohun elo ti dagbasoke (ni afikun, iṣẹ akanṣe tuntun ti o da lori ikẹkọ ẹrọ ti n ṣe). Bob ti ṣe adaṣe pupọ julọ iṣẹ naa ko loye idi ti opo gigun ti epo tun jẹ riru, ko ṣe iwọn daradara, ati pe o nilo ilowosi afọwọṣe lorekore?

Lẹhinna wọn kọ ẹkọ nipa GitOps. Ipinnu yii yipada lati jẹ deede ohun ti wọn nilo lati ni igboya gbe siwaju.

Alice ati Bob ti ngbọ nipa Git, DevOps, ati awọn amayederun bi ṣiṣiṣẹ koodu fun awọn ọdun. Ohun ti o jẹ alailẹgbẹ nipa GitOps ni pe o mu eto awọn iṣe ti o dara julọ wa-mejeeji asọye ati iwuwasi-fun imuse awọn imọran wọnyi ni aaye ti Kubernetes. Akori yii dide leralera, pẹlu ninu Weaveworks bulọọgi.

Iṣeduro idile pinnu lati ṣe GitOps. Ile-iṣẹ ni bayi ni awoṣe iṣẹ adaṣe adaṣe ti o ni ibamu pẹlu Kubernetes ati apapọ iyara bẹbẹ iduroṣinṣinnitori won:

  • ri pe awọn egbe ká ise sise ti ilọpo meji lai ẹnikẹni lọ irikuri;
  • duro sìn awọn iwe afọwọkọ. Dipo, wọn le ni idojukọ bayi lori awọn ẹya tuntun ati ilọsiwaju awọn ọna ṣiṣe - fun apẹẹrẹ, ṣafihan awọn iyipo canary ati ilọsiwaju idanwo;
  • a ti dara si awọn imuṣiṣẹ ilana ki o ṣọwọn fi opin si;
  • ni aye lati mu pada awọn imuṣiṣẹ lẹhin awọn ikuna apa kan laisi ilowosi afọwọṣe;
  • ra loоNla igbekele ninu awọn ọna šiše ifijiṣẹ. Alice ati Bob ṣe awari pe wọn le pin ẹgbẹ si awọn ẹgbẹ microservice ṣiṣẹ ni afiwe;
  • le ṣe awọn ayipada 30-50 si iṣẹ akanṣe ni gbogbo ọjọ nipasẹ awọn igbiyanju ti ẹgbẹ kọọkan ati gbiyanju awọn ilana tuntun;
  • o rọrun lati fa awọn olupilẹṣẹ tuntun si iṣẹ akanṣe naa, ti o ni aye lati yi awọn imudojuiwọn jade si iṣelọpọ nipa lilo awọn ibeere fa laarin awọn wakati diẹ;
  • ni irọrun ṣe ayewo laarin ilana ti SOC2 (fun ibamu ti awọn olupese iṣẹ pẹlu awọn ibeere fun iṣakoso data to ni aabo; ka diẹ sii, fun apẹẹrẹ, nibi - isunmọ. itumọ.).

Kini o ti ṣẹlẹ?

GitOps jẹ nkan meji:

  1. Awoṣe iṣẹ fun Kubernetes ati abinibi awọsanma. O pese eto awọn iṣe ti o dara julọ fun imuṣiṣẹ, ṣiṣakoso, ati abojuto awọn iṣupọ ati awọn ohun elo. Yangan definition ninu awọn fọọmu ọkan ifaworanhan lati Luis Faceira:
  2. Ọna si ṣiṣẹda agbegbe iṣakoso ohun elo alagbese-centric. A lo iṣan-iṣẹ Git si awọn iṣẹ mejeeji ati idagbasoke. Jọwọ ṣe akiyesi pe eyi kii ṣe nipa titari Git nikan, ṣugbọn nipa siseto gbogbo ṣeto ti CI/CD ati awọn irinṣẹ UI/UX.

Awọn ọrọ diẹ nipa Git

Ti o ko ba faramọ pẹlu awọn ọna ṣiṣe iṣakoso ẹya ati ṣiṣan-orisun Git, a ṣeduro gaan kikọ nipa wọn. Ṣiṣẹ pẹlu awọn ẹka ati awọn ibeere fifa le dabi ẹnipe idan dudu ni akọkọ, ṣugbọn awọn anfani ni o tọ si igbiyanju naa. Nibi ti o dara article lati bẹrẹ.

Bawo ni Kubernetes ṣiṣẹ

Ninu itan wa, Alice ati Bob yipada si GitOps lẹhin ṣiṣe pẹlu Kubernetes fun igba diẹ. Lootọ, GitOps ni ibatan pẹkipẹki si Kubernetes - o jẹ awoṣe iṣiṣẹ fun awọn amayederun ati awọn ohun elo ti o da lori Kubernetes.

Kini Kubernetes fun awọn olumulo?

Eyi ni diẹ ninu awọn ẹya akọkọ:

  1. Ninu awoṣe Kubernetes, ohun gbogbo le ṣe apejuwe ni fọọmu asọye.
  2. Olupin Kubernetes API gba ikede yii bi titẹ sii ati lẹhinna ngbiyanju nigbagbogbo lati mu iṣupọ wa sinu ipinlẹ ti a ṣalaye ninu ikede naa.
  3. Awọn ikede ti to lati ṣapejuwe ati ṣakoso ọpọlọpọ awọn ẹru iṣẹ lọpọlọpọ — “awọn ohun elo.”
  4. Bi abajade, awọn ayipada si ohun elo ati iṣupọ waye nitori:
    • awọn ayipada ninu awọn aworan apoti;
    • awọn iyipada si sipesifikesonu asọye;
    • awọn aṣiṣe ni ayika - fun apẹẹrẹ, awọn ipadanu eiyan.

Kubernetes 'Nla Convergence Awọn agbara

Nigbati olutọju kan ba ṣe awọn ayipada iṣeto, Kubernetes orchestrator yoo lo wọn si iṣupọ niwọn igba ti ipo rẹ ba jẹ yoo ko wa sunmo si titun iṣeto ni. Awoṣe yii n ṣiṣẹ fun eyikeyi orisun Kubernetes ati pe o jẹ extensible pẹlu Awọn Itumọ Awọn orisun Aṣa (CRDs). Nitorinaa, awọn imuṣiṣẹ Kubernetes ni awọn ohun-ini iyalẹnu wọnyi:

  • Adaṣiṣẹ: Awọn imudojuiwọn Kubernetes pese ẹrọ kan lati ṣe adaṣe ilana ti lilo awọn ayipada ni oore-ọfẹ ati ni akoko ti akoko.
  • Ijọpọ: Kubernetes yoo tẹsiwaju lati gbiyanju awọn imudojuiwọn titi di aṣeyọri.
  • Ailagbara: Tun awọn ohun elo ti convergence asiwaju si kanna esi.
  • Ipinnu: Nigbati awọn orisun ba to, ipo iṣupọ imudojuiwọn da lori ipo ti o fẹ nikan.

Bawo ni GitOps ṣiṣẹ

A ti kọ ẹkọ to nipa Kubernetes lati ṣalaye bi GitOps ṣe n ṣiṣẹ.

Jẹ ki a pada si awọn ẹgbẹ microservices Iṣeduro Ẹbi. Kini wọn nigbagbogbo ni lati ṣe? Wo atokọ ti o wa ni isalẹ (ti awọn ohun kan ninu rẹ ba dabi ajeji tabi aimọ, jọwọ dawọ duro lori ibawi ki o duro pẹlu wa). Iwọnyi jẹ awọn apẹẹrẹ nikan ti ṣiṣan iṣẹ orisun Jenkins. Ọpọlọpọ awọn ilana miiran wa nigba ṣiṣẹ pẹlu awọn irinṣẹ miiran.

Ohun akọkọ ni pe a rii pe imudojuiwọn kọọkan dopin pẹlu awọn ayipada si awọn faili iṣeto ni ati awọn ibi ipamọ Git. Awọn ayipada wọnyi si Git fa “Oṣiṣẹ GitOps” lati ṣe imudojuiwọn iṣupọ naa:

1. Ilana iṣẹ: "Jenkins kọ - titunto si eka».
Akojọ iṣẹ-ṣiṣe:

  • Jenkins titari awọn aworan ti a samisi si Quay;
  • Jenkins titari atunto ati awọn shatti Helm si garawa ipamọ titunto si;
  • Iṣẹ awọsanma daakọ atunto ati awọn shatti lati inu garawa ipamọ titunto si ibi ipamọ Git titunto si;
  • Oniṣẹ GitOps ṣe imudojuiwọn iṣupọ naa.

2. Jenkins kọ - itusilẹ tabi ẹka hotfix:

  • Jenkins Titari awọn aworan ti ko ni aami si Quay;
  • Jenkins titari atunto ati awọn shatti Helm si garawa ibi-itọju ipele;
  • Iṣẹ iṣẹ awọsanma ṣe idaako atunto ati awọn shatti lati inu garawa ibi-itọju idasile si ibi ipamọ Git ti iṣeto;
  • Oniṣẹ GitOps ṣe imudojuiwọn iṣupọ naa.

3. Jenkins kọ - idagbasoke tabi ẹya-ara ẹka:

  • Jenkins Titari awọn aworan ti ko ni aami si Quay;
  • Jenkins titari atunto ati awọn shatti Helm sinu garawa ipamọ idagbasoke;
  • Iṣẹ awọsanma ṣe idaako atunto ati awọn shatti lati inu garawa ipamọ idagbasoke si ibi ipamọ Git idagbasoke;
  • Oniṣẹ GitOps ṣe imudojuiwọn iṣupọ naa.

4. Fifi titun kan ni ose:

  • Oluṣakoso tabi alabojuto (LCM/ops) pe Gradle lati ran lọwọ akọkọ ati tunto awọn iwọntunwọnsi fifuye nẹtiwọọki (NLBs);
  • LCM / ops ṣe atunto tuntun kan lati mura imuṣiṣẹ fun awọn imudojuiwọn;
  • Oniṣẹ GitOps ṣe imudojuiwọn iṣupọ naa.

Apejuwe kukuru ti GitOps

  1. Ṣe apejuwe ipo ti o fẹ ti gbogbo eto nipa lilo awọn alaye asọye fun agbegbe kọọkan (ninu itan wa, ẹgbẹ Bob ṣe asọye gbogbo iṣeto eto ni Git).
    • Ibi ipamọ Git jẹ orisun otitọ kan ṣoṣo nipa ipo ti o fẹ ti gbogbo eto naa.
    • Gbogbo awọn iyipada si ipo ti o fẹ ni a ṣe nipasẹ awọn iṣẹ ni Git.
    • Gbogbo awọn paramita iṣupọ ti o fẹ tun jẹ akiyesi ni iṣupọ funrararẹ. Ni ọna yii a le pinnu boya wọn ṣe deede (converge, konge) tabi yatọ (iyatọ, iyatọ) fẹ ati ki o woye ipinle.
  2. Ti awọn ipinlẹ ti o fẹ ati akiyesi yatọ, lẹhinna:
    • Ilana isọdọkan wa ti o pẹ tabi ya laifọwọyi muuṣiṣẹpọ ibi-afẹde ati awọn ipinlẹ akiyesi. Ninu iṣupọ, Kubernetes ṣe eyi.
    • Ilana naa bẹrẹ lẹsẹkẹsẹ pẹlu gbigbọn "iyipada iyipada".
    • Lẹhin ti diẹ ninu awọn Configurable akoko ti akoko, a "iyato" gbigbọn le ti wa ni rán ti o ba ti ipinle ni o yatọ si.
  3. Ni ọna yii, gbogbo awọn iṣẹ ṣiṣe ni Git fa ijẹrisi ati awọn imudojuiwọn ti o ni agbara si iṣupọ naa.
    • Rollback jẹ isọdọkan si ipo ti o fẹ tẹlẹ.
  4. Ijọpọ jẹ ipari. Iṣẹlẹ rẹ jẹ itọkasi nipasẹ:
    • Ko si awọn itaniji iyatọ fun akoko kan.
    • Itaniji “converged” (fun apẹẹrẹ webhook, iṣẹlẹ kikọ kikọ Git).

Kini iyatọ?

Jẹ ki a tun: gbogbo awọn ohun-ini iṣupọ ti o fẹ gbọdọ jẹ akiyesi ni iṣupọ funrararẹ.

Diẹ ninu awọn apẹẹrẹ ti iyatọ:

  • Yi pada ni faili iṣeto ni nitori awọn ẹka ti o dapọ ni Git.
  • Iyipada ninu faili iṣeto ni nitori adehun Git ti o ṣe nipasẹ alabara GUI.
  • Awọn iyipada pupọ si ipo ti o fẹ nitori PR ni Git atẹle nipa kikọ aworan eiyan ati awọn iyipada atunto.
  • Iyipada ni ipo iṣupọ nitori aṣiṣe kan, rogbodiyan orisun ti o yorisi “iwa buburu” tabi nirọrun iyapa laileto lati ipo atilẹba.

Kini ọna isọdọkan?

Awọn apẹẹrẹ diẹ:

  • Fun awọn apoti ati awọn iṣupọ, ẹrọ isọpọ ti pese nipasẹ Kubernetes.
  • Ilana kanna le ṣee lo lati ṣakoso awọn ohun elo ti o da lori Kubernetes ati awọn apẹrẹ (gẹgẹbi Istio ati Kubeflow).
  • Ilana kan fun iṣakoso ibaraenisepo iṣiṣẹ laarin Kubernetes, awọn ibi ipamọ aworan ati Git pese Oniṣẹ GitOps Weave Flux, eyi ti o jẹ apakan Weave Awọsanma.
  • Fun awọn ẹrọ ipilẹ, ẹrọ isọdọkan gbọdọ jẹ asọye ati adase. Lati iriri tiwa a le sọ iyẹn Ilana ipilẹ sunmọ si itumọ yii, ṣugbọn tun nilo iṣakoso eniyan. Ni ori yii, GitOps fa aṣa atọwọdọwọ ti Awọn amayederun bii koodu.

GitOps darapọ Git pẹlu ẹrọ isọdọkan ti o dara julọ ti Kubernetes lati pese awoṣe fun ilokulo.

GitOps gba wa laaye lati sọ: Nikan awọn ọna ṣiṣe ti o le ṣe apejuwe ati akiyesi le jẹ adaṣe ati iṣakoso.

GitOps jẹ ipinnu fun gbogbo akopọ abinibi awọsanma (fun apẹẹrẹ, Terraform, ati bẹbẹ lọ)

GitOps kii ṣe Kubernetes nikan. A fẹ ki gbogbo eto wa ni ṣiṣe ni asọye ati lo isọdọkan. Nipa gbogbo eto a tumọ si akojọpọ awọn agbegbe ti n ṣiṣẹ pẹlu Kubernetes - fun apẹẹrẹ, “cluster dev 1”, “gbóògì”, bbl Ayika kọọkan pẹlu awọn ẹrọ, awọn iṣupọ, awọn ohun elo, ati awọn atọkun fun awọn iṣẹ ita ti o pese data, ibojuwo. ati be be lo.

Ṣe akiyesi bi Terraform ṣe ṣe pataki si iṣoro bootstrapping ninu ọran yii. Kubernetes ni lati gbe lọ si ibikan, ati lilo Terraform tumọ si pe a le lo awọn ṣiṣan iṣẹ GitOps kanna lati ṣẹda Layer iṣakoso ti o ṣe atilẹyin Kubernetes ati awọn ohun elo. Eyi jẹ adaṣe to dara julọ ti o wulo.

Idojukọ to lagbara wa lori lilo awọn imọran GitOps si awọn fẹlẹfẹlẹ lori oke Kubernetes. Ni akoko yii, awọn solusan iru GitOps wa fun Istio, Helm, Ksonnet, OpenFaaS ati Kubeflow, bakannaa, fun apẹẹrẹ, fun Pulumi, eyiti o ṣẹda Layer fun idagbasoke awọn ohun elo fun abinibi awọsanma.

Kubernetes CI/CD: ṣe afiwe GitOps pẹlu awọn ọna miiran

Gẹgẹbi a ti sọ, GitOps jẹ nkan meji:

  1. Awoṣe iṣẹ fun Kubernetes ati abinibi awọsanma ti ṣalaye loke.
  2. Ọna si agbegbe iṣakoso ohun elo alagbese-centric.

Fun ọpọlọpọ, GitOps jẹ nipataki iṣan-iṣẹ ti o da lori awọn titari Git. A fẹ́ràn rẹ̀ pẹ̀lú. Ṣugbọn kii ṣe gbogbo rẹ: jẹ ki a wo awọn opo gigun ti CI/CD.

GitOps jẹ ki imuṣiṣẹ lemọlemọfún (CD) fun Kubernetes

GitOps nfunni ẹrọ imuṣiṣẹ lemọlemọfún ti o yọkuro iwulo fun “awọn eto iṣakoso imuṣiṣẹ” lọtọ. Kubernetes ṣe gbogbo iṣẹ fun ọ.

  • Ṣiṣe imudojuiwọn ohun elo nilo imudojuiwọn ni Git. Eyi jẹ imudojuiwọn iṣowo si ipo ti o fẹ. "Imuṣiṣẹ" lẹhinna ṣe laarin iṣupọ nipasẹ Kubernetes funrararẹ da lori apejuwe imudojuiwọn.
  • Nitori iseda ti bii Kubernetes ṣe n ṣiṣẹ, awọn imudojuiwọn wọnyi jẹ aropọ. Eyi n pese ẹrọ kan fun imuṣiṣẹ lemọlemọfún ninu eyiti gbogbo awọn imudojuiwọn jẹ atomiki.
  • akiyesi: Weave Awọsanma nfunni oniṣẹ ẹrọ GitOps kan ti o ṣepọ Git ati Kubernetes ati gba CD laaye lati ṣe nipasẹ ṣiṣe atunṣe ipo ti o fẹ ati lọwọlọwọ ti iṣupọ.

Laisi kubectl ati awọn iwe afọwọkọ

O yẹ ki o yago fun lilo Kubectl lati ṣe imudojuiwọn iṣupọ rẹ, ati paapaa yago fun lilo awọn iwe afọwọkọ si awọn pipaṣẹ kubectl ẹgbẹ. Dipo, pẹlu opo gigun ti epo GitOps, olumulo kan le ṣe imudojuiwọn iṣupọ Kubernetes nipasẹ Git.

Awọn anfani pẹlu:

  1. Ọtun. Ẹgbẹ kan ti awọn imudojuiwọn le ṣee lo, kojọpọ ati ifọwọsi nikẹhin, ti o mu wa sunmọ ibi-afẹde ti imuṣiṣẹ atomiki. Ni idakeji, lilo awọn iwe afọwọkọ ko pese eyikeyi iṣeduro ti isọdọkan (diẹ sii lori eyi ni isalẹ).
  2. Aabo. Ifọrọranṣẹ Kelsey Hightower: “Ni ihamọ iraye si iṣupọ Kubernetes rẹ si awọn irinṣẹ adaṣe ati awọn alabojuto ti o ni iduro fun ṣiṣatunṣe tabi titọju rẹ.” wo eleyi na mi atejade nipa ailewu ati ibamu pẹlu awọn alaye imọ-ẹrọ, bakannaa article nipa gige Homebrew nipa jiji awọn iwe-ẹri lati inu iwe afọwọkọ Jenkins ti a kọ ni aibikita.
  3. Iriri olumulo. Kubectl ṣafihan awọn oye ti awoṣe ohun elo Kubernetes, eyiti o jẹ eka pupọ. Bi o ṣe yẹ, awọn olumulo yẹ ki o ṣe ajọṣepọ pẹlu eto ni ipele giga ti abstraction. Nibi Emi yoo tun tọka si Kelsey ati ṣeduro wiwo iru bere.

Iyatọ laarin CI ati CD

GitOps ṣe ilọsiwaju awọn awoṣe CI/CD ti o wa tẹlẹ.

Olupin CI ode oni jẹ ohun elo orchestration kan. Ni pato, o jẹ ohun elo fun orchestrating CI pipelines. Iwọnyi pẹlu kikọ, idanwo, dapọ si ẹhin mọto, bbl Idanwo ti o wọpọ ni lati ṣe iwe afọwọkọ kan ti awọn imudojuiwọn Kubernetes ati ṣiṣe rẹ gẹgẹbi apakan ti opo gigun ti epo lati Titari awọn ayipada si iṣupọ naa. Lootọ, eyi ni ohun ti ọpọlọpọ awọn amoye ṣe. Sibẹsibẹ, eyi kii ṣe aipe, ati pe idi niyi.

CI yẹ ki o lo lati Titari awọn imudojuiwọn si ẹhin mọto, ati iṣupọ Kubernetes yẹ ki o yipada funrararẹ da lori awọn imudojuiwọn wọnyẹn lati ṣakoso CD inu inu. A pe e fa awoṣe fun CD, Ko dabi CI titari awoṣe. CD jẹ apakan asiko isise orchestration.

Kini idi ti Awọn olupin CI ko yẹ ki o ṣe awọn CD nipasẹ Awọn imudojuiwọn Taara ni Kubernetes

Ma ṣe lo olupin CI kan lati ṣeto awọn imudojuiwọn taara si Kubernetes gẹgẹbi eto awọn iṣẹ CI kan. Eyi ni atako-apẹẹrẹ ti a n sọrọ nipa rẹ ti sọ tẹlẹ lori bulọọgi rẹ.

Jẹ ki a pada si Alice ati Bob.

Àwọn ìṣòro wo ni wọ́n dojú kọ? Olupin CI Bob lo awọn ayipada si iṣupọ, ṣugbọn ti o ba ṣubu ninu ilana naa, Bob kii yoo mọ iru ipo iṣupọ naa (tabi yẹ ki o wa) ninu tabi bi o ṣe le ṣatunṣe rẹ. Bakan naa ni otitọ ni ọran ti aṣeyọri.

Jẹ ki a ro pe ẹgbẹ Bob kọ aworan tuntun ati lẹhinna pamọ awọn imuṣiṣẹ wọn lati fi aworan naa ran (gbogbo lati opo gigun ti epo CI).

Ti aworan ba kọ ni deede, ṣugbọn opo gigun ti epo kuna, ẹgbẹ yoo ni lati ro ero:

  • Njẹ imudojuiwọn naa ti yiyi bi?
  • Njẹ a ṣe ifilọlẹ ikole tuntun kan? Njẹ eyi yoo ja si awọn ipa ẹgbẹ ti ko wulo - pẹlu iṣeeṣe ti nini awọn itumọ meji ti aworan alaileyipada kanna?
  • Ṣe o yẹ ki a duro fun imudojuiwọn atẹle ṣaaju ṣiṣe kikọ naa?
  • Kini gangan ti ko tọ? Awọn igbesẹ wo ni o nilo lati tun ṣe (ati awọn wo ni o jẹ ailewu lati tun ṣe)?

Ṣiṣeto iṣan-iṣẹ orisun Git ko ṣe iṣeduro pe ẹgbẹ Bob kii yoo ba awọn iṣoro wọnyi pade. Wọn tun le ṣe aṣiṣe pẹlu titari ifaramọ, tag, tabi paramita miiran; sibẹsibẹ, yi ona jẹ ṣi Elo jo si ohun fojuhan gbogbo-tabi-ohunkohun ona.

Lati ṣe akopọ, eyi ni idi ti awọn olupin CI ko yẹ ki o ṣe pẹlu CD:

  • Awọn iwe afọwọkọ imudojuiwọn kii ṣe ipinnu nigbagbogbo; O rọrun lati ṣe awọn aṣiṣe ninu wọn.
  • Awọn olupin CI ko pejọ si awoṣe iṣupọ asọye.
  • O ti wa ni soro lati ẹri idempotency. Awọn olumulo gbọdọ ni oye awọn atunmọ jinle ti eto naa.
  • O ti wa ni siwaju sii soro lati bọsipọ lati apa kan ikuna.

Akiyesi nipa Helm: Ti o ba fẹ lo Helm, a ṣeduro apapọ rẹ pẹlu oniṣẹ GitOps gẹgẹbi Flux-Helm. Eyi yoo ṣe iranlọwọ lati rii daju pe iṣọkan. Helm ara jẹ bẹni deterministic tabi atomiki.

GitOps bi ọna ti o dara julọ lati ṣe Ifijiṣẹ Itẹsiwaju fun Kubernetes

Ẹgbẹ Alice ati Bob ṣe imuse GitOps ati ṣe iwari pe o ti rọrun pupọ lati ṣiṣẹ pẹlu awọn ọja sọfitiwia, ṣetọju iṣẹ giga ati iduroṣinṣin. Jẹ ki a pari nkan yii pẹlu apejuwe ti o nfihan kini ọna tuntun wọn dabi. Ranti pe a n sọrọ pupọ julọ nipa awọn ohun elo ati awọn iṣẹ, ṣugbọn GitOps le ṣee lo lati ṣakoso gbogbo pẹpẹ kan.

Awoṣe iṣẹ fun Kubernetes

Wo aworan atọka atẹle. O ṣe afihan Git ati ibi ipamọ aworan eiyan gẹgẹbi awọn orisun pinpin fun awọn igbesi aye ti a ṣeto si meji:

  • Opopona iṣọpọ lemọlemọfún ti o ka ati kọ awọn faili si Git ati pe o le ṣe imudojuiwọn ibi ipamọ ti awọn aworan eiyan.
  • Opo gigun ti akoko GitOps ti o ṣajọpọ imuṣiṣẹ pẹlu iṣakoso ati akiyesi. O ka ati kọ awọn faili si Git ati pe o le ṣe igbasilẹ awọn aworan apoti.

Kini awọn awari akọkọ?

  1. Iyapa ti awọn ifiyesiJọwọ ṣakiyesi pe awọn opo gigun ti epo mejeeji le ṣe ibaraẹnisọrọ nikan nipasẹ mimudojuiwọn Git tabi ibi ipamọ aworan. Ni awọn ọrọ miiran, ogiriina kan wa laarin CI ati agbegbe asiko asiko. A pe e ni "ogiriina ailagbara" (ogiriina aile yipada), niwon gbogbo awọn imudojuiwọn ibi ipamọ ṣẹda awọn ẹya tuntun. Fun alaye diẹ sii lori koko yii, tọka si awọn ifaworanhan 72-87 igbejade yii.
  2. O le lo eyikeyi CI ati olupin GitGitOps ṣiṣẹ pẹlu eyikeyi paati. O le tẹsiwaju lati lo CI ayanfẹ rẹ ati olupin Git, awọn ibi ipamọ aworan, ati awọn suites idanwo. Fere gbogbo awọn irinṣẹ Ifijiṣẹ Ilọsiwaju lori ọja nilo olupin CI/Git tiwọn tabi ibi ipamọ aworan. Eyi le di ifosiwewe aropin ni idagbasoke ti abinibi awọsanma. Pẹlu GitOps, o le lo awọn irinṣẹ ti o mọ.
  3. Awọn iṣẹlẹ bi ohun elo Integration: Ni kete ti data ni Git ti ni imudojuiwọn, Weave Flux (tabi oniṣẹ Weave Cloud) ṣe ifitonileti akoko ṣiṣe. Nigbakugba ti Kubernetes gba eto iyipada, Git ti ni imudojuiwọn. Eyi pese awoṣe isọpọ ti o rọrun fun siseto awọn ṣiṣan iṣẹ fun GitOps, bi a ṣe han ni isalẹ.

ipari

GitOps n pese awọn iṣeduro imudojuiwọn to lagbara ti o nilo nipasẹ eyikeyi irinṣẹ CI/CD ode oni:

  • adaṣiṣẹ;
  • irẹpọ;
  • ara agbara;
  • ipinnu.

Eyi ṣe pataki nitori pe o funni ni awoṣe iṣiṣẹ fun awọn olupilẹṣẹ abinibi awọsanma.

  • Awọn irinṣẹ aṣa fun iṣakoso ati awọn eto ibojuwo ni nkan ṣe pẹlu awọn ẹgbẹ iṣiṣẹ ti n ṣiṣẹ laarin iwe ṣiṣe (eto awọn ilana ṣiṣe deede ati awọn iṣẹ ṣiṣe - isunmọ. transl.), ti so lati kan pato imuṣiṣẹ.
  • Ni iṣakoso abinibi awọsanma, awọn irinṣẹ akiyesi jẹ ọna ti o dara julọ lati wiwọn awọn abajade ti awọn imuṣiṣẹ ki ẹgbẹ idagbasoke le dahun ni kiakia.

Fojuinu ọpọlọpọ awọn iṣupọ ti o tuka kaakiri awọn awọsanma oriṣiriṣi ati ọpọlọpọ awọn iṣẹ pẹlu awọn ẹgbẹ tiwọn ati awọn ero imuṣiṣẹ. GitOps nfunni ni awoṣe-ayipada-iwọn fun ṣiṣakoso gbogbo opo yii.

PS lati onitumọ

Ka tun lori bulọọgi wa:

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Njẹ o mọ nipa GitOps ṣaaju ki awọn itumọ meji wọnyi han lori Habré?

  • Bẹẹni, Mo mọ ohun gbogbo

  • Nikan Egbò

  • No

35 olumulo dibo. 10 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun