Ib xyoo dhau los peb luam tawm kev taw qhia rau GitOps. Tom qab ntawd, peb tau sib qhia yuav ua li cas pab pawg Weaveworks tau pib SaaS tag nrho raws li Kubernetes thiab tsim cov txheej txheem kev coj ua zoo tshaj plaws rau kev siv, tswj, thiab saib xyuas hauv huab cua ib puag ncig.
Zaj lus tau muab los ua neeg nyiam. Lwm tus neeg pib tham txog GitOps thiab pib tshaj tawm cov cuab yeej tshiab rau git laub, kev loj hlob, zais cia, zog, kev koom ua ke tsis tu ncua thiab lwm yam. tshwm sim ntawm peb lub vev xaib ib tug xov tooj loj Cov ntawv tshaj tawm thiab GitOps siv rooj plaub. Tab sis qee cov neeg tseem muaj lus nug. Tus qauv txawv li cas los ntawm ib txwm? infrastructure raws li code thiab kev xa khoom tas mus li (nruam tus me nyuam)? Puas tsim nyog siv Kubernetes?
Hauv tsab xov xwm no peb tau sim los npog tag nrho cov ncauj lus no. Nws muab cov lus qhia tshiab rau GitOps thiab tus tsim tawm thiab CI / CD kev xav. Peb feem ntau tsom rau Kubernetes, txawm hais tias tus qauv tuaj yeem ua tau dav dav.
Ntsib GitOps
Xav txog Alice. Nws tuav Family Insurance, uas muaj kev noj qab haus huv, tsheb, tsheb, tsev, thiab kev pov hwm mus ncig rau cov neeg uas tsis khoom ntau dhau los txiav txim siab txog qhov kev cog lus ntawm lawv tus kheej. Nws txoj kev lag luam pib ua haujlwm sab nraud thaum Alice ua haujlwm ntawm lub txhab nyiaj ua tus kws tshawb fawb cov ntaub ntawv. Muaj ib hnub nws pom tau hais tias nws tuaj yeem siv lub tshuab computer algorithms los txheeb xyuas cov ntaub ntawv zoo dua thiab tsim cov pob ntawv pov hwm. Cov neeg ua lag luam tau nyiaj txiag rau qhov project, thiab tam sim no nws lub tuam txhab coj ntau dua $ 20 lab ib xyoos thiab loj hlob sai. Tam sim no, nws ntiav 180 tus neeg hauv ntau txoj haujlwm. Qhov no suav nrog pab pawg thev naus laus zis uas tsim kho, tswj hwm lub vev xaib, database, thiab tshuaj xyuas cov neeg siv khoom. Pab neeg ntawm 60 tus neeg yog coj los ntawm Bob, tus thawj coj ntawm lub tuam txhab.
Bob pab neeg siv cov tshuab tsim khoom hauv huab. Lawv cov ntawv thov tseem ceeb khiav ntawm GKE, ua kom zoo dua Kubernetes ntawm Google Huab. Tsis tas li ntawd, lawv siv ntau yam ntaub ntawv thiab cov cuab yeej tshuaj ntsuam xyuas hauv lawv txoj haujlwm.
Tsev Neeg Insurance tsis tau npaj siv cov thawv ntim khoom, tab sis tau ntes tau hauv Docker txaus siab. Lub tuam txhab tau tshawb pom sai sai tias GKE tau ua kom yooj yim rau kev xa cov pawg los sim cov yam ntxwv tshiab. Jenkins rau CI thiab Quay tau ntxiv los txhim kho lub thawv rau npe, cov ntawv sau rau Jenkins uas thawb cov thawv tshiab thiab teeb tsa rau GKE.
Qee lub sij hawm dhau lawm. Alice thiab Bob tau poob siab rau qhov kev ua tau zoo ntawm lawv txoj kev xaiv thiab nws cuam tshuam rau kev lag luam. Kev taw qhia ntawm cov thawv tsis txhim kho cov khoom tsim tau ntau npaum li pab pawg tau cia siab. Qee zaum kev xa tawm yuav tawg, thiab nws tsis paub meej tias qhov kev hloov pauv yuav raug liam. Nws kuj tau dhau los ua qhov nyuaj rau taug qab cov kev hloov pauv. Feem ntau nws yog tsim nyog los tsim ib pawg tshiab thiab txav daim ntawv thov mus rau nws, vim qhov no yog txoj hauv kev yooj yim tshaj plaws los tshem tawm cov kev ntxhov siab uas lub kaw lus tau dhau los. Alice ntshai tias qhov xwm txheej yuav hnyav dua li daim ntawv thov tsim (ntxiv rau, ib txoj haujlwm tshiab raws li kev kawm tshuab tau brewing). Bob tau automated feem ntau ntawm cov hauj lwm thiab tsis to taub yog vim li cas lub pipeline tseem tsis ruaj tsis khov, tsis scale zoo, thiab yuav tsum tau phau ntawv kev cuam tshuam lub sij hawm?
Tom qab ntawd lawv kawm txog GitOps. Qhov kev txiav txim siab no tau ua raws nraim qhov lawv xav tau kom muaj kev ntseeg siab mus tom ntej.
Alice thiab Bob tau hnov ββββtxog Git, DevOps, thiab kev tsim kho vaj tse raws li cov cai ua haujlwm tau ntau xyoo. Dab tsi yog qhov tshwj xeeb ntawm GitOps yog tias nws coj cov kev coj ua zoo tshaj plaws - ob qho tib si meej thiab cov cai - rau kev siv cov tswv yim no hauv cov ntsiab lus ntawm Kubernetes. Lub ntsiab lus no sawv ntau zaus, suav nrog hauv Weaveworks blog.
Family Insurance txiav txim siab los siv GitOps. Lub tuam txhab tam sim no muaj cov qauv kev ua haujlwm tsis siv neeg uas sib xws nrog Kubernetes thiab ua ke ceev nrog ruaj khovvim lawv:
pom tias pab neeg tsim khoom tau nce ob npaug yam tsis muaj leej twg mus vwm;
Hauv peb zaj dab neeg, Alice thiab Bob tig mus rau GitOps tom qab ua haujlwm nrog Kubernetes ib ntus. Tseeb, GitOps yog ze ze rau Kubernetes - nws yog tus qauv ua haujlwm rau kev tsim kho vaj tse thiab kev siv raws li Kubernetes.
Kubernetes muab dab tsi rau cov neeg siv?
Nov yog qee qhov tseem ceeb nta:
Hauv tus qauv Kubernetes, txhua yam tuaj yeem piav qhia hauv daim ntawv tshaj tawm.
Kubernetes API server siv cov lus tshaj tawm no ua cov tswv yim thiab tom qab ntawd txuas ntxiv sim coj cov pawg mus rau hauv lub xeev tau piav qhia hauv cov lus tshaj tawm.
Cov huab ua haujlwm luam theej cov teeb tsa thiab cov kab kos los ntawm kev txhim kho lub thoob rau qhov tsim Git chaw cia khoom;
Tus neeg teb xov tooj GitOps hloov kho cov pawg.
4. Ntxiv tus neeg siv khoom tshiab:
Tus thawj coj lossis tus thawj tswj hwm (LCM/ops) hu Gradle los pib siv thiab teeb tsa network load balancers (NLBs);
LCM/ops cog lus rau kev teeb tsa tshiab los npaj kev xa mus rau kev hloov tshiab;
Tus neeg teb xov tooj GitOps hloov kho cov pawg.
Cov lus piav qhia luv luv ntawm GitOps
Piav qhia txog lub xeev xav tau ntawm tag nrho cov kab ke siv cov lus qhia tshwj xeeb rau txhua qhov chaw (hauv peb zaj dab neeg, Bob pab neeg txhais tag nrho cov txheej txheem teeb tsa hauv Git).
Git repository yog ib qho ntawm qhov tseeb hais txog lub xeev xav tau ntawm tag nrho cov kab ke.
Txhua qhov kev hloov pauv rau lub xeev xav tau yog ua los ntawm kev cog lus hauv Git.
Tag nrho cov kev xav tau ntawm pawg kuj tseem pom tau hauv pawg nws tus kheej. Nyob rau hauv no txoj kev peb yuav txiav txim seb lawv coincide (converge, ntxeev siab) los yog txawv (diverge, sib txawv) xav tau thiab pom lub xeev.
Yog tias lub xeev xav tau thiab pom qhov txawv, ces:
Nws muaj ib tug convergence mechanism uas sai los yog tom qab cia li synchronizes lub hom phiaj thiab soj ntsuam lub xeev. Hauv pawg, Kubernetes ua qhov no.
Cov qauv kev khiav hauj lwm rau Kubernetes thiab huab ib txwm tau piav qhia saum toj no.
Txoj kev mus rau tus tsim tawm-centric daim ntawv thov kev tswj hwm ib puag ncig.
Rau ntau, GitOps feem ntau yog kev ua haujlwm raws li Git thawb. Peb nyiam nws thiab. Tab sis qhov tsis yog tag nrho: cia peb saib CI / CD cov kav dej.
GitOps tso cai rau kev xa mus tas li (CD) rau Kubernetes
GitOps muab cov txheej txheem xa mus tas li uas tshem tawm qhov xav tau rau "kev tswj hwm kev xa tawm." Kubernetes ua txhua yam haujlwm rau koj.
Kev hloov kho daim ntawv thov yuav tsum hloov kho hauv Git. Qhov no yog kev hloov pauv hloov pauv mus rau lub xeev xav tau. "Kev xa tawm" yog tom qab ntawd ua tiav hauv pawg los ntawm Kubernetes nws tus kheej raws li cov lus piav qhia tshiab.
Vim yog qhov xwm txheej ntawm Kubernetes ua haujlwm li cas, cov kev hloov tshiab no tau sib koom ua ke. Qhov no muab cov txheej txheem rau kev xa mus tas li uas txhua qhov hloov tshiab yog atomic.
Nco ntsoov: Weave Huab muab GitOps tus neeg teb xov tooj uas sib koom ua ke Git thiab Kubernetes thiab tso cai rau CD ua los ntawm kev sib koom ua ke qhov xav tau thiab lub xeev tam sim no ntawm pawg.
Txoj cai. Ib pawg ntawm cov kev hloov tshiab tuaj yeem siv tau, sib koom ua ke thiab thaum kawg tau lees paub, coj peb los ze zog rau lub hom phiaj ntawm kev xa tawm atomic. Hauv qhov sib piv, siv cov ntawv sau tsis muaj kev lees paub ntawm kev sib koom ua ke (ntxiv rau qhov no hauv qab no).
Kev ruaj ntseg. Hais lus Kelsey Hightower: "Txwv tsis pub nkag mus rau koj lub Kubernetes pawg rau automation cov cuab yeej thiab cov thawj coj uas yog lub luag haujlwm rau kev debugging lossis tswj nws." saib thiab kuv qhov kev tshaj tawm hais txog kev nyab xeeb thiab ua raws li kev qhia tshwj xeeb, nrog rau tsab xov xwm hais txog hacking Homebrew los ntawm kev nyiag daim ntawv pov thawj los ntawm daim ntawv sau tsis tu ncua Jenkins.
Kev paub siv. Kubectl nthuav tawm cov tshuab ntawm Kubernetes cov qauv khoom, uas yog qhov nyuaj heev. Qhov zoo tshaj plaws, cov neeg siv yuav tsum cuam tshuam nrog qhov system ntawm qib siab dua ntawm kev xav. Ntawm no kuv yuav rov hais dua rau Kelsey thiab pom zoo saib xws li daim ntawv qhia ua haujlwm.
Qhov sib txawv ntawm CI thiab CD
GitOps txhim kho CI / CD qauv uas twb muaj lawm.
Niaj hnub nimno CI server yog ib qho cuab yeej orchestration. Tshwj xeeb, nws yog ib qho cuab yeej rau orchestrating CI pipelines. Cov no suav nrog kev tsim, sim, sib koom ua ke rau lub cev, thiab lwm yam. CI servers automate txoj kev tswj cov kav dej ntau kauj ruam. Ib qho kev sim siab yog los sau ib txheej ntawm Kubernetes hloov tshiab thiab khiav nws ua ib feem ntawm cov kav dej txhawm rau thawb cov kev hloov pauv rau pawg. Qhov tseeb, qhov no yog qhov ntau tus kws tshaj lij ua. Txawm li cas los xij, qhov no tsis zoo, thiab ntawm no yog vim li cas.
CI yuav tsum tau siv los thawb hloov tshiab rau lub cev, thiab Kubernetes pawg yuav tsum hloov nws tus kheej raws li cov kev hloov tshiab no los tswj CD sab hauv. Peb hu nws rub qauv rau CD, tsis zoo li CI thawb qauv. CD yog ib feem runtime orchestration.
Vim li cas CI Servers yuav tsum tsis txhob ua CDs ntawm Direct Updates hauv Kubernetes
Tsis txhob siv CI neeg rau zaub mov los orchestrate ncaj qha hloov tshiab rau Kubernetes raws li ib txheej ntawm CI txoj hauj lwm. Nov yog qhov kev tawm tsam peb tab tom tham txog xa hais ntawm koj qhov blog.
Wb rov qab mus rau Alice thiab Bob.
Lawv ntsib teeb meem dab tsi? Bob's CI server siv cov kev hloov pauv rau pawg, tab sis yog tias nws poob rau hauv cov txheej txheem, Bob yuav tsis paub tias lub xeev cov pawg yog dab tsi (lossis yuav tsum yog) hauv lossis yuav kho li cas. Tib yam muaj tseeb nyob rau hauv rooj plaub ntawm kev vam meej.
Cia peb xav tias Bob pab pawg tau tsim cov duab tshiab thiab tom qab ntawd patched lawv cov kev xa mus rau xa cov duab (tag nrho los ntawm CI pipeline).
Yog tias daim duab tsim ib txwm, tab sis cov kav dej tsis ua haujlwm, pab pawg yuav tau txiav txim siab:
Puas yog qhov hloov tshiab tau nthuav tawm?
Puas yog peb pib tsim ib lub tsev tshiab? Qhov no puas yuav ua rau muaj kev phiv tsis tsim nyog - nrog rau muaj peev xwm muaj ob qho kev tsim ntawm tib daim duab tsis hloov?
Peb puas yuav tsum tau tos rau qhov hloov tshiab tom ntej ua ntej ua haujlwm tsim?
Dab tsi ua tsis ncaj ncees lawm? Cov kauj ruam twg yuav tsum tau rov ua dua (thiab qhov twg muaj kev nyab xeeb rov ua dua)?
Tsim kom muaj Git-based workflow tsis lav tias Bob pab neeg yuav tsis ntsib cov teeb meem no. Lawv tseem tuaj yeem ua yuam kev nrog rau kev ua yuam kev, lub cim npe, lossis qee qhov kev txwv; Txawm li cas los xij, txoj hauv kev no tseem nyob ze dua rau qhov qhia meej txog txhua yam lossis tsis muaj dab tsi.
Los xaus, ntawm no yog vim li cas CI servers yuav tsum tsis txhob cuam tshuam nrog CD:
Nws yog qhov nyuaj dua kom rov qab los ntawm ib feem tsis ua haujlwm.
Nco ntsoov txog Helm: Yog tias koj xav siv Helm, peb pom zoo kom muab nws nrog GitOps tus neeg teb xov tooj xws li Flux-Helm. Qhov no yuav pab kom muaj kev sib koom ua ke. Helm nws tus kheej tsis yog kev txiav txim siab lossis atomic.
GitOps yog txoj hauv kev zoo tshaj plaws los siv Kev xa mus tas li rau Kubernetes
Alice thiab Bob pab neeg siv GitOps thiab pom tias nws tau dhau los ua haujlwm yooj yim dua nrog cov khoom siv software, tswj kev ua haujlwm siab thiab ruaj khov. Cia peb xaus tsab xov xwm no nrog ib qho piv txwv uas qhia tias lawv txoj hauv kev tshiab zoo li cas. Nco ntsoov tias peb feem ntau tham txog cov ntawv thov thiab cov kev pabcuam, tab sis GitOps tuaj yeem siv los tswj tag nrho lub platform.
Tus qauv ua haujlwm rau Kubernetes
Saib ntawm daim duab hauv qab no. Nws nthuav tawm Git thiab lub thawv ntim cov duab khaws cia ua cov peev txheej sib koom ua ke rau ob txoj kev ua neej nyob: