Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Cherechedza. shandura Iyi yekufamba kubva kuWeaveworks inosuma nzira dzinonyanya kufarirwa dzekushandisa uye mashandisiro aungaite iwo epamberi neiyo Flagger Kubernetes opareta. Yakanyorwa nemutauro wakapfava uye ine madhayagiramu anooneka anobvumira kunyange mainjiniya ekutanga kunzwisisa nyaya yacho.

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)
Dhiagiramu yakatorwa kubva kumwe kuongorora nzira dzekuburitsa dzakagadzirwa muContainer Solutions

Rimwe rematambudziko makuru mukugadzira cloud native application nhasi kukurumidza kuendesa. Iine microservice maitiro, vanogadzira vari kutoshanda pamwe nekugadzira zvizere modular application, vachibvumira zvikwata zvakasiyana kunyora kodhi uye kuita shanduko kune application panguva imwe chete.

Kupfupika uye kwakawanda kutumirwa kune zvinotevera mabhenefiti:

  • Yakaderedzwa nguva yekutengesa.
  • Zvitsva zvinosvika kune vashandisi nekukurumidza.
  • Mhinduro yemushandisi inosvika kuchikwata chekusimudzira nekukurumidza. Izvi zvinoreva kuti timu inogona kuwedzera maficha uye kugadzirisa nyaya nekukurumidza.
  • Developer Morale inosimuka: zvimwe zvinhu mukusimudzira zvinonyanya kunakidza kushanda nazvo.


Asi sezvo kuwanda kwekuburitswa kunowedzera, mikana yekukanganisa kuvimbika kweapp kana ruzivo rwemushandisi inowedzerawo. Ndosaka zvakakosha kuti mashandiro uye zvikwata zveDevOps zvivake maitiro uye kugadzirisa nzira dzekutumira nenzira inoderedza njodzi kune chigadzirwa nevashandisi. (Kuti udzidze zvakawanda nezve otomatiki pombi yeCI/CD, ona pano.)

Mune ino positi, isu tichakurukura akasiyana Kubernetes nzira dzekuendesa, kusanganisira rolling deployments uye dzimwe nzira dzepamberi dzakadai se canary rollouts uye kusiyana kwavo.

Nzira dzekuendesa

Kune akatiwandei emhando dzakasiyana dzenzira dzekuendesa dzinogona kushandiswa zvichienderana nechinangwa. Semuenzaniso, ungangoda kuchinja kune imwe nharaunda kuti uwedzere kuyedzwa, kana kune subset yevashandisi/vatengi, kana ungangoda kuita mashoma bvunzo kune vashandisi usati wagadzira chimiro. paruzhinji.

Rolling (zvishoma nezvishoma, rolling deployment)

Iyi ndiyo yakajairwa nzira yekuendesa Kubernetes. Iyo zvishoma nezvishoma, imwe neimwe, inotsiva mapodhi neiyo yekare vhezheni yekushandisa nemapodhi neiyo nyowani vhezheni - pasina downtime yesumbu.

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Kubernetes anomirira mapodhi matsva kuti agadzirire kuenda (kuatarisa nawo kugadzirira miedzo) asati aenderera mberi nekupeta dziya dzekare. Kana dambudziko rikaitika, iyo rolling update inogona kubviswa pasina kumisa sumbu rese. Mune yekutumira mhando YAML faira, mufananidzo mutsva unotsiva wekare mufananidzo:

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

Iwo maparamendi eiyo rolling update anogona kutsanangurwa mune manifest file:

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

Gadzirazve (gadzira patsva)

Mune iyi yakapfava mhando yekuendesa, mapodhi ekare anouraiwa ese kamwechete uye anotsiviwa nemamwe matsva:

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Chiratidziro chinoenderana chinotaridzika seizvi:

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

Bhuruu/Green (blue-green deployments)

Iyo yebhuruu-yegirini yekuendesa zano (dzimwe nguva inonziwo tsvuku / dema, i.e. tsvuku-dema) inosanganisira kuendesa panguva imwe chete yekare (girinhi) uye itsva (yebhuruu) shanduro yekushandisa. Kana mavhezheni ese ari maviri abatwa, iyo yakasvibira inowanikwa kumushandisi mukuru, nepo yebhuruu iripo kuti timu yeQA iite otomatiki bvunzo kuburikidza nesevhisi yakaparadzana kana yakananga chiteshi kutumira:

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

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

Mushure mekunge iyo yebhuruu (itsva) vhezheni yaedzwa uye yakabvumidzwa kuti isunungurwe, sevhisi inochinjirwa kwairi, uye iyo girinhi (yekare) inoderedzwa:

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

Canary (Canary deployments)

Canary rollouts yakafanana neblue-green, asi inodzorwa zvirinani uye inoshandiswa kufambira mberi nhanho nhanho nzira. Nzira dzinoverengeka dzakasiyana dzinowira muchikamu ichi, kusanganisira kuvhurwa kwekuvanda uye kuongororwa kweA / B.

Iri zano rinoshandiswa kana kumwe kushanda kutsva kuchida kuyedzwa, kazhinji kuseri kweapp. Icho chakakosha chemaitiro ndechekugadzira maviri anenge akafanana maseva: imwe inoshandira vangangove vese vashandisi, uye imwe, iine maficha matsva, inoshumira chete boka diki revashandisi, mushure mezvo mhedzisiro yebasa ravo inofananidzwa. Kana zvese zvikafamba pasina zvikanganiso, iyo nyowani vhezheni inotenderedzwa zvishoma nezvishoma kune yese hupfumi.

Kunyangwe zano iri rinogona kuitwa chete uchishandisa Kubernetes, kutsiva mapodhi ekare neatsva, zviri nyore uye zviri nyore kushandisa sevhisi mesh seIstio.

Semuenzaniso, unogona kunge uine maviri akasiyana Git manifests: yenguva dzose ine 0.1.0 tag uye imwe canary ine 0.2.0 tag. Nekushandura huremu muIstio Virtual Gateway manifest, unogona kudzora kugoverwa kwetraffic pakati peaya maviri ekutumirwa:

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Nhanho-ne-nhanho gwara rekushandisa canary deployments neIstio inogona kuwanikwa mukati GitOps Workflows neIstio. (Cherechedza. transl.: Takashandurawo zvinyorwa nezve canary rolls muIstio pano.)

Canary deployments neWeaveworks Flagger

Weaveworks Flagger inobvumira zviri nyore uye zvinobudirira kutonga kwe canary rolls.

Flagger inogadzirisa kushanda navo. Inoshandisa Istio kana AWS App Mesh kufambisa uye kushandura traffic, uye Prometheus metrics kuongorora mhedzisiro. Uye zvakare, ongororo ye canary deployment inogona kuwedzeredzwa newebhooks yekuitisa bvunzo dzekugamuchira, bvunzo dzemutoro, uye chero mamwe marudzi echeki.

Zvichienderana nekutumirwa kweKubernetes uye, kana zvichidikanwa, scale-out pods (HPA), Mureza anogadzira seti yezvinhu (Kubernetes deployments, ClusterIP masevhisi uye Istio kana App Mesh virtual masevhisi) kuongorora nekushandisa canary deployments:

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Kushandisa control loop (control loop)Mureza zvishoma nezvishoma unochinja traffic kune canary server uchiyera makiyi ekuita metrics akadai seHTTP chikumbiro chekubudirira, avhareji yenguva yekukumbira, uye pod hutano. Kubva pakuongororwa kweKPIs (Key Performance Indicators), chikamu checanary chinokura kana kuderera, uye mhedzisiro yekuongorora inoburitswa kuSlack. Tsanangudzo uye kuratidzwa kwemaitiro aya zvinogona kuwanikwa mune zvinyorwa Kuendesa Kunofambira mberi kweApp Mesh.

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Yakasviba (yakavanzika) kana A/B deployments

Stealth deployment ndiyo imwe shanduko ye canary strategy (iyo, nenzira, Flagger inogona kushanda nayo). Musiyano uripo pakati pekubira uye canary deployments ndewekuti stealth deployments inobata nechekumberi kwete iyo yekumashure sezvinoita canary deployments.

Rimwe zita rekutumirwa uku nderokuyedzwa kweA/B. Panzvimbo yekuvhura mukana wechinhu chitsva kune vese vashandisi, chinopihwa kune chikamu chidiki chavo. Kazhinji, vashandisi ava havazive kuti mapiyona testers (saka izwi rekuti "kunyarara kutumirwa").

Nemashandisirwo emabasa (feature toggle) uye mamwe maturusi, unogona kutarisa kuti vashandisi vanodyidzana sei nechinhu chitsva, vangave vakapindwa muropa nacho kana kuwana iyo itsva mushandisi interface ichivhiringidza, uye mamwe marudzi emametric.

Kubernetes nzira dzekutumira: kutenderedza, kudzoreredza, bhuruu/girinhi, canary, rima (A/B kuyedza)

Flagger uye A/B Deployments

Pamusoro pekuremerwa nzira, Mureza anogona zvakare kufambisa traffic kune canary server zvichienderana neHTTP paramita. Kuedza kweA/B kunogona kushandisa misoro yeHTTP kana makuki kutungamira chikamu chakati chevashandisi. Izvi zvinonyanya kushanda mune zvemberi zvikumbiro zvinoda kuti musangano usungirwe kune server. (musangano wekubatana). Rumwe ruzivo runogona kuwanikwa muFlager zvinyorwa.

Munyori anotenda Stefan Prodan, injiniya weWeaveworks (uye musiki weFlager), kune ese aya anoshamisa ekuisa zvirongwa.

PS kubva kumushanduri

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg