Manatua. fa'aliliu.: Vaega muamua O lenei fa'asologa na tu'ufa'atasia i le fa'ailoaina o agava'a Istio ma fa'aalia i latou i le fa'atinoga. O le taimi nei o le a tatou talanoa e uiga i vaega sili atu ona faigata o le faʻatulagaina ma le faʻaogaina o lenei mesh auaunaga, aemaise lava, e uiga i le faʻaogaina lelei o le faʻaogaina o auala ma le pulega o fefaʻatauaiga.
Matou te faamanatu atu foi ia te oe o le tusiga e faʻaogaina faʻasalalauga (faʻaaliga mo Kubernetes ma Istio) mai le fale teu oloa. istio-pule.
Pulega o Ta'avale
Faatasi ai ma Istio, o loʻo faʻaalia avanoa fou i le fuifui e tuʻuina atu:
Talosagaina ole talosaga: fa'ata'ita'iina o canary, su'ega A/B;
Paleni uta: faigofie ma tumau, faʻavae i luga o faʻailoga;
Toe faʻaleleia pe a pa'ū: taimi malolo, toe taumafai, motusia matagaluega;
Fa'aofi fa'aletonu: fa'atuai, tu'u talosaga, ma isi.
Aʻo faʻaauau pea le tusiga, o nei agavaʻa o le a faʻaalia i le faʻaaogaina o le talosaga filifilia e fai ma faʻataʻitaʻiga ma o le a faʻalauiloa manatu fou i luga o le ala. O le manatu muamua faapea o le a DestinationRules(i.e. tulafono e uiga i le tagata e mauaina le felauaiga/managa - approx. transl.), fa'atasi ai ma le fesoasoani lea matou te fa'agaoioia ai su'ega A/B.
Su'ega A/B: DestinationRules i le fa'atinoga
O su'ega A/B e fa'aaogaina i mataupu e lua fa'aliliuga o se talosaga (e masani lava e ese le va'aiga) ma e le o 100% matou mautinoa po'o fea o le a fa'aleleia ai le poto masani o tagata fa'aoga. O le mea lea, matou te faʻatautaia faʻasologa e lua i le taimi e tasi ma aoina fua.
Ina ia faʻapipiʻi le lomiga lona lua o le pito i luma, manaʻomia mo le faʻaalia o suʻega A / B, faʻataʻitaʻi le poloaiga lenei:
$ kubectl apply -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions/sa-frontend-green created
O le faʻaaliga faʻapipiʻi mo le lanu meamata e ese i nofoaga e lua:
O le ata e fa'avae i se isi fa'ailoga - istio-green,
Pods ei ai se igoa version: green.
Talu ai o lo'o i ai le fa'ailoga o fa'asalalauga uma e lua app: sa-frontend,talosaga e fa'asolo e le auaunaga fa'apitoa sa-external-services mo le auaunaga sa-frontend, o le a toe faʻafeiloaʻi i ona tulaga uma ma o le uta o le a tufatufa atu i round-robin algorithm, lea o le a taʻitaʻia ai le tulaga nei:
E lei maua faila na talosagaina
E le'i maua nei faila ona e ese le igoa i fa'aliliuga eseese o le talosaga. Sei o tatou mautinoa o lenei:
O lona uiga o lena index.html, talosagaina se tasi o faʻamatalaga o faila faʻamau, e mafai ona tuʻuina atu e le paleni uta i pods o loʻo i ai se faʻamatalaga ese, lea, mo mafuaaga manino, e le o iai ia faila. O le mea lea, ina ia mafai ona galue le talosaga, e tatau ona tatou setiina se tapulaʻa: "o le fa'asologa lava lea e tasi o le talosaga na tu'uina atu i le index.html e tatau ona tu'uina atu talosaga mulimuli ane".
O le a tatou o'o i ai ma le fa'atatauina o uta fa'atatau i hash (Tausau Hash Loadbalancing)... I lenei tulaga o talosaga mai le tagata fa'atau e tasi e lafo i le fa'ata'ita'iga pito i tua, lea o lo'o fa'aogaina ai se mea totino - mo se fa'ata'ita'iga, se ulutala HTTP. Fa'atinoina ile fa'aogaina ole DestinationRules.
Tulafono Fa'asinomaga
Mavae Au'aunaga Fa'apitoa auina atu se talosaga i le au'aunaga mana'omia, e fa'aaoga ai DestinationRules e mafai ona matou fa'amalamalamaina faiga fa'avae o le a fa'aogaina i felauaiga fa'atatau mo fa'ata'ita'iga o lenei auaunaga:
Pulea o feoaiga ma punaoa a Istio
mataʻi: O le aʻafiaga o punaoa a Istio i luga o fefaʻatauaiga o fesoʻotaʻiga o loʻo tuʻuina atu iinei i se auala e faigofie ona malamalama i ai. Ina ia saʻo, o le faʻaiʻuga o le a le mea e tuʻuina atu ai le talosaga e faia e le Avefeʻau i le Ingress Gateway ua faʻatulagaina i le CRD.
Fa'atasi ai ma Tulafono Fa'asinomaga, e mafai ona matou fa'atulagaina le paleni o uta e fa'aoga ai fa'aupuga faifaipea ma fa'amautinoa e tali atu le fa'ata'ita'iga lava lea i le tagata lava e tasi. O le faʻatulagaga o loʻo i lalo e mafai ai ona e ausia lenei mea (destinationrule-sa-frontend.yaml):
mataʻi: Ina ia faʻaopoopo tulaga taua i le ulutala ma faʻataʻitaʻi saʻo iʻuga i le browser, e mafai ona e faʻaogaina lenei faaopoopoga i Chrome (po o ma lenei mo Firefox - tusa. fa'aliliu.).
I se tulaga lautele, DestinationRules e sili atu le gafatia i le vaega o le paleni o uta - siaki mo faʻamatalaga i totonu pepa aloaia.
Aʻo leʻi suʻesuʻeina atili le VirtualService, seʻi o tatou tape le "meamata lanumeamata" o le talosaga ma le tulafono faʻatonuga o auala e ala i le faʻatinoina o tulafono nei:
Ataata (“talipupuni”) po'o Fa'ata (“faataata”) faʻaaogaina i mataupu matou te manaʻo e suʻe se suiga i le gaosiga e aunoa ma le afaina ai o tagata faʻaoga: e faia lenei mea, matou te faʻaluaina ("faʻata") talosaga i se faʻataʻitaʻiga lona lua lea na faia ai suiga manaʻomia, ma vaʻai i taunuuga. I se faaupuga faigofie, o le taimi lea e filifilia ai e lau paaga le mataupu sili ona taua ma faia se talosaga toso i foliga o se faaputuga tele o palapala e le mafai e se tasi ona toe iloiloina.
Ina ia faʻataʻitaʻiina lenei faʻataʻitaʻiga i le gaioiga, seʻi o tatou faia se faʻataʻitaʻiga lona lua o le SA-Logic ma faʻamaʻi (buggy) e ala i le faʻatinoina o le poloaiga lenei:
$ kubectl apply -f resource-manifests/kube/shadowing/sa-logic-service-buggy.yaml
deployment.extensions/sa-logic-buggy created
Ma o lenei seʻi o tatou faʻataʻitaʻiina le faʻatonuga e faʻamautinoa ai o taimi uma ma app=sa-logic E iai fo'i a latou fa'ailoga ma fa'aliliuga tutusa:
tautua sa-logic taula'i pods ma se fa'ailoga app=sa-logic, o lea o talosaga uma o le a tufatufa atu i taimi uma:
... ae matou te mananaʻo ia tuʻuina atu talosaga i v1 faʻataʻitaʻiga ma faʻaalia i v2 taimi:
O le a matou ausia lenei mea e ala i le VirtualService faʻatasi ma DestinationRule, lea o le a fuafua ai tulafono faʻavae ma auala o le VirtualService i se vaega faʻapitoa.
Fa'amatalaina o vaega laiti i Tulafono Fa'asinomaga
talimalo (host) o lo'o fa'amatalaina o lenei tulafono e fa'atatau i na'o mataupu pe a alu le auala i le tautua sa-logic;
Suafa (name) o vaega laiti e fa'aaogaina pe a fa'asolo atu i fa'ata'ita'iga;
Fa'ailoga (label) o lo'o fa'amatalaina ai pa'aga autu-taua e tatau ona fa'atusaina fa'ata'ita'iga e avea ma vaega o le vaega.
Fa'aoga le fa'atonuga i le fa'atonuga lea:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-destinationrule.yaml
destinationrule.networking.istio.io/sa-logic created
I le taimi nei ua faʻamalamalamaina vaega laiti, e mafai ona tatou faʻagasolo ma faʻapipiʻi le VirtualService e faʻaoga tulafono i talosaga i sa-logic ina ia latou:
Leai se faʻamatalaga e manaʻomia iinei, seʻi o tatou vaʻai i le gaioiga:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-shadowing-vs.yaml
virtualservice.networking.istio.io/sa-logic created
Sei o tatou faʻaopoopo le uta e ala i le valaʻau i le poloaiga lenei:
$ while true; do curl -v http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
Seʻi o tatou vaʻavaʻai i taunuʻuga i Grafana, lea e mafai ai ona e vaʻaia o le faʻasologa ma bugs (buggy) i'u i le toilalo mo le ~ 60% o talosaga, ae leai se tasi o nei toilalo e aafia ai tagata fa'au'uga a'o tali atu i latou e se auaunaga fa'aauau.
Tali manuia o ituaiga eseese o le auaunaga sa-logic
O iinei na matou vaʻai muamua ai pe faʻapefea ona faʻaogaina le VirtualService i Avega oa matou auaunaga: o afea sa-web-app faia se talosaga i sa-logic, e ui atu i le sidecar Envoy, lea - e ala i le VirtualService - ua faʻatulagaina e faʻafeiloaʻi le talosaga i le v1 subset ma faʻata le talosaga i le v2 subset o le auaunaga. sa-logic.
Ou te iloa, atonu ua uma ona e manatu o le Virtual Services e faigofie. I le isi vaega, o le a tatou faʻalauteleina i lena mea e ala i le faʻapea e matua lelei lava.
Fa'aliga Canary
Canary Deployment o le faagasologa o le taʻavaleina o se faʻamatalaga fou o se talosaga i se numera toʻaitiiti o tagata faʻaoga. E faʻaaogaina e faʻamautinoa ai e leai ni faʻafitauli i le faʻamalolo ma naʻo le maeʻa ai, ua uma ona mautinoa i lona tulaga (faʻasaʻoloto), tufatufa atu i isi tagata faʻaoga.оto'atele le aofia.
Ina ia faʻaalia le taʻavale canary, o le a matou faʻaauau pea ona galulue ma se vaega itiiti buggy у sa-logic.
Aua neʻi o tatou faʻaumatia le taimi i luga o mea laiti ma lafo vave le 20% o tagata faʻaoga i le faʻasologa ma bugs (o le a fai ma sui o la tatou canary rollout), ma le 80% totoe i le auaunaga masani. Ina ia faia lenei mea, faʻaaoga le VirtualService (sa-logic-subsets-canary-vs.yaml):
... ma o le a vave ona tatou iloa o nisi o talosaga e oʻo atu ai i le toilalo:
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}'
--silent -w "Time: %{time_total}s t Status: %{http_code}n"
-o /dev/null; sleep .1; done
Time: 0.153075s Status: 200
Time: 0.137581s Status: 200
Time: 0.139345s Status: 200
Time: 30.291806s Status: 500
VirtualServices e mafai ai ona fa'asolo atu canary: I lenei tulaga, ua matou fa'aititia le a'afiaga o fa'afitauli i le 20% o tagata fa'aoga. Matagofie! I le taimi nei, i tulaga uma pe a tatou le mautinoa a tatou code (i se isi faaupuga - i taimi uma ...), e mafai ona tatou faʻaogaina faʻata ma canary rollouts.
Taimi ma toe taumafai
Ae e le iu i taimi uma ia bug i le code. I le lisi mai "8 Faʻamatalaga sese e uiga i le tufatufaina atu o komepiuta"O le mea muamua o le talitonuga sese e faapea" o le upega tafaʻilagi e faʻatuatuaina. O le mea moni o le upega tafailagi lē fa'atuatuaina, ma o le mafua'aga lea matou te mana'omia ai taimi fa'agata (taimi taimi) ma toe taumafai (toe taumafai).
Mo faʻataʻitaʻiga o le a matou faʻaauau pea ona faʻaogaina le faʻafitauli tutusa sa-logic (buggy), ma o le a matou faʻataʻitaʻiina le le faʻamaoni o le fesoʻotaʻiga ma faʻalavelave faʻafuaseʻi.
Tu'u atu la matou 'au'aunaga fa'atasi ma bugs e maua le 1/3 avanoa e umi tele e tali mai ai, o le 1/3 avanoa e fa'ai'u ai i se Fa'aletonu i totonu o le Server, ma le 1/3 avanoa e toe fa'afo'i manuia ai le itulau.
Ina ia faʻaitiitia le aʻafiaga o ia faʻafitauli ma faʻaleleia le olaga mo tagata faʻaoga, e mafai ona tatou:
fa'aopoopo se taimi fa'agata pe afai e umi atu le tautua nai lo le 8 sekone e tali mai ai,
O le taimi fa'agata mo le talosaga ua seti i le 8 sekone;
O talosaga e toe fa'a 3 taimi;
Ma o taumafaiga taitasi e manatu e le manuia pe a sili atu le taimi tali i le 3 sekone.
O se faʻataʻitaʻiga lea aua e le tatau ona faʻatali le tagata faʻaoga e sili atu i le 8 sekone ma o le a matou faia ni taumafaiga fou se tolu e maua ai se tali i le tulaga o le toilalo, faʻateleina le avanoa o se tali manuia.
Fa'aoga le fa'afouga fa'afouina i le fa'atonuga lea:
Ma siaki i le Grafana kalafi o le numera o tali manuia ua faateleina i luga:
Fa'alelei i fuainumera tali manuia pe a mae'a fa'aopoopo taimi fa'agata ma toe taumafai
A'o le'i agai atu i le isi vaega (po'o se mea, i le isi vaega o le tusiga, aua i lenei mea o le a le toe faia ni fa'ata'ita'iga fa'atino - approx. transl.), tape sa-logic-buggy ma VirtualService e ala i le faʻatinoina o tulafono nei:
O loʻo matou talanoa e uiga i ni faʻataʻitaʻiga taua se lua i le faʻataʻitaʻiga microservice e mafai ai ona e ausia le toe faʻaleleia o oe lava (faamaloloina o ia lava) auaunaga.
Faʻasalalau Faʻasalalau("fa'ava'ava'ava'a") fa'aaoga e fa'amuta ai talosaga e o'o mai i se fa'ata'ita'iga o se au'aunaga e manatu e le'o lelei ma toe fa'afo'i a'o talosaga a le tagata o tausia e toe fa'afo'i atu i tulaga lelei o lena auaunaga (lea e fa'ateleina ai le pasene o tali manuia). (Manatua: E mafai ona maua se faʻamatalaga auiliili o le mamanu, mo se faʻataʻitaʻiga, iinei.)
Uiga tele("vaega") fa'ate'aina fa'aletonu auaunaga mai le a'afiaina o le faiga atoa. Mo se fa'ata'ita'iga, ua motusia le Auaunaga B ma ua tu'uina atu e le isi au'aunaga (le tagata fa'atau a le Auaunaga B) se talosaga i le Auaunaga B, ma mafua ai ona fa'aumatia lona filo ma ua le mafai ai ona tautuaina isi talosaga (tusa lava pe le'o mai le Auaunaga B). (Manatua: E mafai ona maua se faʻamatalaga auiliili o le mamanu, mo se faʻataʻitaʻiga, iinei.)
O le a ou aveese faʻamatalaga faʻatinoga o nei mamanu aua e faigofie ona maua i totonu pepa aloaia, ma ou te manaʻo foʻi e faʻaalia le faʻamaoni ma le faʻatagaina, lea o le a talanoaina i le isi vaega o le tusiga.