ProHoster > Blag > Riarachán > Feidhmchláir a imscaradh thar ilchnuasaigh Kubernetes le Helm
Feidhmchláir a imscaradh thar ilchnuasaigh Kubernetes le Helm
Mar a úsáideann Dailymotion Kubernetes: Imscaradh Feidhmchlár
Thosaigh muid ag Dailymotion ag baint úsáide as Kubernetes i dtáirgeadh 3 bliana ó shin. Ach is spraoi é feidhmchláir a imscaradh thar ilchnuasaigh, agus mar sin le cúpla bliain anuas bhíomar ag iarraidh ár n-uirlisí agus ár sreabhadh oibre a fheabhsú.
Cár thosaigh sé
Anseo clúdóimid conas a dhéanaimid ár bhfeidhmchláir a imscaradh thar ilchnuasaigh Kubernetes ar fud an domhain.
Chun il réad Kubernetes a imscaradh ag an am céanna, úsáidimid Helm, agus stóráiltear ár gcairteanna go léir i stór git amháin. Chun stack iomlán feidhmchlár a imscaradh ó roinnt seirbhísí, úsáidimid an chairt achoimre, mar a thugtar air. Go bunúsach, is cairt é seo a dhearbhaíonn spleáchais agus a ligeann duit an API agus a chuid seirbhísí a thosú le hordú amháin.
Scríobhamar script Python freisin ar bharr Helm chun seiceálacha a dhéanamh, cairteacha a chruthú, rúin a chur leis, agus feidhmchláir a imscaradh. Déantar na tascanna seo go léir ar ardán lárnach CI ag baint úsáide as íomhá docker.
A ligean ar a fháil go dtí an pointe.
Nóta. Agus tú ag léamh seo, tá an chéad iarrthóir scaoileadh le haghaidh Helm 3 fógartha cheana féin. Tá go leor feabhsuithe sa phríomhleagan chun dul i ngleic le cuid de na saincheisteanna a bhí againn san am a chuaigh thart.
Sreabhadh oibre forbartha cairte
Bainimid úsáid as branching le haghaidh iarratas, agus shocraigh muid an cur chuige céanna a chur i bhfeidhm maidir le cairteacha.
Géaga dev a úsáidtear chun cairteacha a chruthú a dhéanfar tástáil orthu ar bhraislí forbartha.
Nuair a chuirtear iarratas tarraingt isteach chuig máistir, déantar iad a sheiceáil le linn stáitse.
Ar deireadh, cruthaímid iarratas tarraingt chun na hathruithe ar an mbrainse a ghealladh táirge agus iad a chur i bhfeidhm i dtáirgeadh.
Tá a stór príobháideach féin ag gach timpeallacht a stórálann ár gcairteacha, agus a úsáidimid Músaem na Cairte le APIs an-úsáideach. Ar an mbealach seo cinnteoimid aonrú docht idir timpeallachtaí agus tástáil fhíorshaoil ar chairteacha sula n-úsáidtear iad i dtáirgeadh.
Taisclanna cairteacha i dtimpeallachtaí éagsúla
Is fiú a thabhairt faoi deara, nuair a bhrúnn forbróirí brainse dev, go ndéantar leagan dá gcairt a bhrú go huathoibríoch chuig an dev Chartmuseum. Mar sin, úsáideann gach forbróir an stór forbartha céanna, agus ní mór duit do leagan den chairt a shonrú go cúramach ionas nach n-úsáideann tú athruithe duine eile de thaisme.
Thairis sin, bailíochtaíonn ár script Python beag rudaí Kubernetes i gcoinne sonraíochtaí Kubernetes OpenAPI ag baint úsáide as Ciúbal, sula bhfoilseofar iad ar Chartmusem.
Cur síos ginearálta ar an sreabhadh oibre forbartha cairte
Tascanna píblíne a shocrú de réir sonraíochta gazr.io le haghaidh rialú cáilíochta (lint, aonad-tástáil).
Íomhá docker a bhrú le huirlisí Python a úsáideann ár bhfeidhmchláir.
An timpeallacht a bhunú de réir ainm brainse.
Comhaid Kubernetes yaml a bhailíochtú ag baint úsáide as Kubeval.
Méadaigh go huathoibríoch leagan cairte agus a cairteacha tuismitheora (cairteanna a bhraitheann ar an gcairt atá á athrú).
Cairt a chur isteach chuig Músaem Cairte a oireann dá timpeallacht
Difríochtaí trasna braislí a bhainistiú
Cónaidhm na gCnuasach
Bhí am nuair a úsáid againn Cónaidhm na mbraislí Kubernetes, áit a bhféadfaí rudaí Kubernetes a dhearbhú ó chríochphointe API amháin. Ach tháinig fadhbanna chun cinn. Mar shampla, níorbh fhéidir roinnt réad Kubernetes a chruthú i gcríochphointe an chónaidhm, rud a fhágann go raibh sé deacair rudaí cónasctha agus réada eile a choinneáil do bhraislí aonair.
Chun an fhadhb a réiteach, thosaigh muid ag bainistiú na mbraislí go neamhspleách, rud a rinne an próiseas a shimpliú go mór (d'úsáideamar an chéad leagan de chónaidhm; b'fhéidir gur athraigh rud éigin sa dara ceann).
Ardán geo-dháilte
Tá ár n-ardán scaipthe faoi láthair ar fud 6 réigiún - 3 cinn go háitiúil agus 3 sa scamall.
Imscaradh Dáilte
Luachanna Domhanda Helm
Ligeann 4 luach Helm dhomhanda duit difríochtaí idir braislí a aithint. Tá íosluachanna réamhshocraithe ag ár gcairteacha go léir.
Cuidíonn na luachanna seo le comhthéacs ár bhfeidhmchláir a shainiú agus úsáidtear iad chun críocha éagsúla: monatóireacht, rianú, logáil, glaonna seachtracha a dhéanamh, scálú, etc.
"scamall": Tá ardán Kubernetes hibrideach againn. Mar shampla, déantar ár n-API a imscaradh i gcriosanna GCP agus inár n-ionaid sonraí.
"env": D'fhéadfadh go n-athróidh roinnt luachanna do thimpeallachtaí neamhtháirgthe. Mar shampla, sainmhínithe acmhainne agus cumraíochtaí uathscálaithe.
"réigiún": Cuidíonn an fhaisnéis seo le suíomh an bhraisle a chinneadh agus is féidir í a úsáid chun críochphointí in aice láimhe a chinneadh do sheirbhísí seachtracha.
"clusterName": más mian linn agus nuair is mian linn luach a shainiú do bhraisle aonair.
Seo sampla ar leith:
{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}
Helm teimpléad teimpléad
Sainmhínítear an loighic seo i dteimpléad cúntóir chun cluttering Kubernetes YAML a sheachaint.
Fógra Iarratais
Tá ár n-uirlisí imlonnaithe bunaithe ar ilchomhaid YAML. Seo thíos sampla den chaoi a ndearbhaímid seirbhís agus a topology scálaithe (líon macasamhla) i gcnuasach.
Is achoimre é seo ar na céimeanna go léir a shainíonn ár sreabhadh oibre imlonnaithe. Déanann an chéim dheireanach an feidhmchlár a imscaradh chuig ilchnuasaigh oibrithe ag an am céanna.
Jenkins Céimeanna Imlonnaithe
Cad faoi rúin?
Maidir le slándáil, déanaimid gach rún ó áiteanna éagsúla a rianú agus iad a stóráil i cruinneachán uathúil Bóthair i bPáras.
Baineann ár n-uirlisí imlonnaithe luachanna rúnda a bhaint as Vault agus, nuair a thagann an t-am imscartha, cuir isteach iad i Helm.
Chun seo a dhéanamh, shainmhíníomar léarscáiliú idir na rúin in Vault agus na rúin atá de dhíth ar ár bhfeidhmchláir:
Tá rialacha ginearálta sainmhínithe againn le leanúint agus rúin á dtaifeadadh againn i Vault.
Má bhaineann an rún chuig comhthéacs nó braisle ar leith, ní mór duit iontráil shonrach a chur leis. (Anseo tá a luach féin ag an mbraisle comhthéacs1 don phasfhocal rúnda stack-app1).
Seachas sin úsáidtear an luach de réir réamhshocraithe.
I gcás gach míre sa liosta seo i An rún Kubernetes cuirtear péire eochairluacha isteach. Dá bhrí sin, tá an teimpléad rúnda inár gcairteacha an-simplí.
Anois scaraimid le forbairt cairteacha agus feidhmchláir. Ciallaíonn sé seo go gcaithfidh forbróirí oibriú i dhá stór git: ceann amháin don fheidhmchlár, agus ceann eile chun a imscaradh chuig Kubernetes a shainiú. Ciallaíonn stórtha 2 git 2 sreabhadh oibre, agus tá sé éasca do newbie a bheith ar dhaoine eatarthu.
Is deacracht é cairteacha ginearálaithe a bhainistiú
Mar a dúirt muid cheana, tá cairteacha cineálacha an-úsáideach chun spleáchais a aithint agus chun feidhmchláir iolracha a imscaradh go tapa. Ach úsáidimid --reuse-valueschun na luachanna go léir a sheachaint gach uair a dhéanaimid feidhmchlár a imscaradh atá mar chuid den chairt ghinearálaithe seo.
I sreabhadh oibre seachadta leanúnach, níl ach dhá luach againn a athraíonn go rialta: líon na macasamhla agus an chlib íomhá (leagan). Athraítear luachanna eile, níos cobhsaí de láimh, agus tá sé seo deacair go leor. Ina theannta sin, d’fhéadfadh teipeanna tromchúiseacha a bheith mar thoradh ar bhotún amháin maidir le cairt ghinearálaithe a imscaradh, mar atá feicthe againn ónár dtaithí féin.
Comhaid cumraíochta iolracha á nuashonrú
Nuair a chuireann forbróir iarratas nua leis, caithfidh sé roinnt comhad a athrú: an dearbhú iarratais, liosta na rúin, ag cur an iarratais mar spleáchas má tá sé san áireamh sa chairt ghinearálaithe.
Tá ceadanna Jenkins ró-shínte i Vault
Anois tá ceann againn Úll, a léann na rúin go léir ón Cruinneachán.
Níl an próiseas ais-rollta uathoibrithe
Chun rolladh siar, ní mór duit an t-ordú a rith ar roinnt braislí, agus tá sé seo lán le hearráidí. Déanaimid an oibríocht seo de láimh lena chinntiú go sonraítear aitheantas ceart an leagain.
Táimid ag bogadh i dtreo GitOps
Ár gcuspóir
Ba mhaith linn an chairt a chur ar ais chuig stór an fheidhmchláir a úsáideann sé.
Beidh an sreabhadh oibre mar an gcéanna leis an bhforbairt. Mar shampla, nuair a bhrúitear brainse chun máistreacht, cuirfear an t-imscaradh i ngníomh go huathoibríoch. Is é an príomhdhifríocht idir an cur chuige seo agus an sreabhadh oibre reatha ná sin déanfar gach rud a bhainistiú i git (an feidhmchlár féin agus an bealach a imlonnaítear é in Kubernetes).
Tá roinnt buntáistí ann:
Go leor níos soiléire don fhorbróir. Tá sé níos éasca foghlaim conas athruithe a chur i bhfeidhm ar chairt áitiúil.
Is féidir an sainmhíniú ar imscaradh seirbhíse a shonrú áit chéanna leis an gcód seirbhís.
Bainistiú a dhéanamh ar bhaint cairteacha ginearálaithe. Beidh a scaoileadh Helm féin ag an tseirbhís. Tabharfaidh sé seo deis duit saolré an fheidhmchláir a bhainistiú (rolladh siar, uasghrádú) ag an leibhéal is lú, ionas nach gcuirfidh sé isteach ar sheirbhísí eile.
Buntáistí git maidir le bainistiú cairte: Cealaigh athruithe, logáil iniúchta, etc. Más gá duit athrú ar chairt a chealú, is féidir leat é seo a dhéanamh ag baint úsáide as git. Tosaíonn an t-imscaradh go huathoibríoch.
D'fhéadfá smaoineamh ar do shreabhadh oibre forbartha a fheabhsú le huirlisí mar Scafall, lena bhféadfaidh forbróirí athruithe a thástáil i gcomhthéacs atá gar do tháirgeadh.
Imirce dhá chéim
Tá ár bhforbróirí ag baint úsáide as an sreabhadh oibre seo le 2 bhliain anois, agus mar sin ba mhaith linn go mbeadh an t-imirce chomh gan phian agus is féidir. Mar sin, shocraigh muid céim idirmheánach a chur leis ar an mbealach chun an sprioc.
Tá an chéad chéim simplí:
Coinnímid struchtúr cosúil leis chun imscaradh feidhmchlár a shocrú, ach i réad amháin ar a dtugtar DailymotionRelease.
1 eisiúint in aghaidh an iarratais (gan cairteacha ginearálaithe).
Cairteacha i stór git an fheidhmchláir.
Táimid tar éis labhairt leis na forbróirí go léir, agus mar sin tá an próiseas imirce tosaithe cheana féin. Tá an chéad chéim fós á rialú ag baint úsáide as an ardán CI. Scríobhfaidh mé post eile go luath faoi chéim a dó: conas a bhogamar chuig sreabhadh oibre GitOps leis Flux. Inseoidh mé duit conas a shocraíomar gach rud agus cad iad na deacrachtaí a bhí againn (stóranna iomadúla, rúin, etc.). Lean an nuacht.
Anseo tá iarracht déanta againn cur síos a dhéanamh ar ár ndul chun cinn sa sreabhadh oibre imscaradh feidhmchlár le blianta beaga anuas, rud a d'eascair smaointe faoi chur chuige GitOps. Níl an sprioc bainte amach againn go fóill agus tuairisceoimid ar na torthaí, ach anois táimid cinnte go ndearna muid an rud ceart nuair a shocraigh muid gach rud a shimpliú agus é a thabhairt níos gaire do nósanna forbróirí.