Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Hlokomela phetolelo: Kakaretso ena e tsoang ho Weaveworks e hlahisa maano a tsebahalang haholo a ho qala ts'ebeliso mme e bonts'a hore na a tsoetseng pele haholo a ka kengoa ts'ebetsong joang ho sebelisoa Kubernetes Flagger. E ngotsoe ka puo e bonolo ’me e na le litšoantšo tse bonoang tse lumellang esita le lienjiniere tse sa tsoa qala ho utloisisa taba ena.

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)
Setšoantšo se nkiloe ho tlhahlobo e ngoe maano a phano e entsoeng ho Container Solutions

E 'ngoe ea liqholotso tse kholo ho nts'etsapele lits'ebetso tsa tlhaho tsa cloud kajeno ke ho potlakisa phepelo. Ka mokhoa oa li-microservices, bahlahisi ba se ba ntse ba sebetsa le ho rala lits'ebetso tsa modular ka botlalo, ba lumella lihlopha tse fapaneng ho ngola khoutu ka nako e le ngoe le ho etsa liphetoho ts'ebelisong.

Ho tsamaisoa ha nako e khuts'oane le khafetsa ho na le melemo e latelang:

  • Nako ea ho ea 'marakeng e fokotsehile.
  • Likarolo tse ncha li fihla ho basebelisi kapele.
  • Maikutlo a basebelisi a fihla sehlopheng sa nts'etsopele ka potlako. Sena se bolela hore sehlopha se ka eketsa likarolo le ho lokisa mathata kapele.
  • Boitšoaro ba bahlahisi boa eketseha: likarolo tse ling tsa nts'etsopele li monate ho sebetsa le tsona.


Empa ha makhetlo a liphatlalatso a ntse a eketseha, menyetla ea ho ba le tšusumetso e mpe ho ts'eptjoang kapa boiphihlelo ba mosebelisi le eona ea eketseha. Ke ka lebaka leo ho leng bohlokoa hore lihlopha tsa ts'ebetso le tsa DevOps li thehe mekhoa le ho laola maano a phepelo ka tsela e fokotsang kotsi ho sehlahisoa le basebelisi. (O ka ithuta ho eketsehileng ka CI/CD pipeline automation mona.)

Ka poso ena, re tla tšohla maano a fapaneng a phepelo ho Kubernetes, ho kenyeletsoa li-rolling deployments le mekhoa e tsoetseng pele joalo ka li-canary le liphapang tsa tsona.

Mekhoa ea ho tsamaisa

Ho na le mefuta e mengata e fapaneng ea maqheka ao u ka a sebelisang ho latela sepheo sa hau. Ka mohlala, ho ka 'na ha hlokahala hore u etse liphetoho tikolohong e itseng bakeng sa liteko tse ling, kapa ho sehlopha sa basebelisi/bareki, kapa u ka hloka ho etsa liteko tse fokolang tsa basebelisi pele u etsa karolo. setjhaba.

Rolling (ha butle-butle, "rola" thomello)

Ena ke leano le tloaelehileng la phepelo ho Kubernetes. Butle-butle, e le 'ngoe, e nkela li-pods sebaka ka mofuta oa khale oa ts'ebeliso ka li-pods ka mofuta o mocha - ntle le nako ea ho theoha ha sehlopha.

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Kubernetes o emetse ho fihlela li-pods tse ncha li se li loketse ho sebetsa (ho li hlahloba u sebelisa liteko tsa ho itokisa), pele o qala ho phutha tsa khale. Haeba bothata bo etsahala, ntlafatso ena ea rolling e ka hlakoloa ntle le ho emisa sehlopha sohle. Ho faele ea YAML e hlalosang mofuta oa phepelo, setšoantšo se secha se nkela setšoantšo sa khale sebaka:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: awesomeapp
    spec:
      containers:
        - name: awesomeapp
          image: imagerepo-user/awesomeapp:new
          ports:
            - containerPort: 8080

Litlhophiso tsa ntlafatso ea rollover li ka hlalosoa ho faele ea manifesto:

spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%  
  template:
  ...

Etsa bocha

Mofuteng ona o bonolo oa ho tsamaisoa, li-pods tsa khale li bolaoa hang-hang ebe li nkeloa sebaka ke tse ncha:

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Pontšo e tšoanang e shebahala tjena:

spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
  ...

Boputsoa/Botala (liphoofolo tse botala bo boputsoa)

Leano la ho romelloa ka botala bo boputsoa (ka linako tse ling hape bo bitsoa bofubelu / botšo) bo kenyelletsa ho tsamaisoa ka nako e le 'ngoe ha mefuta ea khale (e tala) le e ncha (e putsoa) ea kopo. Kamora ho romella liphetolelo ka bobeli, basebelisi ba kamehla ba khona ho fumana e tala, athe e putsoa e fumaneha bakeng sa sehlopha sa QA ho iketsetsa liteko ka ts'ebeletso e arohaneng kapa ho fetisa koung ka kotloloho:

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp-02
spec:
  template:
    metadata:
      labels:
        app: awesomeapp
        version: "02"

Kamora hore mofuta o moputsoa (o mocha) o lekoe mme tokollo ea eona e amohetsoe, ts'ebeletso e fetohela ho eona, 'me mofuta o motala (oa khale) oa phuthoa:

apiVersion: v1
kind: Service
metadata:
  name: awesomeapp
spec:
  selector:
    app: awesomeapp
    version: "02"
...

Canary (lisebelisoa tsa canary)

Ho phatlalatsoa ha Canary ho tšoana le ho phatlalatsoa ha botala bo boputsoa, ​​​​empa ho na le taolo le ts'ebeliso e betere tsoelo-pele katamelo ka kgato. Mofuta ona o kenyelletsa maano a 'maloa a fapaneng, ho kenyeletsoa ho qala "stealth" le tlhahlobo ea A/B.

Leano lena le sebelisoa ha ho hlokahala ho leka ts'ebetso e ncha, hangata ka morao ho ts'ebeliso. Ntho ea bohlokoa ea mokhoa ona ke ho theha li-server tse peli tse batlang li tšoana: e 'ngoe e sebeletsa hoo e batlang e le basebelisi bohle,' me e 'ngoe, e nang le mesebetsi e mecha, e sebeletsa sehlopha se senyenyane sa basebelisi, ka mor'a moo liphello tsa mosebetsi oa tsona li bapisoa. Haeba ntho e 'ngoe le e' ngoe e tsamaea ntle le liphoso, phetolelo e ncha e ntse e kenngoa butle-butle ho lisebelisoa tsohle tsa motheo.

Le ha leano lena le ka kengoa ts'ebetsong feela ho sebelisoa Kubernetes, ho nkela li-pods tsa khale sebaka ka tse ncha, ho bonolo ebile ho bonolo ho sebelisa mesh ea lits'ebeletso joalo ka Istio.

Mohlala, o kanna oa ba le lipontšo tse peli tse fapaneng ho Git: pontšo e tloaelehileng e nang le tag 0.1.0 le "canary manifest" e nang le tag 0.2.0. Ka ho fetola litekanyo ho Istio virtual gateway manifest, o ka laola kabo ea sephethephethe pakeng tsa lisebelisoa tsena tse peli:

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Bakeng sa tataiso ea mohato ka mohato ho kenya ts'ebetsong li-canary deployments ho sebelisa Istio, bona GitOps Workflows le Istio. (Hlokomela. fetolela.: Hape re fetoletse litaba tse mabapi le ho phatlalatsoa ha canary ho Istio mona.)

Canary Deployments e nang le Weaveworks Flagger

Flagger ea Weaveworks e o lumella ho laola ho phatlalatsoa ha canary ha bonolo le ka nepo.

Li-Flager li sebetsa le tsona. E sebelisa Istio kapa AWS App Mesh ho tsamaisa le ho fetola sephethephethe, le metrics ea Prometheus ho sekaseka liphetho. Ntle le moo, tlhahlobo ea li-canary deployments e ka tlatselletsoa ka li-webhooks ho etsa liteko tsa ho amohela, liteko tsa mojaro, le mefuta efe kapa efe ea licheke.

E ipapisitse le phano ea Kubernetes, 'me, ha ho hlokahala, ho lekanya li-pods (HPA), ha ho hlokahala, Flagger e theha lihlopha tsa lintho (li-deployments tsa Kubernetes, lits'ebeletso tsa ClusterIP le lits'ebeletso tse fumanehang tsa Istio kapa App Mesh) ho sekaseka le ho kenya tšebetsong phepelo ea li-canary:

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Ho kenya tshebetsong loop ya taolo (control loop),Flagger butle-butle e fetola sephethephethe ho seva sa canary, ha ka nako e le 'ngoe e lekanya metrics ea bohlokoa ea ts'ebetso joalo ka peresente ea likopo tse atlehileng tsa HTTP, nako e tloaelehileng ea kopo, le bophelo bo botle ba pod. Ho ipapisitsoe le tlhahlobo ea KPI (Key Performance Indicators), canary e ka hola kapa ea putlama mme liphetho tsa tlhahlobo li hatisoa ho Slack. Tlhaloso le pontšo ea ts'ebetso ena li ka fumanoa boitsebisong Phano e Tsoelang Pele ea App Mesh.

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Lisebelisoa tse lefifi (tse patiloeng) kapa tsa A/B

Ho tsamaisoa ha Stealth ke phapang e 'ngoe ea leano la canary (eo, ka tsela, Flagger e ka sebetsang le eona). Phapang pakeng tsa li-stealth le canary deployments ke hore stealth deployments sebetsana le frontend ho e-na le backend joaloka deployments canary.

Lebitso le leng la lisebelisoa tsena ke tlhahlobo ea A/B. Sebakeng sa ho etsa hore karolo e ncha e fumanehe ho basebelisi bohle, e fuoa karolo e lekanyelitsoeng feela ea bona. Ka tloaelo, basebelisi bana ha ba tsebe hore ke bahlahlobi ba pele (ka hona lentsoe "stealth deployment").

Ho sebelisa li-switches tse sebetsang (toggle ea sebopeho) le lisebelisoa tse ling, u ka hlokomela hore na basebelisi ba sebelisana joang le tšobotsi e ncha, hore na ba sebelisana le eona, kapa hore na ba fumana sebopeho se secha sa mosebelisi se ferekanya, le mefuta e meng ea metrics.

Mekhoa ea phepelo ho Kubernetes: ho thetheha, ho etsa bocha, boputsoa / botala, canary, lefifi (tlhahlobo ea A / B)

Melaetsa le lisebelisoa tsa A/B

Ntle le ho tsamaisa boima ba 'mele, Flagger e ka tsamaisa sephethephethe ho ea ho seva sa canary ho ipapisitse le li-parameter tsa HTTP. Tekong ea A/B, u ka sebelisa lihlooho tsa HTTP kapa li-cookies ho shebisa karolo e itseng ea basebelisi. Sena se sebetsa ka ho khetheha molemong oa likopo tse ka pele tse hlokang hore nako e tlamelle seva (kopano ea nako). Lintlha tse ling li ka fumanoa litokomaneng tsa Flagger.

Mongoli o fana ka teboho Stefan Prodan, Moenjiniere oa Weaveworks (le moetsi oa Flagger), bakeng sa mekhoa ena eohle e tsotehang ea ho romela.

PS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso