Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Nyob zoo sawv daws! Kuv lub npe yog Pavel Agaletsky. Kuv ua haujlwm ua ib pab neeg ua haujlwm hauv pab pawg uas tsim kho Lamoda kev xa khoom. Xyoo 2018, kuv tau hais hauv lub rooj sib tham HighLoad ++, thiab hnub no kuv xav nthuav tawm cov ntawv sau ntawm kuv daim ntawv tshaj tawm.

Kuv lub ntsiab lus tau mob siab rau peb lub tuam txhab kev paub dhau los hauv kev xa cov tshuab thiab cov kev pabcuam rau ntau qhov chaw. Pib los ntawm peb lub sijhawm ua ntej keeb kwm, thaum peb xa tag nrho cov tshuab mus rau hauv cov servers zoo tib yam, xaus nrog kev hloov pauv ntawm Nomad mus rau kev xa tawm hauv Kubernetes. Kuv yuav qhia koj tias vim li cas peb tau ua nws thiab peb muaj teeb meem dab tsi hauv cov txheej txheem.

Deploying applications rau VM

Cia peb pib nrog qhov tseeb tias 3 xyoo dhau los tag nrho cov tuam txhab cov txheej txheem thiab cov kev pabcuam raug xa mus rau cov servers tsis tu ncua. Technically, nws tau teeb tsa nyob rau hauv xws li ib txoj kev uas tag nrho cov cai rau peb lub tshuab tau khaws cia thiab sib sau ua ke siv cov cuab yeej sib dhos tsis siv neeg, siv jenkins. Siv Ansible, nws tau dov tawm los ntawm peb qhov kev tswj hwm version rau virtual servers. Ntxiv mus, txhua qhov system uas peb lub tuam txhab tau muab xa mus rau tsawg kawg 2 servers: ib qho ntawm lawv lub taub hau, qhov thib ob ntawm tus Tsov tus tw. Ob lub tshuab no tau zoo ib yam rau txhua tus hauv lawv qhov chaw, lub zog, kev teeb tsa, thiab lwm yam. Qhov sib txawv ntawm lawv tsuas yog lub taub hau tau txais cov neeg siv tsheb, thaum tus Tsov tus tw yeej tsis tau txais cov neeg siv tsheb.

Vim li cas qhov no ua tiav?

Thaum peb xa cov ntawv tso tawm tshiab ntawm peb daim ntawv thov, peb xav ua kom muaj kev sib haum xeeb, uas yog, tsis muaj qhov tshwm sim rau cov neeg siv. Qhov no tau ua tiav vim qhov tseeb tias tom ntej tso tso tso ua ke siv Ansible tau dov tawm mus rau tus Tsov tus tw. Nyob ntawd, cov neeg uas tau koom nrog hauv kev xa tawm tuaj yeem tshawb xyuas thiab xyuas kom meej tias txhua yam zoo: txhua qhov kev ntsuas, ntu thiab cov ntawv thov tau ua haujlwm; cov ntawv tsim nyog tau pib. Tsuas yog tom qab lawv tau ntseeg tias txhua yam ua tau zoo, cov tsheb tau hloov pauv. Nws pib mus rau lub server uas yav dhau los tus Tsov tus tw. Thiab ib qho uas yav tas los lub taub hau tseem nyob tsis muaj neeg siv tsheb, thaum tseem muaj yav dhau los version ntawm peb daim ntawv thov rau nws.

Yog li nws yog seamless rau cov neeg siv. Vim hais tias lub switching yog instantaneous, vim nws tsuas yog switching lub balancer. Koj tuaj yeem yooj yim yob rov qab mus rau yav dhau los version los ntawm tsuas yog hloov lub balancer rov qab. Peb kuj tuaj yeem txheeb xyuas tau tias daim ntawv thov muaj peev xwm tsim tau txawm tias ua ntej nws tau txais cov neeg siv tsheb, uas yooj yim heev.

Peb pom zoo li cas hauv txhua qhov no?

  1. Ua ntej tshaj plaws, nws txaus nws tsuas ua haujlwm xwb. Txhua leej txhua tus nkag siab tias txoj kev xa tawm no ua haujlwm li cas, vim tias feem ntau cov neeg tau siv mus rau virtual servers li niaj zaus.
  2. Qhov no txaus ntseeg tau, txij li kev xa khoom siv thev naus laus zis yog qhov yooj yim, sim los ntawm ntau txhiab lub tuam txhab. Ntau lab tus servers raug xa mus rau txoj kev no. Nws yog ib qho nyuaj rau tawg ib yam dab tsi.
  3. Thiab thaum kawg peb tuaj yeem tau txais atomic deployments. Kev xa tawm uas tshwm sim ib txhij rau cov neeg siv, tsis muaj qhov pom ntawm theem ntawm kev hloov ntawm cov qub version thiab tus tshiab.

Tab sis peb kuj pom ntau qhov tsis txaus hauv txhua qhov no:

  1. Ntxiv rau qhov chaw tsim khoom, ib puag ncig kev tsim kho, muaj lwm qhov chaw. Piv txwv li, qa thiab preproduction. Lub sijhawm ntawd peb muaj ntau lub servers thiab txog 60 qhov kev pabcuam. Vim li no thiaj tsim nyog rau txhua qhov kev pabcuam, tuav qhov tseeb version rau nws tshuab virtual. Ntxiv mus, yog tias koj xav hloov kho cov tsev qiv ntawv lossis nruab qhov kev vam khom tshiab, koj yuav tsum ua qhov no hauv txhua qhov chaw. Koj kuj yuav tsum tau synchronize lub sij hawm thaum koj yuav mus deploy tus tshiab version tom ntej ntawm koj daim ntawv thov nrog lub sij hawm thaum devops ua qhov tsim nyog ib puag ncig chaw. Nyob rau hauv cov ntaub ntawv no, nws yog ib qho yooj yim mus rau hauv ib qho teeb meem uas peb ib puag ncig yuav txawv me ntsis nyob rau hauv tag nrho cov ib puag ncig ib zaug. Piv txwv li, nyob rau hauv ib puag ncig QA yuav muaj qee lub tsev qiv ntawv, thiab nyob rau hauv ib qho chaw tsim khoom yuav muaj qhov sib txawv, uas yuav ua rau muaj teeb meem.
  2. Nyuaj hloov kho kev vam khom koj daim ntawv thov. Nws tsis nyob ntawm koj, tab sis ntawm lwm pab neeg. Namely, los ntawm pab neeg devops uas tswj cov servers. Koj yuav tsum muab lawv txoj haujlwm tsim nyog thiab piav qhia txog yam koj xav ua.
  3. Lub sijhawm ntawd, peb kuj xav faib cov monoliths loj loj uas peb muaj rau hauv cov kev pabcuam me me, vim peb nkag siab tias yuav muaj ntau thiab ntau dua. Lub sijhawm ntawd, peb twb muaj ntau dua 100 ntawm lawv, rau txhua qhov kev pabcuam tshiab, nws yog ib qho tsim nyog los tsim ib lub tshuab virtual tshiab cais, uas tseem yuav tsum tau khaws cia thiab siv. Tsis tas li ntawd, koj xav tau tsis yog ib lub tsheb, tab sis tsawg kawg yog ob. Ntxiv rau tag nrho qhov no yog QA ib puag ncig. Qhov no ua rau muaj teeb meem thiab ua rau nws nyuaj rau koj los tsim thiab ua haujlwm tshiab. complex, kim thiab ntev txheej txheem.

Yog li ntawd, peb txiav txim siab tias nws yuav yooj yim dua los ntawm kev xa cov tshuab virtual mus rau kev xa peb cov ntawv thov hauv lub thawv docker. Yog tias koj muaj docker, koj xav tau lub kaw lus uas tuaj yeem khiav daim ntawv thov hauv pawg, vim koj tsis tuaj yeem tsa lub thawv. Feem ntau koj xav kom taug qab ntau npaum li cas ntim tau nqa kom lawv nqa tau. Vim li no, peb yuav tsum xaiv ib qho kev tswj hwm.

Peb tau xav ntev ntev txog qhov twg peb tuaj yeem nqa tau. Qhov tseeb yog tias lub sijhawm ntawd qhov kev xa tawm pawg ntawm cov servers virtual tsis tu ncua yog qhov qub, txij li lawv tsis muaj qhov tseeb versions ntawm kev khiav haujlwm. Qee lub sij hawm, muaj txawm tias FreeBSD, uas tsis yooj yim heev rau kev txhawb nqa. Peb nkag siab tias peb yuav tsum tsiv mus nyob rau docker kom sai li sai tau. Peb cov devops tau saib lawv cov kev paub dhau los nrog cov kev daws teeb meem sib txawv thiab xaiv lub kaw lus zoo li Nomad.

Hloov mus rau Nomad

Nomad yog ib yam khoom ntawm HashiCorp. Lawv kuj paub txog lawv cov kev daws teeb meem:

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

"Consul" yog ib qho cuab yeej rau kev nrhiav pom.

"Terraform" - lub kaw lus rau kev tswj cov servers uas tso cai rau koj los teeb tsa lawv los ntawm kev teeb tsa, hu ua infrastructure-as-a-code.

"Vagrant" tso cai rau koj siv cov tshuab virtual hauv zos lossis hauv huab ntawm cov ntaub ntawv teeb tsa tshwj xeeb.

Nomad nyob rau lub sijhawm ntawd zoo li qhov kev daws teeb meem yooj yim uas tuaj yeem hloov mus sai yam tsis hloov tag nrho cov txheej txheem. Tsis tas li ntawd, nws yooj yim heev rau kev kawm. Tias yog vim li cas peb xaiv nws ua qhov pom kev rau peb lub thawv.

Koj xav tau dab tsi los xa koj qhov system mus rau Nomad?

  1. Ua ntej tshaj plaws koj xav tau duab docker koj daim ntawv thov. Koj yuav tsum tsim nws thiab muab tso rau hauv docker duab repository. Nyob rau hauv peb cov ntaub ntawv, qhov no yog ib tug artifactory - ib tug system uas tso cai rau koj mus thawb ntau yam artifacts ntawm ntau hom rau nws. Nws tuaj yeem khaws cov archives, docker dluab, composer PHP pob, NPM pob, thiab lwm yam.
  2. Kuj yuav tsum tau configuration file, uas yuav qhia Nomad dab tsi, qhov twg thiab qhov ntau npaum li cas koj xav xa mus.

Thaum peb tham txog Nomad, nws siv hom lus HCL raws li nws cov ntaub ntawv cov ntaub ntawv, uas sawv cev rau HashiCorp Configuration Language. Qhov no yog lub superset ntawm Yaml uas tso cai rau koj los piav txog koj qhov kev pabcuam hauv Nomad cov ntsiab lus.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Nws tso cai rau koj hais tias muaj pes tsawg lub thawv koj xav xa mus, los ntawm cov duab twg kom dhau ntau qhov kev txwv rau lawv thaum xa tawm. Yog li, koj pub cov ntaub ntawv no rau Nomad, thiab nws tso cov ntim rau hauv ntau lawm raws li nws.

Hauv peb qhov xwm txheej, peb pom tau tias tsuas yog sau cov ntaub ntawv HCL zoo ib yam rau txhua qhov kev pabcuam yuav tsis yooj yim heev, vim tias muaj ntau cov kev pabcuam thiab qee zaum koj xav hloov kho lawv. Nws tshwm sim tias ib qho kev pabcuam raug siv tsis yog hauv ib qho piv txwv, tab sis nyob rau hauv ntau yam sib txawv. Piv txwv li, ib qho ntawm cov tshuab uas peb muaj nyob rau hauv kev tsim khoom muaj ntau tshaj 100 zaus hauv kev tsim khoom. Lawv khiav los ntawm tib dluab, tab sis txawv nyob rau hauv configuration chaw thiab configuration ntaub ntawv.

Yog li ntawd, peb txiav txim siab tias nws yuav yooj yim rau peb khaws tag nrho peb cov ntaub ntawv teeb tsa rau kev xa mus rau hauv ib qho chaw khaws cia. Txoj kev no lawv tau pom: lawv tau yooj yim los tswj thiab peb tuaj yeem pom tias peb muaj dab tsi. Yog tias tsim nyog, nws kuj yog ib qho yooj yim los hloov kho lossis hloov qee yam. Ntxiv cov txheej txheem tshiab kuj tsis yooj yim - koj tsuas yog xav tau tsim cov ntaub ntawv teeb tsa hauv cov npe tshiab. Hauv nws yog cov ntaub ntawv hauv qab no: service.hcl, uas muaj cov lus piav qhia ntawm peb cov kev pabcuam, thiab qee cov ntaub ntawv env uas tso cai rau qhov kev pabcuam no, raug xa mus rau hauv ntau lawm, kom teeb tsa.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Txawm li cas los xij, qee qhov ntawm peb cov tshuab tau siv hauv kev tsim khoom tsis yog hauv ib daim ntawv, tab sis hauv ob peb zaug ib zaug. Yog li ntawd, peb txiav txim siab tias nws yuav yooj yim rau peb khaws tsis yog cov configs hauv lawv daim ntawv ntshiab, tab sis lawv daim ntawv templated. Thiab peb xaiv jnuj 2. Hauv hom ntawv no, peb khaws ob qho tib si configs ntawm kev pabcuam nws tus kheej thiab cov ntaub ntawv env xav tau rau nws.

Tsis tas li ntawd, peb tau muab tso rau hauv qhov chaw khaws cov ntawv xa mus rau txhua qhov haujlwm, uas tso cai rau koj tso tawm thiab xa koj cov kev pabcuam rau hauv kev tsim khoom, mus rau qhov chaw xav tau, rau hauv lub hom phiaj xav tau. Nyob rau hauv rooj plaub thaum peb tig peb HCL config mus rau hauv ib tug template, ces cov ntaub ntawv HCL, uas ua ntej yog ib txwm Nomad config, nyob rau hauv cov ntaub ntawv no pib saib txawv me ntsis.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Ntawd yog, peb hloov qee qhov chaw hloov pauv qhov chaw nrog cov hloov pauv uas tau muab los ntawm env cov ntaub ntawv lossis lwm qhov chaw. Tsis tas li ntawd, peb tau txais lub sijhawm los sau cov ntaub ntawv HCL dynamically, uas yog, peb tuaj yeem siv tsis yog qhov sib txawv ntawm qhov sib txawv. Txij li thaum jinja txhawb cov voj voog thiab cov xwm txheej, koj tuaj yeem tsim cov ntaub ntawv teeb tsa nyob ntawd, uas hloov pauv nyob ntawm qhov chaw raws nraim koj xa koj daim ntawv thov.

Piv txwv li, koj xav xa koj cov kev pabcuam rau kev tsim khoom ua ntej thiab ntau lawm. Cia peb hais tias hauv kev tsim khoom ua ntej koj tsis xav khiav cron scripts, tab sis tsuas yog xav pom cov kev pabcuam ntawm ib qho chaw cais kom paub tseeb tias nws ua haujlwm. Rau txhua tus neeg siv cov kev pabcuam, cov txheej txheem zoo li yooj yim heev thiab pob tshab. Txhua yam koj yuav tsum tau ua yog ua tiav cov ntaub ntawv deploy.sh, qhia meej qhov kev pabcuam koj xav xa mus rau lub hom phiaj twg. Piv txwv li, koj xav xa ib qho system mus rau Russia, Belarus lossis Kazakhstan. Txhawm rau ua qhov no, tsuas yog hloov ib qho ntawm qhov tsis muaj, thiab koj yuav muaj cov ntaub ntawv teeb tsa raug.

Thaum qhov kev pabcuam Nomad twb tau xa mus rau koj pawg, nws zoo li qhov no.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Ua ntej, koj xav tau qee yam kev sib npaug sab nraud, uas yuav tau txais tag nrho cov neeg siv tsheb. Nws yuav ua hauj lwm ua ke nrog Consul thiab nrhiav tau los ntawm nws qhov twg, ntawm dab tsi node, ntawm qhov chaw nyob IP qhov kev pabcuam tshwj xeeb nyob rau hauv uas sib haum rau ib lub npe sau npe. Cov kev pabcuam hauv Consul tuaj ntawm Nomad nws tus kheej. Txij li cov no yog cov khoom lag luam los ntawm tib lub tuam txhab, lawv muaj feem cuam tshuam rau ib leeg. Peb tuaj yeem hais tias Nomad tawm ntawm lub thawv tuaj yeem sau npe tag nrho cov kev pabcuam tsim tawm hauv nws hauv Consul.

Thaum koj lub tsheb thauj khoom pem hauv ntej-kawg paub qhov kev pabcuam xa mus rau, nws xa mus rau lub thawv tsim nyog lossis ntau lub thawv uas phim koj daim ntawv thov. Lawm, nws yog ib qho tsim nyog yuav tau xav txog kev nyab xeeb. Txawm hais tias tag nrho cov kev pabcuam khiav ntawm tib lub tshuab virtual hauv ntim, qhov no feem ntau yuav tsum tiv thaiv kev nkag mus dawb los ntawm kev pabcuam rau lwm yam. Peb ua tiav qhov no los ntawm segmentation. Txhua qhov kev pabcuam tau tsim tawm hauv nws tus kheej lub network virtual, uas tau sau cov cai thiab cov cai rau kev tso cai / tsis kam nkag mus rau lwm lub tshuab thiab cov kev pabcuam raug sau tseg. Lawv tuaj yeem nyob hauv ob qho tib si hauv pawg no thiab sab nraum nws. Piv txwv li, yog tias koj xav tiv thaiv ib qho kev pabcuam los ntawm kev sib txuas mus rau ib qho chaw khaws ntaub ntawv, qhov no tuaj yeem ua tiav los ntawm kev sib koom ua ke hauv network. Ntawd yog, txawm tias yuam kev, koj tsis tuaj yeem cuam tshuam los ntawm qhov chaw sim rau koj cov ntaub ntawv tsim khoom.

Qhov kev hloov pauv tau them nyiaj ntau npaum li cas rau peb ntawm cov peev txheej tib neeg?

Kev hloov pauv ntawm tag nrho lub tuam txhab mus rau Nomad siv kwv yees li 5-6 lub hlis. Peb tsiv mus nyob rau ntawm kev pabcuam-los ntawm kev pabcuam, tab sis ntawm qhov nrawm nrawm. Txhua pab pawg yuav tsum tsim lawv tus kheej ntim rau cov kev pabcuam.

Peb tau txais txoj hauv kev zoo li no uas txhua pab pawg muaj lub luag haujlwm rau docker cov duab ntawm lawv lub cev ntawm nws tus kheej. DevOps muab cov txheej txheem dav dav tsim nyog rau kev xa tawm, uas yog, kev txhawb nqa rau pawg nws tus kheej, kev txhawb nqa rau CI system, thiab lwm yam. Thiab lub sijhawm ntawd, peb muaj ntau dua 60 lub tshuab txav mus rau Nomad, uas muaj txog li 2 txhiab lub thawv.

Devops yog lub luag haujlwm rau cov txheej txheem dav dav ntawm txhua yam ntsig txog kev xa mus thiab cov servers. Thiab txhua pab pawg txhim kho, dhau los, yog lub luag haujlwm rau kev siv cov ntim rau nws cov txheej txheem tshwj xeeb, vim nws yog pab pawg uas paub qhov nws feem ntau xav tau hauv ib lub thawv tshwj xeeb.

Yog vim li cas rau tso tseg Nomad

Peb tau txais txiaj ntsig dab tsi los ntawm kev hloov mus rau kev xa tawm siv Nomad thiab docker, ntawm lwm tus?

  1. Peb muab kev sib npaug rau txhua qhov chaw. Hauv kev txhim kho, QA ib puag ncig, kev tsim khoom ua ntej, kev tsim khoom, tib lub thawv ntim cov duab siv, nrog tib qhov kev vam meej. Raws li, koj tsis muaj lub sijhawm zoo uas yuav xaus rau hauv kev tsim khoom tsis yog yam koj tau sim yav dhau los hauv zos lossis hauv koj qhov chaw sim.
  2. Peb kuj pom tias nws txaus yooj yim ntxiv qhov kev pabcuam tshiab. Los ntawm kev xa mus rau qhov pom, txhua lub tshuab tshiab tau pib yooj yim heev. Tsuas yog mus rau qhov chaw cia khoom uas khaws cov configs, ntxiv lwm config rau koj qhov system nyob ntawd, thiab koj tau teeb tsa tag nrho. Koj tuaj yeem xa koj qhov system mus rau ntau lawm yam tsis muaj kev siv zog ntxiv los ntawm devops.
  3. Tag nrho configuration files nyob rau hauv ib qho chaw repository muab tau los saib xyuas. Thaum lub sij hawm thaum peb xa peb cov tshuab siv virtual servers, peb siv Ansible, uas cov configs nyob rau hauv tib lub repository. Txawm li cas los xij, rau feem ntau cov neeg tsim tawm qhov no yog qhov nyuaj me ntsis los ua haujlwm nrog. Ntawm no lub ntim ntawm configs thiab code uas koj yuav tsum tau ntxiv rau deploy cov kev pab cuam tau ua ntau me me. Ntxiv rau, nws yooj yim heev rau devops los kho lossis hloov nws. Nyob rau hauv cov ntaub ntawv ntawm kev hloov, piv txwv li, rau ib tug tshiab version ntawm Nomad, lawv muaj peev xwm coj thiab bulk hloov tshiab tag nrho cov khiav hauj lwm cov ntaub ntawv nyob rau hauv tib qhov chaw.

Tab sis peb kuj tau ntsib ntau qhov tsis zoo:

Nws muab tawm tias peb tsis tuaj yeem ua tiav seamless deployments ntawm Nomad. Thaum dov tawm cov thawv nyob rau hauv cov xwm txheej sib txawv, nws tuaj yeem tig mus ua haujlwm, thiab Nomad pom tau tias nws yog lub thawv npaj tau txais kev khiav tsheb. Qhov no tshwm sim ua ntej daim ntawv thov nyob rau hauv nws txawm muaj lub sij hawm mus tso tawm. Vim li no, lub kaw lus tau pib tsim 500 qhov yuam kev rau lub sijhawm luv luv, vim tias kev khiav tsheb pib mus rau lub thawv uas tseem tsis tau npaj los txais.

Peb ntsib qee yam kab. Qhov kab mob tseem ceeb tshaj plaws yog Nomad tsis tuav cov pawg loj heev yog tias koj muaj ntau lub tshuab thiab ntim khoom. Thaum koj xav tshem tawm ib qho ntawm cov servers uas suav nrog hauv Nomad pawg rau kev saib xyuas, muaj qhov ua tau zoo heev uas pawg yuav tsis hnov ​​​​zoo heev thiab yuav poob sib nrug. Qee lub thawv yuav, piv txwv li, poob thiab tsis nce - qhov no yuav ua rau koj raug nqi ntau heev tom qab yog tias tag nrho koj cov tshuab tsim khoom nyob hauv pawg tswj hwm los ntawm Nomad.

Yog li ntawd, peb txiav txim siab xav txog qhov twg peb yuav tsum mus tom ntej. Lub sijhawm ntawd, peb tau paub ntau ntxiv txog qhov peb xav ua tiav. Namely: peb xav tau kev ntseeg siab, me ntsis ntau dua li Nomad muab, thiab ntau tus paub tab, ruaj khov dua.

Hauv qhov no, peb qhov kev xaiv poob rau Kubernetes ua lub platform nrov tshaj plaws rau kev tsim cov pawg. Tshwj xeeb tshaj yog tias qhov loj thiab tus naj npawb ntawm peb cov ntim khoom loj txaus. Rau cov laj thawj zoo li no, Kubernetes zoo li yog qhov tsim nyog tshaj plaws uas peb tuaj yeem saib.

Hloov mus rau Kubernetes

Kuv yuav qhia koj me ntsis txog cov ntsiab lus tseem ceeb ntawm Kubernetes thiab lawv txawv li cas ntawm Nomad.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Ua ntej tshaj plaws, lub tswv yim tseem ceeb tshaj plaws hauv Kubernetes yog lub tswv yim ntawm cov pod. Plhaub taum mog yog ib pawg ntawm ib lossis ntau lub thawv uas ib txwm khiav ua ke. Thiab lawv ib txwm ua haujlwm zoo li nruj me ntsis ntawm ib lub tshuab virtual. Lawv tuaj yeem siv tau rau ib leeg ntawm IP 127.0.0.1 ntawm cov chaw nres nkoj sib txawv.

Cia peb xav tias koj muaj ib daim ntawv thov PHP uas muaj nginx thiab php-fpm - lub tswv yim classic. Feem ntau, koj yuav xav khaws nginx thiab php-fpm ntim ua ke txhua lub sijhawm. Kubernetes tso cai rau koj kom ua tiav qhov no los ntawm kev piav qhia lawv ua ib qho pods. Qhov no yog qhov peb tsis tuaj yeem tau nrog Nomad.

Lub tswvyim thib ob yog xa mus. Qhov tseeb yog tias cov pod nws tus kheej yog ib qho ephemeral; nws pib thiab ploj mus. Koj puas xav tua tag nrho koj cov thawv yav dhau los ua ntej, thiab tom qab ntawd tso tawm cov ntawv tshiab ib zaug, lossis koj puas xav dov lawv maj mam? Nws piav qhia koj yuav siv koj cov pods li cas, qhov ntau npaum li cas thiab yuav hloov kho lawv li cas.

Lub tswvyim thib peb yog kev pab cuam. Koj qhov kev pabcuam yog qhov tseeb koj lub cev, uas tau txais qee qhov kev khiav tsheb thiab tom qab ntawd xa mus rau ib lossis ntau lub pods sib haum rau koj qhov kev pabcuam. Ntawd yog, nws tso cai rau koj hais tias tag nrho cov khoom xa tuaj rau qhov kev pabcuam zoo li no thiab cov npe zoo li no yuav tsum raug xa mus rau cov pods tshwj xeeb. Thiab tib lub sij hawm nws muab koj nrog kev sib npaug ntawm kev sib tw. Ntawd yog, koj tuaj yeem tso ob lub pods ntawm koj daim ntawv thov, thiab tag nrho cov khoom xa tuaj yuav sib npaug ntawm cov pods ntsig txog qhov kev pabcuam no.

Thiab lub ntsiab lus thib plaub yog Ingress. Qhov no yog ib qho kev pabcuam uas khiav ntawm Kubernetes pawg. Nws ua raws li cov khoom sib npaug sab nraud uas siv tag nrho cov kev thov. Siv Kubernetes API, Ingress tuaj yeem txiav txim siab qhov twg cov kev thov no yuav tsum raug xa mus. Tsis tas li ntawd, nws ua qhov no yooj yim heev. Koj tuaj yeem hais tias txhua qhov kev thov rau tus tswv tsev no thiab qhov URL zoo li no raug xa mus rau qhov kev pabcuam no. Thiab cov kev thov no tuaj rau tus tswv tsev no thiab mus rau lwm qhov URL raug xa mus rau lwm qhov kev pabcuam.

Qhov zoo tshaj plaws los ntawm qhov pom ntawm ib tus neeg uas tsim daim ntawv thov yog tias koj tuaj yeem tswj hwm koj tus kheej. Los ntawm kev teeb tsa Ingress config, koj tuaj yeem xa tag nrho cov tsheb khiav mus rau qhov no thiab xws li API rau cais cov thawv sau, piv txwv li, hauv Go. Tab sis qhov kev khiav tsheb no, tuaj rau tib lub npe, tab sis mus rau qhov sib txawv URL, yuav tsum raug xa mus rau cov thawv sau hauv PHP, qhov twg muaj ntau qhov laj thawj, tab sis lawv tsis nrawm heev.

Yog tias peb piv tag nrho cov ntsiab lus no nrog Nomad, peb tuaj yeem hais tias thawj peb lub ntsiab lus yog tag nrho ua ke Kev Pabcuam. Thiab lub tswv yim kawg yog tsis nyob hauv Nomad nws tus kheej. Peb siv cov khoom sib npaug sab nraud raws li nws: nws tuaj yeem yog haproxy, nginx, nginx +, thiab lwm yam. Nyob rau hauv cov ntaub ntawv ntawm ib lub voos xwmfab, koj tsis tas yuav ua kom paub cov tswv yim ntxiv no cais. Txawm li cas los xij, yog tias koj saib ntawm Ingress sab hauv, nws yog nginx, haproxy, lossis traefik, tab sis ua rau Kubernetes.

Txhua lub ntsiab lus kuv tau piav qhia yog qhov tseeb, cov peev txheej uas muaj nyob hauv Kubernetes pawg. Txhawm rau piav qhia lawv hauv lub voos xwmfab, ib hom yaml yog siv, uas yog nyeem tau thiab paub ntau dua li HCL cov ntaub ntawv nyob rau hauv rooj plaub ntawm Nomad. Tab sis structurally lawv piav tib yam nyob rau hauv cov ntaub ntawv ntawm, piv txwv li, pod. Lawv hais tias - Kuv xav xa cov pods zoo li no, nrog rau cov duab zoo li no, hauv qhov ntau thiab tsawg.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Tsis tas li ntawd, peb pom tau hais tias peb tsis xav tsim txhua tus neeg siv khoom los ntawm tes: kev xa tawm, kev pabcuam, Ingress, thiab lwm yam. Hloov chaw, peb xav piav qhia txhua yam ntawm peb lub tshuab hais txog Kubernetes thaum lub sijhawm xa mus, yog li ntawd peb yuav tsis tas yuav rov tsim kho txhua yam kev pabcuam tsim nyog nyob rau hauv txoj cai. Helm raug xaiv los ua qhov system uas tso cai rau peb ua qhov no.

Cov ntsiab lus tseem ceeb hauv Helm

Helm yog tus thawj tswj pob rau Kubernetes. Nws zoo ib yam li cov neeg saib xyuas pob li cas hauv cov lus programming ua haujlwm. Lawv tso cai rau koj khaws cov kev pabcuam suav nrog, piv txwv li, xa tawm nginx, xa tawm php-fpm, config rau Ingress, configmaps (qhov no yog ib qho chaw uas tso cai rau koj teeb tsa env thiab lwm yam tsis zoo rau koj lub cev) hauv daim ntawv ntawm li- npe charts. Tib lub sijhawm Helm khiav saum Kubernetes. Ntawd yog, qhov no tsis yog qee yam ntawm qhov system sawv ib sab, tab sis tsuas yog lwm qhov kev pabcuam tau pib hauv lub voos xwmfab. Koj cuam tshuam nrog nws ntawm nws API ntawm console hais kom ua. Nws txoj kev yooj yim thiab kev zoo nkauj yog tias txawm tias lub kaus mom tawg lossis koj tshem tawm ntawm pawg, koj cov kev pabcuam yuav tsis ploj mus, vim tias lub kaus mom hlau tsuas yog siv los pib lub kaw lus. Kubernetes nws tus kheej yog lub luag haujlwm rau kev ua haujlwm thiab lub xeev ntawm cov kev pabcuam.

Peb kuj pom tau tias templateization, uas yav tas los peb tau raug yuam ua peb tus kheej los ntawm kev qhia jinja rau hauv peb cov kev teeb tsa, yog ib qho ntawm cov yam ntxwv tseem ceeb ntawm lub kaus mom hlau. Tag nrho cov kev teeb tsa uas koj tsim rau koj lub tshuab tau khaws cia rau hauv daim ntawv ntawm cov qauv, me ntsis zoo ib yam li jinja, tab sis, qhov tseeb, siv cov qauv ntawm Go lus, uas yog sau, zoo li Kubernetes.

Helm ntxiv ob peb lub tswv yim ntxiv rau peb.

daim ntawv - Qhov no yog qhov piav qhia ntawm koj qhov kev pabcuam. Hauv lwm tus neeg tswj hwm pob nws yuav raug hu ua pob, pob lossis qee yam zoo sib xws. Ntawm no nws yog hu ua daim ntawv qhia.

qhov tseem ceeb yog cov variables uas koj xav siv los tsim koj configs los ntawm templates.

tso tawm. Txhua lub sij hawm ib qho kev pab cuam uas tau siv los ntawm kev siv lub kaus mom hlau tau txais qhov nce ntxiv ntawm qhov kev tso tawm. Helm nco ntsoov tias qhov kev pabcuam config yog dab tsi hauv kev tso tawm dhau los, kev tso tawm ua ntej, thiab lwm yam. Yog li ntawd, yog tias koj xav tau rollback, tsuas yog khiav lub helm callback hais kom ua, taw tes rau qhov kev tso tawm dhau los. Txawm hais tias qhov sib thooj configuration nyob rau hauv koj lub repository tsis muaj nyob rau lub sij hawm ntawm rollback, helm tseem yuav nco ntsoov nws yog dab tsi thiab yuav rollback koj lub cev mus rau lub xeev nws nyob rau hauv lub yav dhau los tso tawm.

Nyob rau hauv rooj plaub thaum peb siv lub kaus mom hlau, tsis tu ncua configs rau Kubernetes kuj tig mus rau hauv cov qauv uas nws muaj peev xwm siv cov kev hloov pauv, kev ua haujlwm, thiab siv cov nqe lus raws cai. Txoj kev no koj tuaj yeem sau koj cov kev pabcuam config nyob ntawm ib puag ncig.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Hauv kev xyaum, peb txiav txim siab ua tej yam txawv me ntsis dua li peb tau ua nrog Nomad. Yog hais tias nyob rau hauv Nomad ob qho tib si deployment configs thiab n-variables uas yuav tsum tau mus deploy peb cov kev pab cuam tau muab cia rau hauv ib lub repository, ntawm no peb txiav txim siab faib lawv mus rau hauv ob cais repositories. Lub "xa" chaw khaws cia tsuas yog n-kuj hloov pauv uas xav tau rau kev xa tawm, thiab "helm" repository khaws cov teeb tsa lossis kab kos.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Qhov no tau muab dab tsi rau peb?

Txawm hais tias peb tsis khaws cov ntaub ntawv tseem ceeb hauv cov ntaub ntawv teeb tsa lawv tus kheej. Piv txwv li, passwords rau databases. Lawv tau khaws cia ua qhov zais cia hauv Kubernetes, tab sis txawm li cas los xij, tseem muaj qee yam nyob ntawd uas peb tsis xav muab rau txhua tus neeg nkag mus. Yog li ntawd, kev nkag mus rau "chaw" repository yog txwv ntau, thiab "helm" repository tsuas muaj cov lus piav qhia ntawm kev pabcuam. Vim li no, nws tuaj yeem nkag mus tau zoo los ntawm ntau tus neeg.

Txij li thaum peb tsis tsuas yog tsim khoom, tab sis kuj muaj lwm qhov chaw, ua tsaug rau qhov kev sib cais no peb tuaj yeem rov siv peb cov kab kos duab kos duab los siv cov kev pabcuam tsis yog rau kev tsim khoom, tab sis kuj, piv txwv li, rau QA ib puag ncig. Txawm mus deploy lawv hauv zos siv Minikube - Qhov no yog ib yam rau kev khiav Kubernetes hauv zos.

Hauv txhua qhov chaw cia khoom, peb tau tso ib qho kev faib rau hauv cov npe cais rau txhua qhov kev pabcuam. Ntawd yog, hauv txhua daim ntawv teev npe muaj cov qauv uas cuam tshuam nrog cov ntawv sib txuas thiab piav qhia txog cov peev txheej uas yuav tsum tau siv los khiav peb lub cev. Peb tsuas tshuav envs nyob rau hauv "xa" repository. Nyob rau hauv cov ntaub ntawv no, peb tsis tau siv templating siv jinja, vim hais tias helm nws tus kheej muab templating tawm ntawm lub thawv - qhov no yog ib qho ntawm nws lub luag haujlwm tseem ceeb.

Peb tau tso ib tsab ntawv xa mus - deploy.sh, uas ua kom yooj yim thiab ua qauv rau kev xa tawm mus siv lub kaus mom hlau. Yog li, rau txhua tus neeg uas xav xa mus, kev xa tawm interface zoo ib yam li nws tau ua thaum xa tawm los ntawm Nomad. Tib yam deploy.sh, lub npe ntawm koj qhov kev pabcuam, thiab qhov twg koj xav xa nws. Qhov no ua rau lub kaus mom pib ua haujlwm sab hauv. Nws, nyob rau hauv lem, sau configs los ntawm templates, ntxig rau qhov tsim nyog cov ntaub ntawv rau lawv, ces deploys, launching lawv mus rau Kubernetes.

tshawb pom

Qhov kev pabcuam Kubernetes zoo li nyuaj dua Nomad.

Siv cov ntawv thov rau VM, Nomad thiab Kubernetes

Ntawm no cov tsheb khiav tawm tuaj rau Ingress. Qhov no tsuas yog tus tswj hwm pem hauv ntej, uas siv tag nrho cov kev thov thiab tom qab ntawd xa lawv mus rau cov kev pabcuam cuam tshuam nrog cov ntaub ntawv thov. Nws txiav txim lawv raws li configs uas yog ib feem ntawm cov lus piav qhia ntawm koj daim ntawv thov nyob rau hauv helm thiab uas developers teem rau lawv tus kheej. Cov kev pabcuam xa cov lus thov mus rau nws cov pods, uas yog, cov ntim tshwj xeeb, ntsuas cov tsheb thauj mus los ntawm txhua lub ntim khoom uas yog cov kev pabcuam no. Thiab, tau kawg, peb yuav tsum tsis txhob hnov ​​​​qab tias peb yuav tsum tsis txhob mus qhov twg los ntawm kev ruaj ntseg ntawm qib network. Yog li ntawd, segmentation ua hauj lwm nyob rau hauv ib tug Kubernetes pawg, uas yog raws li tagging. Txhua qhov kev pabcuam muaj qee cov cim npe uas cov kev pabcuam nkag mus rau qee yam khoom siv sab nraud / sab hauv sab hauv lossis sab nraud pawg koom nrog.

Raws li peb tau hloov pauv, peb pom tias Kubernetes muaj tag nrho cov peev xwm ntawm Nomad, uas peb tau siv yav dhau los, thiab kuj tau ntxiv ntau yam tshiab. Nws tuaj yeem nthuav dav los ntawm plugins, thiab qhov tseeb los ntawm hom kev cai. Ntawd yog, koj muaj lub sijhawm tsis yog siv qee yam uas los nrog Kubernetes tawm ntawm lub thawv, tab sis los tsim koj tus kheej cov peev txheej thiab kev pabcuam uas yuav nyeem koj cov peev txheej. Qhov no muab kev xaiv ntxiv rau koj los nthuav koj lub cev yam tsis tas yuav rov nruab Kubernetes thiab tsis tas yuav hloov kho.

Ib qho piv txwv ntawm kev siv no yog Prometheus, uas khiav hauv peb cov Kubernetes pawg. Txhawm rau kom nws pib sau cov kev ntsuas los ntawm ib qho kev pabcuam tshwj xeeb, peb yuav tsum tau ntxiv ib hom kev pabcuam ntxiv, hu ua kev pabcuam saib xyuas, rau cov lus piav qhia txog kev pabcuam. Prometheus, vim qhov tseeb tias nws tuaj yeem nyeem hom kev cai siv thaum tsim tawm hauv Kubernetes, cia li pib sau cov ntsuas los ntawm cov kab ke tshiab. Nws yooj yim heev.

Thawj qhov kev xa tawm peb tau ua rau Kubernetes yog lub Peb Hlis 2018. Thiab lub sijhawm no peb yeej tsis tau ntsib teeb meem nrog nws. Nws ua haujlwm ruaj khov yam tsis muaj kab mob tseem ceeb. Ntxiv rau, peb tuaj yeem nthuav nws ntxiv. Niaj hnub no peb muaj peev xwm txaus nws muaj, thiab peb nyiam qhov kev loj hlob ntawm Kubernetes. Tam sim no, ntau dua 3000 lub thawv nyob hauv Kubernetes. Cov pawg occupies ob peb Nodes. Nyob rau tib lub sijhawm, nws yog serviceable, ruaj khov thiab tswj tau heev.

Tau qhov twg los: www.hab.com

Ntxiv ib saib