Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Fanamarihana fandikana: Ity topimaso avy amin'ny Weaveworks ity dia mampiditra ny paikadin'ny fandefasana fampiharana malaza indrindra ary mampiseho ny fomba azo ampiharina amin'ny fampiasana ny mpandraharaha Kubernetes Flagger. Nosoratana tamin'ny fiteny tsotra izy io ary misy kisarisary hita maso izay ahafahan'ny injeniera vaovao hahatakatra ilay olana.

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)
Nalaina avy amin'ny hevitra hafa paikady famoahana natao tao amin'ny Container Solutions

Iray amin'ireo fanamby lehibe indrindra amin'ny fampivoarana ny rindranasa cloud native ankehitriny ny fanafainganana ny fametrahana. Amin'ny fomba fiasa microservices, efa miara-miasa sy mamolavola rindranasa modular tanteraka ny mpamorona, ahafahan'ny ekipa samihafa manoratra kaody sy manova ny fampiharana.

Ny fametrahana fohy sy matetika kokoa dia manana tombony manaraka:

  • Mihena ny fotoana handehanan'ny tsena.
  • Ny endri-javatra vaovao dia mahatratra ny mpampiasa haingana kokoa.
  • Tonga haingana kokoa amin'ny ekipan'ny fampandrosoana ny valintenin'ny mpampiasa. Midika izany fa afaka manampy endri-javatra sy hamaha olana haingana kokoa ny ekipa.
  • Mitombo ny toe-tsain'ny mpamorona: mahafinaritra kokoa ny miasa miaraka amin'ireo endri-javatra maro kokoa amin'ny fampandrosoana.


Saingy rehefa mitombo ny fatran'ny famoahana dia mitombo ihany koa ny mety hisy fiantraikany ratsy amin'ny fahamendrehan'ny fampiharana na ny traikefan'ny mpampiasa. Izany no antony maha-zava-dehibe ny asa sy ny ekipa DevOps ny manangana dingana sy mitantana ny paikadin'ny fametrahana amin'ny fomba manamaivana ny risika amin'ny vokatra sy ny mpampiasa. (Afaka mianatra bebe kokoa momba ny automation CI/CD pipeline ianao eto.)

Ato amin'ity lahatsoratra ity, hiresaka momba ny paikadin'ny fampielezana isan-karazany ao amin'ny Kubernetes isika, ao anatin'izany ny fandefasana mihodinkodina sy ny fomba mandroso kokoa toy ny fandefasana canary sy ny fiovaovany.

Paikady fanapariahana

Misy karazany maro ny paikadin'ny fametrahana izay azonao ampiasaina arakaraka ny tanjonao. Ohatra, mety mila manao fanovana amin'ny tontolo iray ianao mba hanaovana fitiliana fanampiny, na amin'ny ampahany amin'ny mpampiasa/mpanjifa, na mety mila manao fitiliana mpampiasa voafetra ianao alohan'ny hanaovana endri-javatra. azo ampahibemaso.

Mihodinkodina (miandalana, β€œmihodinkodina”)

Ity no paikady fanapariahana mahazatra ao amin'ny Kubernetes. Izy io dia manolo tsikelikely ny pods amin'ny dikan-teny taloha amin'ny fampiharana miaraka amin'ny pods miaraka amin'ny dikan-teny vaovao - tsy misy fiatoana cluster.

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Miandry mandra-pahavitan'ny pods vaovao ny Kubernetes (manamarina azy ireo amin'ny fampiasana fitsapana fahavononana), alohan'ny hanombohan'ny fanodinkodinana ireo taloha. Raha misy olana, dia azo foanana ity fanavaozana mihodinkodina ity raha tsy manakana ny cluster manontolo. Ao amin'ny rakitra YAML mamaritra ny karazana fametrahana, ny sary vaovao dia manolo ny sary taloha:

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

Ny mari-pamantarana fanavaozana rollover dia azo faritana ao amin'ny fisie mibaribary:

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

mahary indray

Amin'ity karazana fametrahana tsotra indrindra ity, ny pods taloha dia vonoina indray mandeha ary soloina vaovao:

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Ny fanehoana mifanaraka aminy dia toa izao:

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

Manga/maitso (fametrahana manga-maitso)

Ny paikadin'ny fametrahana manga-maitso (indraindray antsoina koa hoe mena/mainty) dia ahitana ny fametrahana miaraka ny dikan-teny taloha (maitso) sy vaovao (manga) amin'ny fampiharana. Taorian'ny nandefasana ireo dikan-teny roa ireo, ny mpampiasa mahazatra dia afaka miditra amin'ny maitso, raha ny manga kosa dia azon'ny ekipan'ny QA hanamboatra fitsapana amin'ny alΓ lan'ny serivisy misaraka na fandefasana seranana mivantana:

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

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

Rehefa voasedra ny dikan-teny manga (vaovao) ary nekena ny famotsorana azy, dia mifindra any aminy ny serivisy, ary miforitra ny dikan-teny maitso (taloha):

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

Canary (fampielezana canary)

Ny rollouts canary dia mitovy amin'ny rollouts manga-maitso, saingy manana fifehezana sy fampiasana tsara kokoa mivoatra fomba fanao tsikelikely. Ity karazana ity dia misy paikady maro samihafa, ao anatin'izany ny fandefasana "mangalatra" sy ny fitsapana A/B.

Ity paikady ity dia ampiasaina rehefa ilaina ny manandrana fiasa vaovao, matetika any ambadiky ny fampiharana. Ny tena fototry ny fomba fiasa dia ny famoronana mpizara roa saika mitovy: ny iray dia manompo saika ny mpampiasa rehetra, ary ny iray hafa, miaraka amin'ny fiasa vaovao, dia tsy misy afa-tsy vondrona kely mpampiasa, ary avy eo dia ampitahaina ny vokatry ny asany. Raha mandeha tsy misy hadisoana ny zava-drehetra, dia alefa tsikelikely amin'ny fotodrafitrasa manontolo ny dikan-teny vaovao.

Na dia azo ampiharina manokana aza io paikady io amin'ny fampiasana Kubernetes, manolo ny pods taloha amin'ny vaovao, dia mora kokoa sy mora kokoa ny mampiasa mesh serivisy toa an'i Istio.

Ohatra, mety manana fisehoana roa samy hafa ianao ao amin'ny Git: fanehoana mahazatra misy marika 0.1.0 sy fanehoana canary misy marika 0.2.0. Amin'ny alΓ lan'ny fanovana ny lanjan'ny vavahady virtoaly Istio dia azonao atao ny mifehy ny fitsinjarana ny fifamoivoizana eo amin'ireto fametrahana roa ireto:

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Ho an'ny torolalana amin'ny dingana amin'ny fampiharana ny fametrahana canary amin'ny fampiasana Istio, jereo GitOps Workflows miaraka amin'i Istio. (Fanamarihana. transl.: Nadikanay ho amin'ny teny Istio ihany koa ny fitaovana momba ny fandefasana canary eto.)

Fametrahana Canary miaraka amin'ny Weaveworks Flagger

Weaveworks Flagger mamela anao hitantana mora foana sy amin'ny fomba mahomby ny fandefasana canary.

Ny Flagger dia miasa ho azy ireo. Mampiasa Istio na AWS App Mesh izy io mba hamitana sy hanova ny fifamoivoizana, ary ny metrika Prometheus hamakafaka ny valiny. Ho fanampin'izay, ny famakafakana ny fametrahana canary dia azo ampiana amin'ny webhooks hanaovana andrana fanekena, andrana entana ary karazana fisavana hafa.

Mifototra amin'ny fametrahana Kubernetes ary, raha ilaina, ny fanamafisam-peo marindrano (HPA), dia mamorona andian-javatra i Flagger (fametrahana Kubernetes, serivisy ClusterIP ary serivisy virtoaly Istio na App Mesh) mba hamakafaka sy hampihatra ny fametrahana canary:

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Fampiharana ny loop fanaraha-maso (fepetra fanaraha-maso), Mamindra tsikelikely ny fifamoivoizana mankany amin'ny mpizara canary i Flagger, sady mandrefy ireo metrika zava-bita lehibe toy ny isan-jaton'ny fangatahana HTTP mahomby, ny faharetan'ny fangatahana antonony ary ny fahasalaman'ny pod. Miorina amin'ny famakafakana KPI (Key Performance Indicators), na mitombo na mirodana ny canary ary navoaka ao amin'ny Slack ny valin'ny fanadihadiana. Ny famaritana sy ny fampisehoana an'io dingana io dia hita ao amin'ny fitaovana Fanaterana mandroso ho an'ny App Mesh.

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Fametrahana maizina (miafina) na A/B

Ny fanaparitahana an-tsokosoko dia fiovaovana hafa amin'ny paikadin'ny canary (izay, raha ny marina, ny Flagger dia afaka miasa ihany koa). Ny maha samy hafa ny stealth sy ny canary deployments dia ny stealth deployments dia mifandray amin'ny frontend fa tsy ny backend toy ny canary deployments.

Anarana hafa ho an'ireo fametrahana ireo dia ny fitiliana A/B. Raha tokony ho azon'ny mpampiasa rehetra ny endri-javatra vaovao, dia ampahany voafetra ihany no atolotra azy ireo. Amin'ny ankapobeny, ireo mpampiasa ireo dia tsy mahafantatra fa mpisava lalana mpanandrana izy ireo (noho izany ny teny hoe "fametrahana mangingina").

Mampiasa switch fonctionnaire (toggle endri-javatra) ary fitaovana hafa, azonao atao ny manara-maso ny fomba fifandraisan'ny mpampiasa amin'ilay endri-javatra vaovao, na mandray anjara amin'izany izy ireo, na mahita fa mampisafotofoto ny mpampiasa interface vaovao, sy ireo karazana metrika hafa.

Paikady fandefasana amin'ny Kubernetes: mihodinkodina, mamorona, manga/maitso, canary, maizina (fitsapana A/B)

Fametrahana Flagger sy A/B

Ho fanampin'ny zotra mifototra amin'ny lanja, ny Flagger dia afaka mandefa ny fifamoivoizana mankany amin'ny mpizara canary mifototra amin'ny mari-pamantarana HTTP. Amin'ny fitsapana A/B, azonao atao ny mampiasa lohapejy HTTP na cookies mba hikendry ampahany manokana amin'ny mpampiasa. Izany dia mahomby indrindra amin'ny trangan'ny rindranasa frontend izay mitaky session mamatotra ny server (firaisana fivoriana). Misy fampahalalana bebe kokoa azo jerena ao amin'ny antontan-taratasy Flagger.

Maneho fankasitrahana ny mpanoratra Stefan Prodan, Injeniera Weaveworks (sy mpamorona ny Flagger), ho an'ireo lamina fametrahana mahatalanjona rehetra ireo.

PS avy amin'ny mpandika teny

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment