Zindikirani kumasulira: Ndemanga iyi yochokera ku Weaveworks ikuwonetsa njira zodziwika bwino zotulutsira mapulogalamu ndikuwonetsa momwe zotsogola kwambiri zitha kukhazikitsidwa pogwiritsa ntchito Kubernetes Flagger. Linalembedwa m’chinenero chosavuta kumva ndipo lili ndi zithunzi zimene zimathandiza ngakhale akatswiri ongoyamba kumene kumvetsa nkhaniyi.

Chithunzicho chatengedwa kuchokera njira zotulutsira zomwe zidapangidwa mu Container Solutions
Chimodzi mwazovuta zazikulu pakupanga mapulogalamu amtundu wamtambo lero ndikufulumizitsa kutumiza. Mu njira ya ma microservices, omanga akugwira kale ntchito ndi kupanga ma modular modular, kulola magulu osiyanasiyana kulemba nthawi imodzi ndikusintha pulogalamuyo.
Kutumiza kwachidule komanso pafupipafupi kumakhala ndi zotsatirazi:
- Nthawi yopita kumsika yachepetsedwa.
- Zatsopano zimafika kwa ogwiritsa ntchito mwachangu.
- Ndemanga za ogwiritsa ntchito zimafika gulu lachitukuko mwachangu. Izi zikutanthauza kuti gulu likhoza kuwonjezera zina ndi kukonza zinthu mwachangu.
- Makhalidwe a Madivelopa amawonjezeka: zambiri zachitukuko ndizosangalatsa kugwira nazo ntchito.
Koma kuchuluka kwa zotulutsa kumachulukirachulukira, mwayi wokhudza kudalirika kwa pulogalamuyo kapena zomwe ogwiritsa ntchito amakula umachulukiranso. Ichi ndichifukwa chake ndikofunikira kuti magwiridwe antchito ndi magulu a DevOps apange njira ndikuwongolera njira zotumizira m'njira zomwe zimachepetsa chiopsezo kwa malonda ndi ogwiritsa ntchito. (Mutha kuphunzira zambiri za CI/CD mapaipi automation .)
Mu positi iyi, tikambirana njira zingapo zotumizira anthu ku Kubernetes, kuphatikiza ma rolling deployments ndi njira zapamwamba kwambiri monga kutulutsa kwa canary ndi kusiyanasiyana kwawo.
Njira zotumizira anthu
Pali mitundu ingapo ya njira zotumizira zomwe mungagwiritse ntchito kutengera cholinga chanu. Mwachitsanzo, mungafunike kusintha malo ena kuti mupitirize kuyesa, kapena gulu la anthu/makasitomala, kapena mungafunikire kuyesa pang'ono musanapange gawo. anthu onse.
Rolling (pang'onopang'ono, "kugudubuza" kutumiza)
Iyi ndiye njira yokhazikika yotumizira ku Kubernetes. Pang'onopang'ono, imodzi ndi imodzi, imalowa m'malo mwa ma pod ndi mtundu wakale wa pulogalamuyo ndi ma pod ndi mtundu watsopano - wopanda nthawi yopumira.

Kubernetes amadikirira mpaka ma pod atsopano akonzeka kugwira ntchito (kuwayang'ana pogwiritsa ntchito ), musanayambe kukulunga zakale. Ngati vuto lichitika, zosinthazi zitha kuthetsedwa popanda kuyimitsa gulu lonse. Mufayilo ya YAML yofotokoza mtundu wa kutumiza, chithunzi chatsopano chimalowa m'malo mwa chithunzi chakale:
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: 8080Zosintha za rollover zitha kufotokozedwa mufayilo yowonetsera:
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
...
Panganinso
Munjira yosavuta iyi, ma pod akale amaphedwa nthawi imodzi ndikusinthidwa ndi atsopano:

Chizindikiro chofananira chikuwoneka motere:
spec:
replicas: 3
strategy:
type: Recreate
template:
...Blue/Green (blue-green deployments)
Njira yotumizira buluu-yobiriwira (yomwe nthawi zina imatchedwanso yofiira/yakuda) imakhudzanso kutumizidwa nthawi imodzi yamitundu yakale (yobiriwira) ndi yatsopano (yabuluu). Pambuyo potumiza mitundu yonse iwiri, ogwiritsa ntchito nthawi zonse amatha kupeza yobiriwira, pomwe yabuluu imapezeka kuti gulu la QA lizitha kuyesa mayeso pogwiritsa ntchito ntchito ina kapena kutumiza doko mwachindunji:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp-02
spec:
template:
metadata:
labels:
app: awesomeapp
version: "02"Mtundu wa buluu (watsopano) utayesedwa ndipo kumasulidwa kwake kwavomerezedwa, ntchitoyo imasinthira, ndipo mtundu wobiriwira (wakale) umapindidwa:
apiVersion: v1
kind: Service
metadata:
name: awesomeapp
spec:
selector:
app: awesomeapp
version: "02"
...Canary (kutumiza kwa canary)
Kutulutsa kwa Canary ndi kofanana ndi kutulutsa kobiriwira kobiriwira, koma kuwongolera ndikugwiritsa ntchito bwino njira yapang'onopang'ono. Mtundu uwu umaphatikizapo njira zingapo zosiyanasiyana, kuphatikizapo kuyambika kwa "stealth" ndi kuyesa kwa A/B.
Njirayi imagwiritsidwa ntchito ngati pakufunika kuyesa zina zatsopano, nthawi zambiri kumbuyo kwa pulogalamuyi. Chofunika kwambiri cha njirayo ndi kupanga ma seva awiri omwe ali ofanana: mmodzi amatumikira pafupifupi onse ogwiritsa ntchito, ndipo winayo, ndi ntchito zatsopano, amangogwiritsa ntchito gulu laling'ono la ogwiritsa ntchito, pambuyo pake zotsatira za ntchito yawo zimafananizidwa. Ngati zonse zikuyenda popanda zolakwika, mtundu watsopanowo umatulutsidwa pang'onopang'ono kuzinthu zonse.
Ngakhale kuti njirayi ingagwiritsidwe ntchito pokhapokha pogwiritsa ntchito Kubernetes, m'malo mwa ma pod akale ndi atsopano, ndizosavuta komanso zosavuta kugwiritsa ntchito ma mesh ngati Istio.
Mwachitsanzo, mutha kukhala ndi mawonekedwe awiri osiyana mu Git: chiwonetsero chokhazikika chokhala ndi tag 0.1.0 ndi chiwonetsero cha canary chokhala ndi tag 0.2.0. Posintha zolemera mu Istio virtual gateway manifest, mutha kuwongolera kugawa kwa magalimoto pakati pa magawo awiriwa:

Kuti mupeze chiwongolero cha pang'onopang'ono pakukhazikitsa ma canary deployments pogwiritsa ntchito Istio, onani . (Zindikirani. transl.: Tinamasuliranso nkhani zokhudza kutulutsidwa kwa canary ku Istio .)
Kutumiza kwa Canary ndi Weaveworks Flagger
kumakupatsani mwayi wowongolera ma canary mosavuta komanso moyenera.
Flagger automates amagwira nawo ntchito. Imagwiritsa ntchito Istio kapena AWS App Mesh kuyendetsa ndikusintha magalimoto, ndi Prometheus metrics kusanthula zotsatira. Kuphatikiza apo, kuwunika kwa ma canary deployments kumatha kuwonjezeredwa ndi ma webhooks kuti achite mayeso ovomerezeka, mayeso olemetsa, ndi macheke ena aliwonse.
Kutengera kutumizidwa kwa Kubernetes ndipo, ngati kuli kofunikira, makulitsidwe opingasa (HPA), Flagger imapanga zinthu zingapo (Kubernetes deployments, ClusterIP services ndi Istio kapena App Mesh virtual services) kuti aunike ndikukhazikitsa ma canary:

Kukhazikitsa control loop (control loop),Flagger imasintha pang'onopang'ono kuchuluka kwa magalimoto kupita ku seva ya canary, kwinaku akuyesa ma metrics ofunikira monga kuchuluka kwa zopempha zopambana za HTTP, nthawi yofunsira, ndi thanzi la pod. Kutengera kusanthula kwa KPI (Key Performance Indicators), canary imakula kapena kugwa ndipo zotsatira za kusanthula zimasindikizidwa mu Slack. Kufotokozera ndi kuwonetsera kwa ndondomekoyi kungapezeke muzinthu .

Kutumiza kwamdima (kobisika) kapena A/B
Kutumiza kwa Stealth ndikusintha kwina kwa njira ya canary (yomwe, mwa njira, Flagger imatha kugwiranso ntchito). Kusiyanitsa pakati pa stealth ndi canary deployments ndikuti kutumizidwa kwachinsinsi kumachita ndi kutsogolo osati kumbuyo ngati ma canary deployments.
Dzina lina lazotumiza izi ndi kuyesa kwa A/B. M'malo mopangitsa kuti chatsopanocho chipezeke kwa onse ogwiritsa ntchito, chimaperekedwa kwa gawo lochepa chabe la iwo. Nthawi zambiri, ogwiritsa ntchitowa sadziwa kuti akuchita upainiya woyesa (motero mawu akuti "stealth deployment").
Kugwiritsa ntchito ma switches (kusintha mawonekedwe) ndi zida zina, mutha kuyang'anira momwe ogwiritsa ntchito amalumikizirana ndi mawonekedwe atsopano, kaya akugwira nawo ntchito, kapena amapeza mawonekedwe atsopanowa akusokoneza, ndi mitundu ina yazitsulo.

Kutumiza kwa Flagger ndi A/B
Kuphatikiza pamayendedwe otengera kulemera, Flagger imathanso kuyendetsa magalimoto kupita ku seva ya canary kutengera magawo a HTTP. Pakuyesa kwa A/B, mutha kugwiritsa ntchito mitu ya HTTP kapena makeke kulunjika gawo linalake la ogwiritsa ntchito. Izi ndizothandiza makamaka pankhani ya mapulogalamu akutsogolo omwe amafuna kumangirira gawo ku seva (mgwirizano wachigawo). Zambiri zitha kupezeka muzolemba za Flagger.
Wolembayo akuthokoza , Wopanga Weaveworks (komanso wopanga Flagger), pamachitidwe onse odabwitsa awa.
PS kuchokera kwa womasulira
Werenganinso pa blog yathu:
- «";
- «";
- «";
- «".
Source: www.habr.com
