కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

గమనిక అనువాదం: Weaveworks నుండి ఈ అవలోకనం అత్యంత ప్రజాదరణ పొందిన అప్లికేషన్ రోల్‌అవుట్ వ్యూహాలను పరిచయం చేస్తుంది మరియు Kubernetes Flagger ఆపరేటర్‌ని ఉపయోగించి అత్యంత అధునాతనమైన వాటిని ఎలా అమలు చేయవచ్చో చూపిస్తుంది. ఇది సరళమైన భాషలో వ్రాయబడింది మరియు అనుభవం లేని ఇంజనీర్లకు కూడా సమస్యను అర్థం చేసుకోవడానికి వీలు కల్పించే దృశ్య రేఖాచిత్రాలను కలిగి ఉంటుంది.

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)
రేఖాచిత్రం నుండి తీసుకోబడింది మరొక సమీక్ష కంటైనర్ సొల్యూషన్స్‌లో రూపొందించిన రోల్‌అవుట్ వ్యూహాలు

నేడు క్లౌడ్ స్థానిక అప్లికేషన్‌లను అభివృద్ధి చేయడంలో అతిపెద్ద సవాళ్లలో ఒకటి విస్తరణను వేగవంతం చేయడం. మైక్రోసర్వీసెస్ విధానంలో, డెవలపర్‌లు ఇప్పటికే పూర్తిగా మాడ్యులర్ అప్లికేషన్‌లతో పని చేస్తున్నారు మరియు డిజైన్ చేస్తున్నారు, వివిధ బృందాలు ఏకకాలంలో కోడ్‌ను వ్రాయడానికి మరియు అప్లికేషన్‌లో మార్పులు చేయడానికి అనుమతిస్తుంది.

తక్కువ మరియు మరింత తరచుగా విస్తరణలు క్రింది ప్రయోజనాలను కలిగి ఉంటాయి:

  • మార్కెట్‌కి వచ్చే సమయం తగ్గుతుంది.
  • కొత్త ఫీచర్లు యూజర్లకు వేగంగా చేరతాయి.
  • వినియోగదారు అభిప్రాయం అభివృద్ధి బృందానికి వేగంగా చేరుతుంది. దీని అర్థం బృందం ఫీచర్‌లను జోడించగలదు మరియు సమస్యలను మరింత త్వరగా పరిష్కరించగలదు.
  • డెవలపర్ నైతికత పెరుగుతుంది: డెవలప్‌మెంట్‌లోని మరిన్ని ఫీచర్‌లతో పని చేయడం మరింత సరదాగా ఉంటుంది.


కానీ విడుదలల ఫ్రీక్వెన్సీ పెరుగుతున్న కొద్దీ, అప్లికేషన్ యొక్క విశ్వసనీయత లేదా వినియోగదారు అనుభవాన్ని ప్రతికూలంగా ప్రభావితం చేసే అవకాశాలు కూడా పెరుగుతాయి. అందుకే ఉత్పత్తి మరియు వినియోగదారులకు ప్రమాదాన్ని తగ్గించే విధంగా ప్రక్రియలను రూపొందించడం మరియు విస్తరణ వ్యూహాలను నిర్వహించడం కార్యకలాపాలు మరియు DevOps బృందాలకు ముఖ్యమైనది. (మీరు CI/CD పైప్‌లైన్ ఆటోమేషన్ గురించి మరింత తెలుసుకోవచ్చు ఇక్కడ.)

ఈ పోస్ట్‌లో, మేము రోలింగ్ డిప్లాయ్‌మెంట్‌లు మరియు కానరీ రోల్‌అవుట్‌లు మరియు వాటి వైవిధ్యాలు వంటి మరింత అధునాతన పద్ధతులతో సహా కుబెర్నెట్స్‌లో వివిధ విస్తరణ వ్యూహాలను చర్చిస్తాము.

విస్తరణ వ్యూహాలు

మీ లక్ష్యాన్ని బట్టి మీరు ఉపయోగించగల అనేక రకాల విస్తరణ వ్యూహాలు ఉన్నాయి. ఉదాహరణకు, మీరు తదుపరి పరీక్ష కోసం నిర్దిష్ట వాతావరణంలో లేదా వినియోగదారులు/క్లయింట్‌ల ఉపసమితికి మార్పులు చేయాల్సి రావచ్చు లేదా ఫీచర్‌ను రూపొందించే ముందు మీరు పరిమిత వినియోగదారు పరీక్షను చేయాల్సి రావచ్చు. ప్రజా.

రోలింగ్ (క్రమంగా, "రోలింగ్" విస్తరణ)

ఇది కుబెర్నెట్స్‌లో ప్రామాణిక విస్తరణ వ్యూహం. ఇది క్రమంగా, ఒక్కొక్కటిగా, పాత వెర్షన్ అప్లికేషన్‌తో పాడ్‌లను కొత్త వెర్షన్‌తో పాడ్‌లతో భర్తీ చేస్తుంది - క్లస్టర్ డౌన్‌టైమ్ లేకుండా.

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

కొత్త పాడ్‌లు పని చేయడానికి సిద్ధంగా ఉండే వరకు కుబెర్నెటెస్ వేచి ఉంది (వాటిని ఉపయోగించి తనిఖీ చేస్తోంది సంసిద్ధత పరీక్షలు), మీరు పాత వాటిని చుట్టడం ప్రారంభించడానికి ముందు. సమస్య ఏర్పడితే, ఈ రోలింగ్ అప్‌డేట్ మొత్తం క్లస్టర్‌ను ఆపకుండానే నిలిపివేయబడుతుంది. విస్తరణ రకాన్ని వివరించే YAML ఫైల్‌లో, కొత్త చిత్రం పాత చిత్రాన్ని భర్తీ చేస్తుంది:

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

రోల్‌ఓవర్ అప్‌డేట్ పారామీటర్‌లను మానిఫెస్ట్ ఫైల్‌లో పేర్కొనవచ్చు:

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

పునఃసృష్టించు

ఈ సరళమైన విస్తరణలో, పాత పాడ్‌లు ఒకేసారి చంపబడతాయి మరియు కొత్త వాటితో భర్తీ చేయబడతాయి:

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

సంబంధిత మానిఫెస్ట్ ఇలా కనిపిస్తుంది:

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

నీలం/ఆకుపచ్చ (నీలం-ఆకుపచ్చ విస్తరణలు)

నీలం-ఆకుపచ్చ విస్తరణ వ్యూహం (కొన్నిసార్లు ఎరుపు/నలుపు అని కూడా పిలుస్తారు) అప్లికేషన్ యొక్క పాత (ఆకుపచ్చ) మరియు కొత్త (నీలం) వెర్షన్‌ల యొక్క ఏకకాల విస్తరణను కలిగి ఉంటుంది. రెండు వెర్షన్‌లను పోస్ట్ చేసిన తర్వాత, సాధారణ వినియోగదారులు ఆకుపచ్చ రంగుకు యాక్సెస్‌ను కలిగి ఉంటారు, అయితే QA బృందం ప్రత్యేక సేవ లేదా డైరెక్ట్ పోర్ట్ ఫార్వార్డింగ్ ద్వారా పరీక్షలను ఆటోమేట్ చేయడానికి నీలం రంగు అందుబాటులో ఉంటుంది:

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

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

నీలం (కొత్త) వెర్షన్ పరీక్షించబడిన తర్వాత మరియు దాని విడుదల ఆమోదించబడిన తర్వాత, సేవ దానికి మారుతుంది మరియు ఆకుపచ్చ (పాత) వెర్షన్ మడవబడుతుంది:

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

కానరీ (కానరీ విస్తరణలు)

కానరీ రోల్‌అవుట్‌లు బ్లూ-గ్రీన్ రోల్‌అవుట్‌ల మాదిరిగానే ఉంటాయి, కానీ మెరుగైన నియంత్రణ మరియు వినియోగాన్ని కలిగి ఉంటాయి ప్రగతిశీల దశల వారీ విధానం. ఈ రకం "స్టీల్త్" లాంచ్‌లు మరియు A/B టెస్టింగ్‌తో సహా అనేక విభిన్న వ్యూహాలను కలిగి ఉంటుంది.

సాధారణంగా అప్లికేషన్ యొక్క బ్యాకెండ్‌లో కొన్ని కొత్త కార్యాచరణలను ప్రయత్నించాల్సిన అవసరం ఉన్నప్పుడు ఈ వ్యూహం ఉపయోగించబడుతుంది. దాదాపు ఒకేలాంటి రెండు సర్వర్‌లను సృష్టించడం ఈ విధానం యొక్క సారాంశం: ఒకటి దాదాపు అన్ని వినియోగదారులకు సేవలు అందిస్తుంది, మరియు మరొకటి కొత్త ఫంక్షన్‌లతో వినియోగదారుల యొక్క చిన్న ఉప సమూహానికి మాత్రమే సేవలు అందిస్తుంది, ఆ తర్వాత వారి పని ఫలితాలు పోల్చబడతాయి. ప్రతిదీ లోపాలు లేకుండా జరిగితే, కొత్త వెర్షన్ క్రమంగా మొత్తం అవస్థాపనకు అందుబాటులోకి వస్తుంది.

ఈ వ్యూహాన్ని ప్రత్యేకంగా Kubernetes ఉపయోగించి అమలు చేయగలిగినప్పటికీ, పాత పాడ్‌లను కొత్త వాటితో భర్తీ చేయవచ్చు, Istio వంటి సర్వీస్ మెష్‌ను ఉపయోగించడం చాలా సౌకర్యవంతంగా మరియు సరళంగా ఉంటుంది.

ఉదాహరణకు, మీరు Gitలో రెండు వేర్వేరు మానిఫెస్ట్‌లను కలిగి ఉండవచ్చు: ట్యాగ్ 0.1.0తో సాధారణ మానిఫెస్ట్ మరియు 0.2.0 ట్యాగ్‌తో కానరీ మానిఫెస్ట్. ఇస్టియో వర్చువల్ గేట్‌వే మానిఫెస్ట్‌లో బరువులను మార్చడం ద్వారా, మీరు ఈ రెండు విస్తరణల మధ్య ట్రాఫిక్ పంపిణీని నియంత్రించవచ్చు:

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

ఇస్టియోను ఉపయోగించి కానరీ విస్తరణలను అమలు చేయడానికి దశల వారీ మార్గదర్శిని కోసం, చూడండి ఇస్టియోతో GitOps వర్క్‌ఫ్లోలు. (గమనిక. అనువాదం.: మేము కానరీ రోల్‌అవుట్‌ల గురించిన మెటీరియల్‌ని కూడా ఇస్టియోలోకి అనువదించాము ఇక్కడ.)

వీవ్‌వర్క్స్ ఫ్లాగర్‌తో కానరీ విస్తరణలు

వీవ్‌వర్క్స్ ఫ్లాగర్ కానరీ రోల్‌అవుట్‌లను సులభంగా మరియు సమర్థవంతంగా నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది.

ఫ్లాగర్ ఆటోమేట్‌లు వారితో పని చేస్తాయి. ఇది ట్రాఫిక్‌ను రూట్ చేయడానికి మరియు మార్చడానికి Istio లేదా AWS యాప్ మెష్‌ని ఉపయోగిస్తుంది మరియు ఫలితాలను విశ్లేషించడానికి ప్రోమేతియస్ మెట్రిక్‌లను ఉపయోగిస్తుంది. అదనంగా, అంగీకార పరీక్షలు, లోడ్ పరీక్షలు మరియు ఏవైనా ఇతర రకాల తనిఖీలను నిర్వహించడానికి కానరీ విస్తరణల విశ్లేషణ వెబ్‌హూక్స్‌తో అనుబంధంగా ఉంటుంది.

Kubernetes విస్తరణ మరియు అవసరమైతే, పాడ్‌ల క్షితిజ సమాంతర స్కేలింగ్ (HPA) ఆధారంగా, కానరీ విస్తరణలను విశ్లేషించడానికి మరియు అమలు చేయడానికి Flagger వస్తువుల సెట్‌లను (కుబెర్నెట్స్ విస్తరణలు, ClusterIP సేవలు మరియు Istio లేదా App Mesh వర్చువల్ సేవలు) సృష్టిస్తుంది:

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

నియంత్రణ లూప్‌ను అమలు చేస్తోంది (కంట్రోల్ లూప్),Flagger క్రమంగా ట్రాఫిక్‌ని కానరీ సర్వర్‌కి మారుస్తుంది, అదే సమయంలో విజయవంతమైన HTTP అభ్యర్థనల శాతం, సగటు అభ్యర్థన వ్యవధి మరియు పాడ్ ఆరోగ్యం వంటి కీలక పనితీరు కొలమానాలను కొలుస్తుంది. KPI (కీ పెర్ఫార్మెన్స్ ఇండికేటర్స్) విశ్లేషణ ఆధారంగా, కానరీ పెరుగుతుంది లేదా కూలిపోతుంది మరియు విశ్లేషణ ఫలితాలు స్లాక్‌లో ప్రచురించబడ్డాయి. ఈ ప్రక్రియ యొక్క వివరణ మరియు ప్రదర్శన పదార్థంలో చూడవచ్చు యాప్ మెష్ కోసం ప్రోగ్రెసివ్ డెలివరీ.

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

చీకటి (దాచిన) లేదా A/B విస్తరణలు

స్టెల్త్ విస్తరణ అనేది కానరీ వ్యూహం యొక్క మరొక వైవిధ్యం (దీని ద్వారా, ఫ్లాగర్ కూడా పని చేయవచ్చు). స్టీల్త్ మరియు కానరీ డిప్లాయ్‌మెంట్‌ల మధ్య వ్యత్యాసం ఏమిటంటే, స్టెల్త్ విస్తరణలు కానరీ డిప్లాయ్‌మెంట్‌ల వంటి బ్యాకెండ్‌తో కాకుండా ఫ్రంటెండ్‌తో వ్యవహరిస్తాయి.

ఈ విస్తరణలకు మరొక పేరు A/B పరీక్ష. కొత్త ఫీచర్‌ను వినియోగదారులందరికీ అందుబాటులో ఉంచడానికి బదులుగా, ఇది వారిలో పరిమిత భాగానికి మాత్రమే అందించబడుతుంది. సాధారణంగా, ఈ వినియోగదారులకు తాము పయనీరింగ్ టెస్టర్లని తెలియదు (అందుకే "స్టీల్త్ డిప్లాయ్‌మెంట్" అనే పదం).

కార్యాచరణ స్విచ్‌లను ఉపయోగించడం (ఫీచర్ టోగుల్) మరియు ఇతర సాధనాలు, వినియోగదారులు కొత్త ఫీచర్‌తో ఎలా పరస్పర చర్య చేస్తున్నారో, వారు దానితో నిమగ్నమై ఉన్నారా లేదా వారు కొత్త వినియోగదారు ఇంటర్‌ఫేస్ గందరగోళంగా ఉన్నారా లేదా ఇతర రకాల కొలమానాలను మీరు పర్యవేక్షించవచ్చు.

కుబెర్నెటెస్‌లో విస్తరణ వ్యూహాలు: రోలింగ్, రీక్రియేట్, బ్లూ/గ్రీన్, కానరీ, డార్క్ (A/B టెస్టింగ్)

ఫ్లాగర్ మరియు A/B విస్తరణలు

బరువు-ఆధారిత రూటింగ్‌తో పాటు, Flagger కూడా HTTP పారామితుల ఆధారంగా కానరీ సర్వర్‌కు ట్రాఫిక్‌ను రూట్ చేయవచ్చు. A/B టెస్టింగ్‌లో, మీరు నిర్దిష్ట వినియోగదారుల విభాగాన్ని రీటార్గెట్ చేయడానికి HTTP హెడర్‌లు లేదా కుక్కీలను ఉపయోగించవచ్చు. సర్వర్‌కు సెషన్ బైండింగ్ అవసరమయ్యే ఫ్రంటెండ్ అప్లికేషన్‌ల విషయంలో ఇది ప్రత్యేకంగా ప్రభావవంతంగా ఉంటుంది (సెషన్ అనుబంధం). Flagger డాక్యుమెంటేషన్‌లో మరింత సమాచారాన్ని కనుగొనవచ్చు.

రచయిత కృతజ్ఞతలు తెలియజేసారు స్టీఫన్ ప్రొడాన్, వీవ్‌వర్క్స్ ఇంజనీర్ (మరియు ఫ్లాగర్ సృష్టికర్త), ఈ అద్భుతమైన విస్తరణ నమూనాలన్నింటికీ.

అనువాదకుని నుండి PS

మా బ్లాగులో కూడా చదవండి:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి