Thaum tsim cov txheej txheem CI / CD siv Kubernetes, qee zaum qhov teeb meem tshwm sim ntawm kev tsis sib haum xeeb ntawm cov kev xav tau ntawm cov txheej txheem tshiab thiab daim ntawv thov raug xa mus rau nws. Tshwj xeeb, ntawm daim ntawv thov tsim theem nws yog ib qho tseem ceeb kom tau txais ΠΎΠ΄ΠΈΠ½ duab uas yuav siv tau rau hauv ntawm txhua tus qhov project ib puag ncig thiab pawg. Txoj ntsiab cai no underlies qhov tseeb raws li Google tswj lub thawv (ntau tshaj ib zaug txog qhov no hais lus thiab peb lub tuam tsev technical).
Txawm li cas los xij, koj yuav tsis pom leej twg nyob rau hauv qhov xwm txheej uas lub vev xaib code siv cov txheej txheem npaj ua tiav, kev siv uas txwv tsis pub siv nws ntxiv. Thiab thaum nyob hauv "ib puag ncig ib puag ncig" qhov no yooj yim rau kev nrog, hauv Kubernetes tus cwj pwm no tuaj yeem dhau los ua teeb meem, tshwj xeeb tshaj yog thaum koj ntsib nws thawj zaug. Thaum lub siab xav tuaj yeem tuaj nrog cov kev daws teeb meem uas pom tseeb lossis txawm tias zoo thaum xub thawj siab ... nws yog ib qho tseem ceeb kom nco ntsoov tias feem ntau cov xwm txheej tuaj yeem thiab yuav tsum daws architecturally.
Cia peb saib cov kev daws teeb meem nrov rau kev khaws cov ntaub ntawv uas tuaj yeem ua rau muaj qhov tsis zoo thaum ua haujlwm ntawm pawg, thiab tseem taw qhia txoj hauv kev kom raug dua.
Static cia
Txhawm rau ua piv txwv, xav txog daim ntawv thov web uas siv qee yam ntawm cov tshuab hluav taws xob zoo li qub kom tau txais cov duab, qauv, thiab lwm yam. Piv txwv li, Yii PHP lub moj khaum muaj tus thawj tswj hwm khoom vaj khoom tsev uas tsim cov npe tshwj xeeb. Raws li, qhov tso zis yog ib txheej ntawm txoj hauv kev rau qhov chaw zoo li qub uas pom tseeb tsis cuam tshuam nrog ib leeg (qhov no tau ua rau ntau yam - piv txwv li, txhawm rau tshem tawm cov duplicates thaum siv tib cov peev txheej los ntawm ntau yam khoom). Yog li, tawm ntawm lub thawv, thawj zaug koj nkag mus rau lub vev xaib kev pabcuam, cov ntaub ntawv zoo li qub (qhov tseeb, feem ntau symlinks, tab sis ntau ntxiv rau qhov ntawd tom qab) tau tsim thiab nteg tawm nrog cov npe hauv paus tshwj xeeb rau kev xa tawm no:
webroot/assets/2072c2df/css/β¦
webroot/assets/2072c2df/images/β¦
webroot/assets/2072c2df/js/β¦
Qhov no txhais li cas ntawm cov pawg?
Qhov piv txwv yooj yim tshaj plaws
Cia peb ua ib qho xwm txheej zoo sib xws, thaum PHP ua ntej los ntawm nginx los faib cov ntaub ntawv zoo li qub thiab ua cov lus thov yooj yim. Txoj kev yooj yim tshaj plaws - txiag nrog ob lub thawv:
Tam sim no cov ntaub ntawv zoo li qub tsim hauv lub thawv tau txais kev pabcuam los ntawm nginx kom raug. Tab sis cia kuv nco ntsoov koj tias qhov no yog qhov kev daws teeb meem qub, uas txhais tau tias nws nyob deb ntawm qhov zoo tshaj plaws thiab nws muaj nws tus kheej nuances thiab shortcomings, uas tau tham hauv qab no.
Kev khaws cia ntau dua
Tam sim no xav txog qhov xwm txheej uas tus neeg siv tau mus xyuas lub xaib, thauj ib nplooj ntawv nrog cov qauv muaj nyob hauv lub thawv, thiab thaum nws nyeem nplooj ntawv no, peb rov xa cov thawv. Cov khoom muaj nqis tau dhau los ua qhov khoob thiab qhov kev thov rau PHP yuav tsum tau pib tsim cov tshiab. Txawm li cas los xij, txawm tias tom qab no, kev txuas mus rau cov qub statics yuav tsis cuam tshuam, uas yuav ua rau muaj kev ua yuam kev hauv kev nthuav tawm statics.
Tsis tas li ntawd, peb feem ntau yuav muaj ntau dua lossis tsawg dua qhov project, uas txhais tau hais tias ib daim ntawv thov yuav tsis txaus:
Cia peb ntsuas nws txiag mus txog rau ob replicas.
Thaum lub xaib tau nkag mus rau thawj zaug, cov cuab yeej cuab tam tau tsim nyob rau hauv ib qho replica.
Qee lub sij hawm, ingress txiav txim siab (rau lub hom phiaj thauj khoom sib npaug) xa daim ntawv thov mus rau qhov thib ob replica, thiab cov cuab tam no tseem tsis tau muaj. Los yog tej zaum lawv tsis nyob ntawd lawm vim peb siv RollingUpdate thiab tam sim no peb tab tom ua kev xa tawm.
Feem ntau, qhov tshwm sim yog rov ua yuam kev.
Txhawm rau kom tsis txhob poob cov khoom qub, koj tuaj yeem hloov pauv emptyDir rau hostPath, ntxiv static lub cev rau ib pawg node. Txoj kev no tsis zoo vim peb yeej yuav tsum tau khi rau ib qho kev sib koom ua ke koj daim ntawv thov, vim - nyob rau hauv cov ntaub ntawv ntawm tsiv mus rau lwm cov nodes - cov directory yuav tsis muaj cov ntaub ntawv tsim nyog. Los yog qee hom keeb kwm yav dhau los synchronization ntawm cov nodes yuav tsum tau.
Cov kev daws teeb meem yog dab tsi?
Yog tias kho vajtse thiab cov peev txheej tso cai, koj tuaj yeem siv cephfs ua los npaj ib daim ntawv qhia sib npaug rau cov kev xav tau zoo li qub. Cov ntaub ntawv raug cai pom zoo SSD drives, tsawg kawg peb-fold replication thiab ruaj khov "thick" kev sib txuas ntawm pawg nodes.
Qhov kev xaiv tsawg dua yuav yog los npaj NFS server. Txawm li cas los xij, tom qab ntawd koj yuav tsum tau coj mus rau hauv tus account qhov ua tau nce ntxiv hauv lub sijhawm teb rau kev ua cov lus thov los ntawm lub vev xaib server, thiab kev zam txim txhaum yuav tawm ntau yam uas xav tau. Qhov tshwm sim ntawm kev ua tsis tiav yog qhov kev puas tsuaj loj: qhov poob ntawm lub mount dooms cov pawg kom tuag nyob rau hauv lub siab ntawm LA load rushing rau saum ntuj.
Ntawm lwm yam, tag nrho cov kev xaiv rau kev tsim kom ruaj khov yuav xav tau tom qab ntxuav outdated pawg ntawm cov ntaub ntawv sau nyob rau hauv ib lub sij hawm ntawm lub sij hawm. Hauv pem hauv ntej ntawm cov thawv nrog PHP koj tuaj yeem tso DaemonSet los ntawm caching nginx, uas yuav khaws cov ntawv theej ntawm cov cuab tam rau lub sijhawm txwv. Tus cwj pwm no yooj yim configurable siv proxy_cache nrog cia qhov tob hauv hnub lossis gigabytes ntawm qhov chaw disk.
Kev sib koom ua ke nrog cov qauv no nrog cov ntaub ntawv xa tawm uas tau hais los saum toj no muab qhov chaw loj rau kev xav, tsuas yog txwv los ntawm cov peev nyiaj thiab cov peev txheej ntawm cov neeg uas yuav siv thiab txhawb nqa. Los ntawm kev paub dhau los, peb tuaj yeem hais tias qhov yooj yim ntawm lub kaw lus, qhov ruaj khov dua nws ua haujlwm. Thaum cov khaubncaws sab nraud povtseg ntxiv, nws yuav nyuaj dua los tswj cov txheej txheem, thiab tib lub sijhawm siv rau kev kuaj mob thiab rov qab los ntawm txhua qhov kev ua tsis tiav nce.
Pom zoo
Yog tias qhov kev siv ntawm cov kev xaiv khaws cia kuj zoo li tsis ncaj ncees rau koj (nqus, kim ...), ces nws tsim nyog saib qhov xwm txheej ntawm sab nraud. Namely, mus khawb rau hauv qhov project architecture thiab kho qhov teeb meem hauv cov cai, khi rau qee cov ntaub ntawv zoo li qub hauv daim duab, ib qho kev txhais tsis meej ntawm cov ntsiab lus lossis txheej txheem rau "ua kom sov" thiab / lossis ua ntej cov khoom muaj nqis ntawm cov duab sib dhos theem. Txoj kev no peb tau txais tus cwj pwm zoo tiag tiag thiab tib txheej ntawm cov ntaub ntawv rau txhua qhov chaw thiab rov ua dua ntawm daim ntawv thov khiav.
Yog tias peb rov qab mus rau qhov piv txwv tshwj xeeb nrog Yii lub moj khaum thiab tsis delve rau hauv nws cov qauv (uas tsis yog lub hom phiaj ntawm tsab xov xwm), nws txaus los taw qhia ob txoj hauv kev nrov:
Txhais cov hashs tshwj xeeb rau cov cuab yeej cuab tam cov npe, raws li tau tham hauv e.g. qhov kev nthuav qhia no (pib los ntawm swb No. 35). Los ntawm txoj kev, tus sau tsab ntawv ceeb toom thaum kawg (thiab tsis yog vim li cas!) qhia tias tom qab sib sau cov cuab tam ntawm cov neeg rau zaub mov tsim, xa lawv mus rau hauv nruab nrab cia (xws li S3), nyob rau hauv pem hauv ntej ntawm qhov chaw tso CDN.
Download tau cov ntaub ntawv
Lwm rooj plaub uas yuav twv yuav raug hu ua si thaum tsiv ib daim ntawv thov mus rau Kubernetes pawg yog khaws cov neeg siv cov ntaub ntawv hauv cov ntaub ntawv kaw lus. Piv txwv li, peb rov muaj ib daim ntawv thov PHP uas lees txais cov ntaub ntawv los ntawm daim ntawv upload, ua ib yam dab tsi nrog lawv thaum ua haujlwm, thiab xa lawv rov qab.
Hauv Kubernetes, qhov chaw uas cov ntaub ntawv no yuav tsum tau muab tso rau yuav tsum muaj rau txhua qhov kev hloov pauv ntawm daim ntawv thov. Nyob ntawm qhov nyuaj ntawm daim ntawv thov thiab qhov xav tau los txhim kho qhov kev pheej hmoo ntawm cov ntaub ntawv no, cov kev xaiv saum toj no sib koom ua ke yuav yog qhov chaw zoo li no, tab sis, raws li peb pom, lawv muaj lawv qhov tsis zoo.
Pom zoo
Ib qho kev daws teeb meem yog siv S3-compatible storage (txawm tias nws yog qee yam ntawm tus kheej-tswj qeb zoo li minio). Hloov mus rau S3 yuav xav tau kev hloov pauv ntawm qib code, thiab yuav ua li cas cov ntsiab lus yuav xa tuaj rau pem hauv ntej kawg, peb twb muaj lawm sau tau.
Cov neeg siv sijhawm
Cais, nws yog tsim nyog sau cia lub koom haum ntawm kev cia ntawm cov neeg siv zaug. Feem ntau cov no kuj yog cov ntaub ntawv ntawm disk, uas nyob rau hauv cov ntsiab lus ntawm Kubernetes yuav ua rau qhov kev thov kev tso cai tas li los ntawm tus neeg siv yog tias nws qhov kev thov xaus rau hauv lwm lub thawv.
Qhov teeb meem yog ib feem daws los ntawm kev tig rau stickySessions ntawm ingress (lub feature yog txaus siab nyob rau hauv tag nrho cov nrov ingress controllers - kom paub meej ntxiv, saib peb tshuaj xyuas)txhawm rau khi tus neeg siv rau ib qho tshwj xeeb pod nrog daim ntawv thov: