GitOps: Afiwera ti Fa ati Titari Awọn ọna

Akiyesi. itumọ.: Ni agbegbe Kubernetes, aṣa kan ti a pe ni GitOps n gba gbaye-gbale ti o han gbangba, bi a ti rii tikalararẹ, àbẹwò KubeCon Europe 2019. Oro yi je jo laipe ti a se nipasẹ ori Weaveworks - Alexis Richardson - ati pe o tumọ si lilo awọn irinṣẹ ti o faramọ si awọn olupilẹṣẹ (nipataki Git, nitorinaa orukọ) lati yanju awọn iṣoro iṣẹ. Ni pataki, a n sọrọ nipa iṣẹ Kubernetes nipa titoju awọn atunto rẹ ni Git ati yiyi awọn ayipada laifọwọyi si iṣupọ naa. Matthias Jg sọrọ nipa awọn ọna meji si yiyi ni nkan yii.

GitOps: Afiwera ti Fa ati Titari Awọn ọna

Esi (ni otitọ, ni deede eyi ṣẹlẹ ni Oṣu Kẹjọ ọdun 2017 - isunmọ. transl.) Ọna tuntun wa lati fi awọn ohun elo ranṣẹ ni Kubernetes. O jẹ GitOps, ati pe o da lori imọran ipilẹ pe awọn ẹya imuṣiṣẹ ti tọpinpin ni agbegbe aabo ti ibi ipamọ Git kan.

Awọn anfani akọkọ ti ọna yii jẹ bi atẹle::

  1. Ti ikede imuṣiṣẹ ati iyipada itan. Ipo ti gbogbo iṣupọ ti wa ni ipamọ sinu ibi ipamọ Git kan, ati awọn imuṣiṣẹ ti wa ni imudojuiwọn nipasẹ awọn iṣẹ ṣiṣe nikan. Ni afikun, gbogbo awọn ayipada le wa ni tọpinpin nipa lilo itan ifaramọ.
  2. Rollbacks nipa lilo awọn pipaṣẹ Git faramọ. Rọrun git reset faye gba o lati tun awọn ayipada ninu awọn imuṣiṣẹ; Awọn ipinlẹ ti o kọja nigbagbogbo wa.
  3. Ṣetan wiwọle Iṣakoso. Ni deede, eto Git kan ni ọpọlọpọ data ifura, nitorinaa ọpọlọpọ awọn ile-iṣẹ ṣe akiyesi pataki si aabo rẹ. Nitorinaa, aabo yii tun kan si awọn iṣẹ pẹlu awọn imuṣiṣẹ.
  4. Awọn imulo fun Awọn imuṣiṣẹ. Pupọ awọn eto Git ni abinibi ṣe atilẹyin awọn ilana ẹka-nipasẹ-fun apẹẹrẹ, awọn ibeere fa nikan le ṣe imudojuiwọn titunto si, ati pe awọn ayipada gbọdọ jẹ atunyẹwo ati gbigba nipasẹ ọmọ ẹgbẹ miiran. Gẹgẹbi iṣakoso wiwọle, awọn eto imulo kanna lo si awọn imudojuiwọn imuṣiṣẹ.

Bii o ti le rii, ọpọlọpọ awọn anfani lo wa si ọna GitOps. Ni ọdun to kọja, awọn ọna meji ti gba olokiki ni pato. Ọkan jẹ ipilẹ titari, ekeji jẹ orisun fa. Ṣaaju ki a to wo wọn, jẹ ki a kọkọ wo kini awọn imuṣiṣẹ Kubernetes aṣoju dabi.

Awọn ọna imuṣiṣẹ

Ni awọn ọdun aipẹ, awọn ọna pupọ ati awọn irinṣẹ fun awọn imuṣiṣẹ ti di idasilẹ ni Kubernetes:

  1. Da lori abinibi Kubernetes/Ṣiṣe awọn awoṣe. Eyi ni ọna ti o rọrun julọ lati ran awọn ohun elo sori Kubernetes. Olùgbéejáde ṣẹda awọn faili YAML ipilẹ ati lo wọn. Lati yọkuro ti atunko awọn awoṣe kanna nigbagbogbo, Kustomize ti ni idagbasoke (o yi awọn awoṣe Kubernetes sinu awọn modulu). Akiyesi. itumọ.: Kustomize ti ni idapo sinu kubectl pẹlu itusilẹ ti Kubernetes 1.14.
  2. Awọn aworan atọka Helm. Awọn shatti Helm gba ọ laaye lati ṣẹda awọn apẹrẹ ti awọn awoṣe, awọn apoti init, awọn paati ẹgbẹ, ati bẹbẹ lọ, eyiti a lo lati fi awọn ohun elo ranṣẹ pẹlu awọn aṣayan isọdi ti o rọ diẹ sii ju ni ọna ti o da lori awoṣe. Ọna yii da lori apẹrẹ awọn faili YAML. Helm fọwọsi wọn pẹlu ọpọlọpọ awọn aye ati lẹhinna firanṣẹ si Tiller, paati iṣupọ kan ti o gbe wọn lọ si iṣupọ ati gba awọn imudojuiwọn ati awọn iyipo pada. Ohun pataki ni pe Helm pataki kan fi awọn iye ti o fẹ sinu awọn awoṣe ati lẹhinna lo wọn ni ọna kanna bi o ti ṣe ni ọna aṣa. (ka diẹ sii nipa bii gbogbo rẹ ṣe n ṣiṣẹ ati bii o ṣe le lo ninu wa article nipa Helm - isunmọ. itumọ.). Orisirisi awọn shatti Helm ti o ṣetan ti o bo ọpọlọpọ awọn iṣẹ ṣiṣe.
  3. Awọn Irinṣẹ Yiyan. Ọpọlọpọ awọn irinṣẹ yiyan wa. Ohun ti gbogbo wọn ni ni wọpọ ni pe wọn yi awọn faili awoṣe kan pada si awọn faili YAML ti o le ka Kubernetes ati lẹhinna lo wọn.

Ninu iṣẹ wa, a lo awọn shatti Helm nigbagbogbo fun awọn irinṣẹ pataki (niwon wọn ti ni ọpọlọpọ awọn ohun ti o ti ṣetan tẹlẹ, eyiti o jẹ ki igbesi aye rọrun pupọ) ati awọn faili Kubernetes YAML “mimọ” fun gbigbe awọn ohun elo ti ara wa.

Fa & Titari

Ninu ọkan ninu awọn ifiweranṣẹ bulọọgi mi aipẹ, Mo ṣafihan ọpa naa Weave Flux, eyiti o fun ọ laaye lati ṣe awọn awoṣe si ibi ipamọ Git ati mu imuṣiṣẹ dojuiwọn lẹhin ṣiṣe kọọkan tabi titari eiyan naa. Iriri mi fihan pe ọpa yii jẹ ọkan ninu awọn akọkọ ni igbega si ọna fifa, nitorina emi yoo ma tọka si nigbagbogbo. Ti o ba fẹ mọ diẹ sii nipa bi o ṣe le lo, nibi asopọ si article.

NB! Gbogbo awọn anfani ti lilo GitOps wa kanna fun awọn ọna mejeeji.

Fa orisun ona

GitOps: Afiwera ti Fa ati Titari Awọn ọna

Ọna fifa da lori otitọ pe gbogbo awọn ayipada ni a lo lati inu iṣupọ. Oṣiṣẹ kan wa ninu iṣupọ ti o ṣayẹwo nigbagbogbo Git ti o somọ ati awọn ibi ipamọ iforukọsilẹ Docker. Ti awọn iyipada eyikeyi ba waye si wọn, ipo iṣupọ ti ni imudojuiwọn ni inu. Ilana yii ni gbogbogbo ni a gba pe o ni aabo pupọ, nitori ko si alabara ita ti o ni aye si awọn ẹtọ oluṣakoso iṣupọ.

Aleebu:

  1. Ko si alabara ita ti o ni awọn ẹtọ lati ṣe awọn ayipada si iṣupọ; gbogbo awọn imudojuiwọn ti yiyi jade lati inu.
  2. Diẹ ninu awọn irinṣẹ tun gba ọ laaye lati muuṣiṣẹpọ awọn imudojuiwọn chart Helm ki o so wọn pọ mọ iṣupọ.
  3. Iforukọsilẹ Docker le ṣe ayẹwo fun awọn ẹya tuntun. Ti aworan tuntun ba wa, ibi ipamọ Git ati imuṣiṣẹ ti ni imudojuiwọn si ẹya tuntun.
  4. Awọn irinṣẹ fa le pin kaakiri awọn aaye orukọ oriṣiriṣi pẹlu oriṣiriṣi awọn ibi ipamọ Git ati awọn igbanilaaye. Ṣeun si eyi, awoṣe multitenant le ṣee lo. Fun apẹẹrẹ, ẹgbẹ A le lo aaye orukọ A, ẹgbẹ B le lo aaye orukọ B, ati ẹgbẹ amayederun le lo aaye agbaye.
  5. Bi ofin, awọn irinṣẹ jẹ iwuwo pupọ.
  6. Ni idapọ pẹlu awọn irinṣẹ bii oniṣẹ ẹrọ Bitnami edidi asiri, awọn aṣiri le wa ni ipamọ ti paroko ni ibi ipamọ Git kan ati gba pada laarin iṣupọ naa.
  7. Ko si asopọ si awọn opo gigun ti CD niwon awọn imuṣiṣẹ waye laarin iṣupọ.

Минусы:

  1. Ṣiṣakoso awọn aṣiri imuṣiṣẹ lati awọn shatti Helm jẹ iṣoro diẹ sii ju awọn deede lọ, nitori pe wọn ni akọkọ lati ṣe ipilẹṣẹ ni irisi, sọ, awọn aṣiri ti a fi pamọ, lẹhinna decrypted nipasẹ oniṣẹ inu, ati lẹhin iyẹn wọn di wa si ọpa fa. Lẹhinna o le ṣiṣe itusilẹ ni Helm pẹlu awọn iye ninu awọn aṣiri ti a ti gbe lọ tẹlẹ. Ọna ti o rọrun julọ ni lati ṣẹda aṣiri pẹlu gbogbo awọn iye Helm ti a lo fun imuṣiṣẹ, yọkuro ki o fi si Git.
  2. Nigba ti o ba ya a fa ona, o di ti so lati fa irinṣẹ. Eyi fi opin si agbara lati ṣe akanṣe ilana imuṣiṣẹ ni iṣupọ kan. Fun apẹẹrẹ, Kustomize jẹ idiju nipasẹ otitọ pe o gbọdọ ṣiṣẹ ṣaaju ki awọn awoṣe ikẹhin ti ṣe adehun si Git. Emi ko sọ pe o ko le lo awọn irinṣẹ adaduro, ṣugbọn wọn nira diẹ sii lati ṣepọ si ilana imuṣiṣẹ rẹ.

Titari orisun ona

GitOps: Afiwera ti Fa ati Titari Awọn ọna

Ni ọna titari, eto ita (paapaa awọn paipu CD) ṣe ifilọlẹ awọn imuṣiṣẹ si iṣupọ lẹhin ifaramo si ibi ipamọ Git tabi ti opo gigun ti CI ti tẹlẹ ba ṣaṣeyọri. Ni ọna yii, eto naa ni iwọle si iṣupọ.

Плюсы:

  1. Aabo jẹ ipinnu nipasẹ ibi ipamọ Git ati kọ opo gigun ti epo.
  2. Gbigbe awọn shatti Helm rọrun ati atilẹyin awọn afikun Helm.
  3. Awọn aṣiri rọrun lati ṣakoso nitori awọn aṣiri le ṣee lo ni awọn opo gigun ti epo ati pe o tun le fipamọ ni fifi ẹnọ kọ nkan ni Git (da lori awọn ayanfẹ olumulo).
  4. Ko si asopọ si ọpa kan pato, niwon eyikeyi iru le ṣee lo.
  5. Awọn imudojuiwọn ẹya apoti le jẹ ipilẹṣẹ nipasẹ opo gigun ti epo.

Минусы:

  1. Data wiwọle iṣupọ wa ninu eto kikọ.
  2. Ṣiṣe imudojuiwọn awọn apoti imuṣiṣẹ jẹ ṣi rọrun pẹlu ilana fifa.
  3. Igbẹkẹle iwuwo lori eto CD, nitori awọn opo gigun ti a nilo le ti kọ ni akọkọ fun Awọn asare Gitlab, lẹhinna ẹgbẹ naa pinnu lati lọ si Azure DevOps tabi Jenkins… ati pe yoo ni lati jade lọpọlọpọ nọmba ti awọn pipelines kọ.

Awọn abajade: Titari tabi Fa?

Gẹgẹbi igbagbogbo ọran, ọna kọọkan ni awọn anfani ati alailanfani rẹ. Diẹ ninu awọn iṣẹ-ṣiṣe rọrun lati ṣe pẹlu ọkan ati diẹ sii nira pẹlu omiiran. Ni akọkọ Mo n ṣe awọn imuṣiṣẹ pẹlu ọwọ, ṣugbọn lẹhin ti Mo wa awọn nkan diẹ nipa Weave Flux, Mo pinnu lati ṣe awọn ilana GitOps fun gbogbo awọn iṣẹ akanṣe. Fun awọn awoṣe ipilẹ eyi rọrun, ṣugbọn lẹhinna Mo bẹrẹ ṣiṣe sinu awọn iṣoro pẹlu awọn shatti Helm. Ni akoko yẹn, Weave Flux funni nikan ni ẹya rudimentary ti Olupese Chart Helm, ṣugbọn paapaa ni bayi diẹ ninu awọn iṣẹ ṣiṣe nira sii nitori iwulo lati ṣẹda awọn aṣiri pẹlu ọwọ ati lo wọn. O le jiyan pe ọna fifa ni aabo diẹ sii nitori awọn iwe-ẹri iṣupọ ko ni iraye si ita iṣupọ, ti o jẹ ki o ni aabo diẹ sii pe o tọsi igbiyanju afikun naa.

Lẹhin awọn ero diẹ, Mo wa si ipari airotẹlẹ pe eyi kii ṣe bẹ. Ti a ba sọrọ nipa awọn paati ti o nilo aabo to pọ julọ, atokọ yii yoo pẹlu ibi ipamọ aṣiri, awọn eto CI/CD, ati awọn ibi ipamọ Git. Alaye ti o wa ninu wọn jẹ ipalara pupọ ati pe o nilo aabo to pọju. Ni afikun, ti ẹnikan ba wọle si ibi ipamọ Git rẹ ati pe o le Titari koodu sibẹ, wọn le gbe ohunkohun ti wọn fẹ (boya o fa tabi titari) ati wọ inu awọn eto iṣupọ naa. Nitorinaa, awọn paati pataki julọ ti o nilo lati ni aabo ni ibi ipamọ Git ati awọn eto CI/CD, kii ṣe awọn iwe-ẹri iṣupọ. Ti o ba ni awọn eto imulo ti a tunto daradara ati awọn iṣakoso aabo fun awọn iru awọn ọna ṣiṣe wọnyi, ati awọn iwe-ẹri iṣupọ ni a fa jade nikan sinu awọn opo gigun bi awọn aṣiri, aabo ti a ṣafikun ti ọna fifa le ma ṣe pataki bi ero akọkọ.

Nitorinaa, ti ọna fifa ba jẹ aladanla laala diẹ sii ati pe ko pese anfani aabo, ṣe kii ṣe ọgbọn lati lo ọna titari nikan? Ṣugbọn ẹnikan le jiyan pe ni ọna titari o ti so pọ si eto CD ati, boya, o dara ki a ma ṣe eyi ki o le rọrun lati gbe awọn iṣikiri lọ ni ọjọ iwaju.

Ni ero mi (bi nigbagbogbo), o yẹ ki o lo ohun ti o dara julọ fun ọran kan pato tabi darapọ. Tikalararẹ, Mo lo awọn ọna mejeeji: Weave Flux fun awọn imuṣiṣẹ ti o da lori fifa ti o pẹlu awọn iṣẹ ti ara wa, ati ọna titari pẹlu Helm ati awọn afikun, eyiti o jẹ ki o rọrun lati lo awọn shatti Helm si iṣupọ ati gba ọ laaye lati ṣẹda awọn aṣiri lainidi. Mo ro pe kii yoo jẹ ojutu kan ṣoṣo ti o yẹ fun gbogbo awọn ọran, nitori ọpọlọpọ awọn nuances nigbagbogbo wa ati pe wọn dale lori ohun elo kan pato. Iyẹn ni sisọ, Mo ṣeduro GitOps gaan - o jẹ ki igbesi aye rọrun pupọ ati ilọsiwaju aabo.

Mo nireti pe iriri mi lori koko yii yoo ran ọ lọwọ lati pinnu iru ọna ti o dara julọ fun iru imuṣiṣẹ rẹ, ati pe Emi yoo dun lati gbọ ero rẹ.

PS Akọsilẹ lati onitumo

Apa isalẹ ti awoṣe fa ni pe o nira lati fi awọn ifihan ti o han sinu Git, ṣugbọn ko si si isalẹ pe opo gigun ti epo CD ninu awoṣe fa n gbe lọtọ lati yiyi ati ni pataki di opo gigun ti ẹka kan. Tẹsiwaju Waye. Nitorinaa, paapaa igbiyanju diẹ sii yoo nilo lati gba ipo wọn lati gbogbo awọn imuṣiṣẹ ati bakan pese iraye si awọn akọọlẹ/ipo, ni pataki pẹlu itọkasi si eto CD.

Ni ori yii, awoṣe titari gba wa laaye lati pese o kere diẹ ninu awọn iṣeduro ti yiyi, nitori igbesi aye opo gigun ti epo le jẹ dogba si igbesi aye gbigbe.

A gbiyanju awọn awoṣe mejeeji ati pe a wa si awọn ipinnu kanna bi onkọwe ti nkan naa:

  1. Awoṣe fifaa dara fun wa lati ṣeto awọn imudojuiwọn ti awọn paati eto lori nọmba nla ti awọn iṣupọ (wo. article nipa Addoni-operator).
  2. Awoṣe titari ti o da lori GitLab CI jẹ ibamu daradara fun yiyi awọn ohun elo jade nipa lilo awọn shatti Helm. Ni akoko kanna, yiyi awọn imuṣiṣẹ laarin awọn opo gigun ti epo jẹ abojuto nipa lilo ọpa werf. Nipa ọna, ni aaye ti iṣẹ akanṣe tiwa yii, a gbọ igbagbogbo “GitOps” nigba ti a jiroro awọn iṣoro titẹ ti awọn onimọ-ẹrọ DevOps ni iduro wa ni KubeCon Europe'19.

PPS lati onitumọ

Ka tun lori bulọọgi wa:

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

Ṣe o nlo GitOps?

  • Bẹẹni, fa isunmọ

  • Bẹẹni, titari

  • Bẹẹni, fa + Titari

  • Bẹẹni, nkan miran

  • No

30 olumulo dibo. 10 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun