ProHoster > ΠΠ»ΠΎΠ³ > Kev tswj hwm > 3-txoj kev sib koom ua ke rau werf: xa mus rau Kubernetes nrog Helm "ntawm steroids"
3-txoj kev sib koom ua ke rau werf: xa mus rau Kubernetes nrog Helm "ntawm steroids"
Qhov peb (thiab tsis yog peb xwb) tau tos ntev heev tau tshwm sim: werf, peb qhov chaw qhib qhov hluav taws xob rau kev tsim cov ntawv thov thiab xa lawv mus rau Kubernetes, tam sim no txhawb kev hloov pauv siv 3-txoj kev sib koom ua ke thaj ua rau thaj! Ntxiv rau qhov no, nws muaj peev xwm txais yuav K8s cov peev txheej uas twb muaj lawm rau hauv Helm tso tawm yam tsis muaj kev tsim kho cov peev txheej no.
Yog tias nws luv heev, ces peb muab WERF_THREE_WAY_MERGE=enabled - Peb tau txais kev xa tawm "raws li hauv kubectl apply", sib xws nrog Helm 2 kev teeb tsa uas twb muaj lawm thiab txawm tias me ntsis ntxiv.
Tab sis cia peb pib nrog txoj kev xav: dab tsi tiag tiag yog 3-txoj kev sib koom ua ke thaj ua rau thaj, tib neeg tuaj nrog txoj hauv kev los tsim lawv, thiab vim li cas lawv tseem ceeb hauv cov txheej txheem CI / CD nrog Kubernetes-based infrastructure? Thiab tom qab ntawd, cia peb pom dab tsi 3-txoj kev sib koom ua ke yog nyob rau hauv werf, hom twg siv los ntawm lub neej ntawd thiab yuav ua li cas tswj nws.
Ua haujlwm replace tso cai rau koj los hloov tag nrho cov peev txheej configuration nrog ib qho tshiab, tsis tas yuav rov tsim cov peev txheej. Qhov no txhais tau hais tias ua ntej hloov mus rau ib qho kev pab cuam, nws yog qhov tsim nyog los nug cov ntawv tam sim no nrog kev ua haujlwm get, hloov nws thiab hloov kho nws nrog kev ua haujlwm replace. kube apiserver yog ua nyob rau hauv optimistic xauv thiab, yog tias tom qab phais get cov khoom tau hloov, ces qhov kev ua haujlwm replace nws yuav tsis ua haujlwm.
Txhawm rau khaws cov kev teeb tsa hauv Git thiab hloov kho nws siv hloov, koj yuav tsum ua qhov haujlwm get, ua ke cov config los ntawm Git nrog qhov peb tau txais, thiab ua tiav replace. Los ntawm lub neej ntawd, kubectl tsuas tso cai rau koj siv cov lus txib kubectl replace -f manifest.yamlqhov twg manifest.yaml - ib qho kev npaj txhij txhua (hauv peb rooj plaub, sib koom ua ke) tshwm sim uas yuav tsum tau teeb tsa. Nws hloov tawm hais tias tus neeg siv yuav tsum tau siv cov kev sib koom ua ke, thiab qhov no tsis yog qhov tsis tseem ceeb ...
Nws tseem tsim nyog sau cia txawm tias manifest.yaml thiab khaws cia hauv Git, peb tsis tuaj yeem paub ua ntej seb nws puas tsim nyog los tsim ib qho khoom lossis hloov kho nws - qhov no yuav tsum tau ua los ntawm cov neeg siv software.
Tag nrho: peb tuaj yeem tsim qhov kev nthuav tawm tas mus li tsuas yog siv tsim, hloov thiab tshem tawm, kom ntseeg tau tias cov txheej txheem teeb tsa tau khaws cia hauv Git nrog rau cov cai thiab yooj yim CI / CD?
Hauv txoj ntsiab cai, peb tuaj yeem ... Rau qhov no koj yuav tsum tau siv qhov kev sib koom ua ke manifestos thiab qee yam kev khi uas:
tshawb xyuas qhov muaj ib yam khoom hauv pawg,
ua haujlwm pib tsim cov peev txheej,
hloov tshiab los yog deletes nws.
Thaum hloov kho, thov nco ntsoov tias tej zaum yuav muaj kev hloov pauv txij thaum kawg get thiab cia li lis cov ntaub ntawv ntawm optimistic locking - ua dua tshiab sim.
Txawm li cas los xij, vim li cas rov tsim lub log thaum kube-apiserver muaj lwm txoj hauv kev los hloov kho cov peev txheej: kev ua haujlwm patch, uas relieves tus neeg siv ntawm ib co ntawm cov piav qhia txog teeb meem?
thaj
Tam sim no peb mus rau qhov chaw.
Patches yog thawj txoj hauv kev los siv cov kev hloov pauv rau cov khoom uas twb muaj lawm hauv Kubernetes. Kev ua haujlwm patch nws ua haujlwm zoo li no:
tus neeg siv kube-apiserver xav tau xa ib thaj hauv JSON daim ntawv thiab qhia cov khoom,
thiab apiserver nws tus kheej yuav cuam tshuam nrog lub xeev tam sim no ntawm cov khoom thiab coj mus rau hauv daim ntawv xav tau.
Optimistic xauv tsis tas yuav tsum muaj nyob rau hauv rooj plaub no. Qhov kev ua haujlwm no tau tshaj tawm ntau dua li hloov, txawm tias thaum xub thawj nws yuav zoo li lwm txoj hauv kev.
Txoj kev no:
siv kev ua haujlwm create peb tsim ib yam khoom raws li qhov manifest los ntawm Git,
Hauv Git, ib daim duab khaws cov khoom lag luam hauv qhov chaw image Kev xa tawm tseem ceeb ubuntu:18.04.
Tus neeg siv ntawm kubectl edit hloov tus nqi ntawm daim teb no rau ubuntu:19.04.
Thaum rov xa daim ntawv Helm tsis tsim ib thaj,vim taj image nyob rau hauv lub dhau los version ntawm kev tso tawm thiab nyob rau hauv daim ntawv tam sim no yog tib yam.
Tom qab rov ua haujlwm image seem ubuntu:19.04, txawm tias daim ntawv hais tias ubuntu:18.04.
Peb tau txais desynchronization thiab poob kev tshaj tawm.
Dab tsi yog qhov kev pabcuam synchronized?
Feem ntau hais lus ua tiav Nws yog tsis yooj yim sua kom tau txais kev sib tw ntawm cov peev txheej manifest hauv pawg khiav thiab qhov tshwm sim los ntawm Git. Vim hais tias nyob rau hauv ib tug tiag tiag manifest tej zaum yuav muaj kev pab cuam annotations / daim ntawv lo, ntxiv ntim thiab lwm yam ntaub ntawv uas tau ntxiv thiab tshem tawm los ntawm cov kev pab cuam dynamically los ntawm ib co controllers. Peb tsis tuaj yeem thiab tsis xav khaws cov ntaub ntawv no hauv Git. Txawm li cas los xij, peb xav kom cov teb uas peb tau teev meej meej hauv Git los coj cov txiaj ntsig tsim nyog thaum rollout.
Nws puv tawm thiaj li dav synchronized resource txoj cai: thaum dov tawm cov peev txheej, koj tuaj yeem hloov lossis tshem tawm tsuas yog cov teb uas tau teev meej meej hauv qhov tshwm sim los ntawm Git (lossis tau teev tseg hauv cov ntawv dhau los thiab tam sim no raug tshem tawm).
3-txoj kev sib koom ua ke
Lub tswv yim tseem ceeb 3-txoj kev sib koom ua ke: peb tsim ib thaj nruab nrab ntawm qhov kawg thov version ntawm qhov manifest los ntawm Git thiab lub hom phiaj version ntawm lub manifest los ntawm Git, coj mus rau hauv tus account lub tam sim no version ntawm lub manifest los ntawm cov khiav pawg. Cov txiaj ntsig thaj yuav tsum ua raws li txoj cai tswj hwm kev siv khoom siv:
teb tshiab ntxiv rau lub hom phiaj version yog ntxiv siv ib thaj;
yav tas los cov teb uas twb muaj lawm nyob rau hauv lub xeem thov version thiab tsis muaj nyob rau hauv lub hom phiaj version yog pib dua siv ib thaj;
teb nyob rau hauv lub tam sim no version ntawm cov khoom uas txawv ntawm lub hom phiaj version ntawm lub manifest yog kho tshiab siv lub thaj.
Nws yog nyob ntawm txoj cai no uas nws tsim thaj ua rau thaj kubectl apply:
qhov kawg thov version ntawm qhov manifest yog khaws cia rau hauv cov lus piav qhia ntawm cov khoom nws tus kheej,
phiaj - muab los ntawm YAML cov ntaub ntawv,
qhov tam sim no yog los ntawm pawg khiav.
Tam sim no uas peb tau txheeb xyuas qhov kev xav, nws yog lub sijhawm los qhia koj tias peb tau ua dab tsi hauv werf.
Siv cov kev hloov pauv rau werf
Yav dhau los, werf, zoo li Helm 2, siv 2-txoj kev-merge thaj ua rau thaj.
Kho thaj
Txhawm rau hloov mus rau hom tshiab thaj ua rau thaj - 3-txoj kev-merge - thawj kauj ruam peb tau qhia txog qhov hu ua kho thaj ua rau thaj.
Thaum xa tawm, tus qauv 2-txoj kev sib koom ua ke yog siv, tab sis werf kuj tseem tsim ib thaj chaw uas yuav synchronize lub xeev tiag tiag ntawm cov peev txheej nrog cov ntawv sau hauv Git (xws li ib thaj yog tsim siv tib txoj cai synchronized peev txheej tau piav qhia saum toj no) .
Yog tias qhov desynchronization tshwm sim, thaum kawg ntawm kev xa tawm tus neeg siv tau txais lus ceeb toom nrog cov lus sib xws thiab thaj uas yuav tsum tau siv los nqa cov peev txheej mus rau ib daim ntawv synchronized. Lub thaj no kuj tau sau tseg hauv cov lus piav qhia tshwj xeeb werf.io/repair-patch. Nws yog xav tias tus neeg siv txhais tes nws tus kheej yuav siv thaj chaw no: werf yuav tsis siv nws kiag li.
Kev tsim kho thaj ua rau thaj yog ib qho kev ntsuas ib ntus uas tso cai rau koj los ntsuas qhov tsim cov thaj ua rau thaj raws li 3-txoj kev sib koom ua ke, tab sis tsis txhob siv cov thaj ua rau thaj no. Tam sim no, hom kev ua haujlwm no tau qhib los ntawm lub neej ntawd.
Kab rov tav txiav xaiv tus naj npawb ntawm replicas, ntsug - tus naj npawb ntawm cov peev txheej. Ob tus naj npawb ntawm replicas thiab cov kev cai yuav tsum tau teev nyob rau hauv cov peev txheej manifest (saib Resource Manifest). spec.replicas los yog spec.containers[].resources.limits.cpu, spec.containers[].resources.limits.memory ΠΈ lwm yam).
Teeb meem: yog tias tus neeg siv teeb tsa cov peev txheej hauv daim ntawv qhia kom nws qhia txog qee qhov txiaj ntsig rau cov peev txheej lossis cov khoom siv rov ua dua thiab cov autoscalers tau qhib rau cov peev txheej no, tom qab ntawd nrog txhua qhov kev xa tawm werf yuav rov pib dua cov txiaj ntsig no rau qhov tau sau rau hauv daim ntawv qhia. .
Muaj ob txoj kev daws teeb meem. Yuav pib nrog, nws yog qhov zoo tshaj kom tsis txhob qhia meej meej autoscaled qhov tseem ceeb hauv daim ntawv qhia. Yog tias qhov kev xaiv no tsis haum rau qee qhov laj thawj (piv txwv li, vim tias nws yooj yim los teeb tsa cov peev txheej thawj zaug thiab tus lej ntawm cov ntawv luam tawm), ces werf muab cov lus piav qhia hauv qab no:
werf.io/set-replicas-only-on-creation=true
werf.io/set-resources-only-on-creation=true
Yog tias muaj cov lus piav qhia zoo li no, werf yuav tsis rov pib dua cov txiaj ntsig zoo ntawm txhua qhov kev xa tawm, tab sis tsuas yog teeb tsa lawv thaum cov peev txheej pib tsim.
Kuv vam tias tom qab kab lus no nws tau ua kom pom tseeb tias 3-txoj kev sib koom ua ke yog dab tsi thiab vim li cas lawv tuaj rau lawv. Los ntawm qhov ua tau zoo ntawm kev pom ntawm kev txhim kho ntawm qhov project werf, lawv qhov kev siv yog lwm kauj ruam ntawm kev txhim kho Helm-zoo li xa mus. Tam sim no koj tuaj yeem hnov ββββqab txog cov teeb meem nrog kev teeb tsa synchronization, uas feem ntau tshwm sim thaum siv Helm 2. Tib lub sijhawm, qhov tseem ceeb tshiab ntawm kev siv cov peev txheej Kubernetes twb tau muab ntxiv rau Helm tso tawm.
Tseem muaj qee qhov teeb meem thiab teeb meem nrog Helm-zoo li kev xa tawm, xws li kev siv Go templates, uas peb yuav txuas ntxiv mus.