GitOps: Sib piv ntawm Pull thiab Push Methods

Nco tseg. txhais.: Hauv cov zej zog Kubernetes, tus qauv hu ua GitOps tau txais txiaj ntsig zoo, raws li peb tau pom tus kheej, mus xyuas KubeCon Europe 2019. Cov lus no tsis ntev los no invented los ntawm lub taub hau ntawm Weaveworks - Alexis Richardson - thiab txhais tau hais tias siv cov cuab yeej paub txog cov neeg tsim khoom (feem ntau Git, yog li lub npe) los daws cov teeb meem kev ua haujlwm. Tshwj xeeb, peb tab tom tham txog kev ua haujlwm ntawm Kubernetes los ntawm kev khaws nws cov kev teeb tsa hauv Git thiab txiav tawm cov kev hloov pauv rau pawg. Matthias Jg tham txog ob txoj hauv kev rau qhov kev nthuav tawm no hauv kab lus no.

GitOps: Sib piv ntawm Pull thiab Push Methods

Xyoo dhau los (qhov tseeb, qhov no tshwm sim thaum Lub Yim Hli 2017 - kwv yees li.) Muaj ib txoj hauv kev tshiab rau kev xa cov ntawv thov hauv Kubernetes. Nws hu ua GitOps, thiab nws yog raws li lub tswv yim yooj yim uas xa tawm cov qauv raug taug qab hauv qhov chaw ruaj ntseg ntawm Git repository.

Lub ntsiab zoo ntawm txoj kev no yog raws li nram no::

  1. Deployment versioning thiab hloov keeb kwm. Lub xeev ntawm tag nrho pawg yog khaws cia hauv Git repository, thiab kev xa tawm tsuas yog hloov kho los ntawm kev cog lus. Tsis tas li ntawd, txhua qhov kev hloov pauv tuaj yeem taug qab los ntawm kev siv keeb kwm kev cog lus.
  2. Rollbacks siv cov lus txib Git paub. Yooj yim git reset tso cai rau koj rov pib hloov pauv hauv kev xa tawm; cov xeev yav dhau los yeej ib txwm muaj.
  3. Npaj nkag tswj. Feem ntau, Git system muaj ntau cov ntaub ntawv rhiab heev, yog li cov tuam txhab feem ntau them nyiaj tshwj xeeb los tiv thaiv nws. Yog li, qhov kev tiv thaiv no tseem siv tau rau kev ua haujlwm nrog kev xa tawm.
  4. Txoj cai rau kev xa tawm. Feem ntau Git systems ib txwm txhawb nqa cov cai los ntawm ceg ntoo-piv txwv li, tsuas yog rub cov lus thov tuaj yeem hloov kho tus tswv, thiab cov kev hloov pauv yuav tsum tau tshuaj xyuas thiab lees txais los ntawm lwm tus neeg hauv pab pawg. Raws li kev tswj hwm kev nkag mus, tib txoj cai siv rau kev xa tawm tshiab.

Raws li koj tuaj yeem pom, muaj ntau yam txiaj ntsig rau GitOps txoj kev. Nyob rau xyoo tas los no, ob txoj hauv kev tau txais kev nyiam tshwj xeeb. Ib qho yog thawb raws, lwm qhov yog rub raws. Ua ntej peb saib lawv, cia peb xub saib seb qhov kev xa tawm Kubernetes zoo li cas.

Txoj kev xa tawm

Hauv xyoo tas los no, ntau txoj hauv kev thiab cov cuab yeej siv rau kev xa tawm tau tsim hauv Kubernetes:

  1. Raws li haiv neeg Kubernetes/Kustomize templates. Nov yog txoj hauv kev yooj yim tshaj plaws los xa cov ntawv thov ntawm Kubernetes. Tus tsim tawm tsim cov ntaub ntawv YAML yooj yim thiab siv lawv. Txhawm rau tshem tawm tas li rov sau cov qauv qub, Kustomize tau tsim (nws hloov Kubernetes templates rau hauv cov qauv). Nco tseg. txhais.: Kustomize tau muab tso rau hauv kubectl nrog Kev tso tawm Kubernetes 1.14.
  2. Helm Charts. Helm kab kos tso cai rau koj los tsim cov qauv ntawm cov qauv, init ntim, sidecars, thiab lwm yam., uas yog siv los xa cov ntawv thov nrog kev hloov kho yooj yim dua li hauv cov qauv raws li txoj hauv kev. Txoj kev no yog ua raws li cov ntaub ntawv YAML templated. Helm sau lawv nrog ntau yam tsis sib xws thiab tom qab ntawd xa lawv mus rau Tiller, pawg pawg uas xa lawv mus rau pawg thiab tso cai hloov tshiab thiab rov qab. Qhov tseem ceeb tshaj plaws yog Helm qhov tseem ceeb tsuas yog ntxig cov txiaj ntsig xav tau rau hauv cov qauv thiab tom qab ntawd siv tib txoj hauv kev raws li nws tau ua nyob rau hauv kev coj ua. (Nyeem ntxiv txog qhov nws ua haujlwm li cas thiab koj tuaj yeem siv nws li cas hauv peb tsab xov xwm los ntawm Helm - kwv yees. txhais.). Muaj ntau hom phiaj npaj ua Helm uas npog ntau yam haujlwm.
  3. Lwm yam cuab yeej. Muaj ntau lwm yam cuab yeej. Qhov lawv txhua tus muaj qhov sib xws yog tias lawv tig qee cov ntaub ntawv template rau hauv Kubernetes-nyeem tau YAML cov ntaub ntawv thiab tom qab ntawd siv lawv.

Hauv peb txoj haujlwm, peb niaj hnub siv Helm kab kos rau cov cuab yeej tseem ceeb (vim tias lawv muaj ntau yam uas twb tau npaj lawm, uas ua rau lub neej yooj yim dua) thiab "dawb huv" Kubernetes YAML cov ntaub ntawv rau kev siv peb tus kheej daim ntawv thov.

Rub & Push

Hauv ib qho ntawm kuv cov ntawv blog tsis ntev los no, kuv tau qhia txog lub cuab yeej Weave Flux, uas tso cai rau koj ua cov qauv rau Git repository thiab hloov kho qhov kev xa tawm tom qab txhua qhov kev cog lus lossis thawb ntawm lub thawv. Kuv qhov kev paub qhia tau hais tias qhov cuab yeej no yog ib qho tseem ceeb hauv kev txhawb nqa txoj hauv kev rub, yog li kuv yuav feem ntau xa mus rau nws. Yog tias koj xav paub ntau ntxiv txog kev siv nws, ntawm no txuas rau kab lus.

NB! Tag nrho cov txiaj ntsig ntawm kev siv GitOps tseem zoo ib yam rau ob txoj hauv kev.

Rub raws txoj hauv kev

GitOps: Sib piv ntawm Pull thiab Push Methods

Txoj kev rub tawm yog nyob ntawm qhov tseeb tias txhua qhov kev hloov pauv tau siv los ntawm hauv pawg. Muaj ib tus neeg khiav dej num hauv pawg uas tsis tu ncua xyuas qhov cuam tshuam nrog Git thiab Docker Registry repositories. Yog tias muaj kev hloov pauv tshwm sim rau lawv, lub xeev ntawm pawg tau hloov kho sab hauv. Cov txheej txheem no feem ntau suav hais tias muaj kev nyab xeeb heev, vim tsis muaj tus neeg siv khoom sab nraud nkag mus rau pawg tswj hwm txoj cai.

Tshaj:

  1. Tsis muaj tus neeg siv sab nraud muaj cai hloov pauv rau pawg; tag nrho cov kev hloov tshiab tau dov tawm ntawm sab hauv.
  2. Qee cov cuab yeej kuj tso cai rau koj los synchronize Helm daim ntawv hloov tshiab thiab txuas lawv mus rau pawg.
  3. Docker Registry tuaj yeem luam theej duab rau cov ntawv tshiab. Yog tias muaj cov duab tshiab, Git repository thiab xa mus rau qhov tshiab version.
  4. Rub cov cuab yeej tuaj yeem faib thoob plaws lub npe sib txawv nrog cov chaw khaws khoom Git sib txawv thiab kev tso cai. Ua tsaug rau qhov no, tus qauv multitenant tuaj yeem siv tau. Piv txwv li, pab pawg A yuav siv lub npe A, pab pawg B yuav siv lub npe B, thiab pab pawg tsim kho yuav siv qhov chaw thoob ntiaj teb.
  5. Raws li txoj cai, cov cuab yeej yog hnyav heev.
  6. Ua ke nrog cov cuab yeej xws li tus neeg teb xov tooj Bitnami Sealed Secrets, cov lus zais tuaj yeem khaws cia rau hauv Git repository thiab khaws cia hauv pawg.
  7. Tsis muaj kev sib txuas rau cov kav dej CD txij li kev xa tawm tshwm sim hauv pawg.

Daim ntawv:

  1. Kev tswj kev xa tawm tsis pub lwm tus paub los ntawm Helm kab kos yog qhov nyuaj dua li cov niaj hnub, txij li lawv thawj zaug yuav tsum tau tsim nyob rau hauv daim ntawv ntawm, hais, kaw cov lus zais, tom qab ntawd decrypted los ntawm tus neeg teb xov tooj sab hauv, thiab tsuas yog tom qab ntawd lawv dhau los ua cov cuab yeej rub tawm. Tom qab ntawd koj tuaj yeem khiav qhov kev tso tawm hauv Helm nrog cov txiaj ntsig hauv cov lus zais uas twb muaj lawm. Qhov yooj yim tshaj plaws yog los tsim ib qho zais cia nrog tag nrho cov txiaj ntsig Helm siv rau kev xa tawm, decrypt nws thiab cog lus rau Git.
  2. Thaum koj coj mus kom ze, koj yuav khi rau rub cov cuab yeej. Qhov no txwv tsis pub muaj peev xwm los kho cov txheej txheem xa tawm hauv ib pawg. Piv txwv li, Kustomize yog qhov nyuaj los ntawm qhov tseeb tias nws yuav tsum khiav ua ntej cov qauv kawg tau cog lus rau Git. Kuv tsis tau hais tias koj siv tsis tau cov cuab yeej standalone, tab sis lawv nyuaj rau kev koom ua ke rau hauv koj txoj kev xa tawm.

Push raws li txoj kev

GitOps: Sib piv ntawm Pull thiab Push Methods

Nyob rau hauv txoj kev thawb, ib qho kev sib txuas sab nraud (feem ntau yog CD pipelines) pib xa mus rau pawg tom qab cog lus rau Git repository lossis yog tias yav dhau los CI pipeline ua tiav. Nyob rau hauv txoj kev no, lub system muaj kev nkag mus rau pawg.

Yav tas los:

  1. Kev ruaj ntseg yog txiav txim los ntawm Git repository thiab tsim cov kav dej.
  2. Deploying Helm charts yooj yim dua thiab txhawb Helm plugins.
  3. Kev zais zais tau yooj yim dua rau kev tswj hwm vim tias cov ntaub ntawv zais cia siv tau hauv cov kav dej thiab tseem tuaj yeem khaws cia hauv Git (nyob ntawm tus neeg siv nyiam).
  4. Tsis muaj kev sib txuas rau ib qho cuab yeej tshwj xeeb, txij li txhua hom tuaj yeem siv tau.
  5. Thawv version hloov tshiab tuaj yeem pib los ntawm kev tsim cov kav dej.

Daim ntawv:

  1. Cov ntaub ntawv nkag mus rau hauv pawg yog nyob rau hauv qhov system tsim.
  2. Kev hloov kho cov thawv xa tawm tseem yooj yim dua nrog cov txheej txheem rub.
  3. Kev cia siab hnyav ntawm CD system, txij li cov kav dej uas peb xav tau tej zaum yuav yog thawj zaug sau rau Gitlab Runners, thiab tom qab ntawd pab pawg txiav txim siab tsiv mus rau Azure DevOps lossis Jenkins ...

Cov txiaj ntsig: Push lossis rub?

Raws li feem ntau cov ntaub ntawv, txhua txoj hauv kev muaj nws qhov zoo thiab qhov tsis zoo. Qee txoj haujlwm yooj yim ua kom tiav nrog ib qho thiab nyuaj dua nrog lwm tus. Thaum xub thawj kuv tau ua kev xa tawm ntawm tes, tab sis tom qab kuv tuaj hla ob peb kab lus hais txog Weave Flux, kuv tau txiav txim siab los siv GitOps cov txheej txheem rau txhua qhov haujlwm. Rau cov qauv yooj yim no yooj yim, tab sis tom qab ntawd kuv pib khiav mus rau qhov teeb meem nrog Helm kab kos. Thaum lub sij hawm, Weave Flux tsuas yog muab cov txheej txheem ntawm Helm Chart Operator, tab sis txawm tias tam sim no qee cov haujlwm nyuaj dua vim qhov xav tau los tsim cov lus zais thiab siv lawv. Koj tuaj yeem sib cav tias kev rub mus kom ze yog qhov ruaj ntseg ntau dua vim tias pawg neeg cov ntaub ntawv pov thawj tsis tuaj yeem nkag mus rau sab nraud pawg, ua rau nws muaj kev nyab xeeb ntau dua tias nws tsim nyog rau kev siv zog ntxiv.

Tom qab qee qhov kev xav, kuv tuaj rau qhov kev xav tsis thoob tias qhov no tsis yog li ntawd. Yog tias peb tham txog cov khoom uas yuav tsum tau muaj kev tiv thaiv ntau tshaj plaws, daim ntawv teev npe no yuav suav nrog kev khaws cia zais cia, CI / CD systems, thiab Git repositories. Cov ntaub ntawv hauv lawv yog qhov yooj yim heev thiab xav tau kev tiv thaiv siab tshaj plaws. Tsis tas li ntawd, yog tias ib tus neeg nkag mus rau hauv koj qhov chaw khaws cia Git thiab tuaj yeem thawb cov lej nyob ntawd, lawv tuaj yeem siv txhua yam lawv xav tau (txawm nws rub lossis thawb) thiab nkag mus rau pawg pawg. Yog li, cov khoom tseem ceeb tshaj plaws uas yuav tsum tau tiv thaiv yog Git repository thiab CI / CD systems, tsis yog cov ntaub ntawv pov thawj. Yog tias koj muaj cov cai tswjfwm zoo thiab kev tswj hwm kev nyab xeeb rau cov hom kab ke no, thiab cov ntaub ntawv pov thawj pawg tsuas yog muab rho tawm rau hauv cov raj xa dej raws li kev zais cia, qhov kev ruaj ntseg ntxiv ntawm kev rub txoj hauv kev yuav tsis muaj txiaj ntsig zoo li qhov xav tau thaum xub thawj.

Yog li, yog tias kev rub mus kom ze yog kev siv zog ntau dua thiab tsis muab cov txiaj ntsig kev nyab xeeb, puas yog qhov laj thawj uas siv tsuas yog txoj hauv kev thawb? Tab sis ib tug neeg yuav sib cav hais tias nyob rau hauv lub laub mus kom ze koj yog ib yam nkaus thiab khi rau lub CD system thiab, tej zaum, nws yog zoo dua tsis txhob ua qhov no kom nws yuav yooj yim dua rau kev tsiv teb tsaws yav tom ntej.

Hauv kuv lub tswv yim (raws li ib txwm muaj), koj yuav tsum siv qhov uas tsim nyog tshaj plaws rau ib rooj plaub lossis sib txuas. Tus kheej, kuv siv ob txoj hauv kev: Weave Flux rau rub-raws li kev xa tawm uas feem ntau suav nrog peb tus kheej cov kev pabcuam, thiab kev thawb txoj hauv kev nrog Helm thiab plugins, uas ua rau nws yooj yim rau siv Helm kab kos rau pawg thiab tso cai rau koj los tsim cov lus zais seamlessly. Kuv xav tias yuav tsis muaj ib qho kev daws teeb meem rau txhua qhov xwm txheej, vim tias ib txwm muaj ntau qhov nuances thiab lawv nyob ntawm daim ntawv thov tshwj xeeb. Uas tau hais tias, Kuv xav kom GitOps - nws ua rau lub neej yooj yim dua thiab txhim kho kev ruaj ntseg.

Kuv vam tias kuv qhov kev paub ntawm lub ncauj lus no yuav pab koj txiav txim siab seb txoj kev twg yog qhov tsim nyog rau koj hom kev xa tawm, thiab kuv zoo siab tau hnov ​​koj lub tswv yim.

PS Nco tseg los ntawm tus txhais lus

Lub downside ntawm tus qauv rub yog tias nws yog ib qho nyuaj rau muab tso rau hauv Git, tab sis tsis muaj downside tias CD pipeline nyob rau hauv lub rub qauv nyob sib cais los ntawm lub rollout thiab qhov tseem ceeb yog ib tug qeb pipeline. Kev thov txuas ntxiv. Yog li ntawd, yuav tsum tau siv zog ntau dua los sau lawv cov xwm txheej los ntawm txhua qhov kev xa tawm thiab qee qhov muab nkag mus rau cov cav / xwm txheej, nyiam dua nrog siv rau CD system.

Hauv qhov kev nkag siab no, tus qauv thawb tso cai rau peb muab tsawg kawg qee qhov kev lees paub ntawm rollout, vim hais tias lub neej ntawm cov raj xa dej tuaj yeem ua kom sib npaug rau lub neej ntawm kev sib tw.

Peb sim ob qho tib si qauv thiab tuaj rau tib lub ntsiab lus raws li tus sau ntawm tsab xov xwm:

  1. Tus qauv rub yog tsim rau peb los npaj cov kev hloov kho tshiab ntawm cov kab ke ntawm ntau pawg (saib. tsab xov xwm hais txog addon-operator).
  2. Tus qauv thawb raws li GitLab CI yog qhov zoo rau kev dov tawm daim ntawv thov siv Helm kab kos. Nyob rau tib lub sijhawm, kev nthuav tawm ntawm kev xa mus rau hauv cov kav dej yog saib xyuas siv lub cuab yeej werf. Los ntawm txoj kev, hauv cov ntsiab lus ntawm peb txoj haujlwm no, peb tau hnov ​​​​qhov "GitOps" tas li thaum peb tham txog cov teeb meem nyuaj ntawm DevOps engineers ntawm peb sawv ntawm KubeCon Europe'19.

PPS los ntawm tus txhais lus

Nyeem kuj ntawm peb blog:

Tsuas yog cov neeg siv sau npe tuaj yeem koom nrog hauv daim ntawv ntsuam xyuas. Kos npe rau hauvthov.

Koj puas siv GitOps?

  • Yog, rub mus kom ze

  • Yog, thawb

  • Yog, rub + thawb

  • Yog, lwm yam

  • Tsis

30 cov neeg siv pov npav. 10 cov neeg siv txwv tsis pub siv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib