Aâ cleachdadh Istio+Kiali gus cleachdadh Canary a chuir air bhog agus fhaicinn

Artaigilean san t-sreath seo
- (An artaigil seo)
- Cleachdadh Canary a 'cleachdadh Jenkins-X Istio Flagger
Cleachdadh Canary
Tha sinn an dòchas gun leugh thu , far an do mhĂŹnich sinn gu h-aithghearr dè a thâ ann an cleachdadh Canary agus sheall sinn mar a bu chòir an cur an gnĂŹomh aâ cleachdadh goireasan Ă bhaisteach Kubernetes.
Istio
Agus tha sinn aâ gabhail ris le bhith aâ leughadh an artaigil seo gu bheil fios agad mu thrĂ th dè a thâ ann an Istio. Mura h-eil, faodaidh tu leughadh mu dheidhinn .
Iarrtas airson deuchainnean

Tha dĂ shoitheach anns gach pod: an tagradh againn agus istio-proxy.
Cleachdaidh sinn tagradh deuchainn sĂŹmplidh le pods python frontend-nginx agus backend. Bidh am pod nginx dĂŹreach ag ath-stiĂšireadh gach iarrtas chun pod backend agus ag obair mar neach-ionaid. Gheibhear mion-fhiosrachadh anns na yamls a leanas:
Aâ ruith an aplacaid deuchainn thu fhèin
Ma tha thu airson mo eisimpleir a leantainn agus an tagradh deuchainn seo a chleachdadh thu fhèin, faic .
Cleachdadh Tòiseachaidh
Nuair a chuireas sinn aâ chiad cleachdadh air bhog, chĂŹ sinn nach eil ann am pods an tagraidh againn ach 2 shoitheach, is e sin, tha Istio sidecar dĂŹreach ga chuir an gnĂŹomh:

Agus chĂŹ sinn cuideachd Istio Gateway Loadbalancer anns an ainm-Ă ite istio-system:

Gineadh trafaic
Cleachdaidh sinn an IP a leanas gus trafaic a ghineadh a gheibh na pods aghaidh agus a chuir air adhart gu na pods backend:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
Cuiridh sinn cuideachd frontend.istio-test don fhaidhle aoigheachd againn.
Thoir sĂšil air mogal tro Kiali
Chuir sinn a-steach an tagradh deuchainn agus Istio còmhla ri Tracing, Grafana, Prometheus agus Kiali (faic gu h-Ïosal airson mion-fhiosrachadh). ). Mar sin is urrainn dhuinn Kiali a chleachdadh tro:
istioctl dashboard kiali # admin:admin

Bidh Kiali aâ faicinn trafaic gnĂ thach tro Mesh
Mar a chĂŹ sinn, bidh 100% den trafaic aâ dol chun t-seirbheis aghaidh, an uairsin gu na pods aghaidh le leubail v1, leis gu bheil sinn aâ cleachdadh proxy nginx sĂŹmplidh a bhios ag ath-stiĂšireadh iarrtasan chun t-seirbheis backend, a bhios e fhèin gan ath-stiĂšireadh gu na pods backend. le leubail v1.
Bidh Kiali ag obair gu math le Istio agus aâ toirt seachad fuasgladh tairgse bogsa mogal. DĂŹreach sgoinneil.
Cleachdadh Canary
Tha dĂ chleachdadh k8s air an backend againn mu thrĂ th, aon airson v1 agus aon airson v2. A-nis chan fheum sinn ach innse do Istio ceudad sònraichte de dhâ iarrtasan a chuir air adhart gu v2.
Ceum 1: 10%
Agus chan eil againn ach a bhith ag atharrachadh cuideam an t-Seirbheis Mas-fhĂŹor a-steach :
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
- match:
- {}
route:
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 90
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 10 
Tha sinn aâ faicinn gu bheil 10% de dhâiarrtasan gan ath-stiĂšireadh gu v2.
Ceum 2: 50%
Agus a-nis tha e gu leòr dÏreach airson à rdachadh gu 50%:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
...
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 50
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 50 
Ceum 3: 100%
A-nis faodar beachdachadh air cleachdadh Canary coileanta agus thèid an trafaic gu lèir ath-stiÚireadh gu v2:

Dèan deuchainn air Canary le là imh
Canaidh sinn gu bheil sinn a-nis aâ cur 2% de na h-iarrtasan uile gu backend v10. Dè ma tha sinn airson v2 a dhearbhadh le lĂ imh gus dèanamh cinnteach gu bheil a h-uile cĂ il ag obair mar a bha dĂšil againn?
Is urrainn dhuinn riaghailt maidsidh sònraichte a chuir ris stèidhichte air cinn HTTP:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
- match:
- headers:
canary:
exact: "canary-tester"
route:
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 100
- match:
- {}
route:
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 90
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 10A-nis aâ cleachdadh curl is urrainn dhuinn iarrtas v2 a sparradh le bhith aâ cur aâ chinn:
![]()
Bidh iarrtasan gun cheann-cinn fhathast air an stiĂšireadh leis aâ cho-mheas 1/10:

Canary airson dĂ dhreach eisimeileach
A-nis beachdaichidh sinn air an roghainn far a bheil dreach v2 againn airson an dà chuid aghaidh agus backend. Airson gach cuid, shònraich sinn gum bu chòir 10% den trafaic a dhol gu v2:

ChĂŹ sinn gu bheil frontend v1 agus v2 an dĂ chuid trafaic air adhart aig co-mheas de 1/10 gu backend v1 agus v2.
Dè nam feumadh sinn trafaic a chuir air adhart bho frontend-v2 a-mhĂ in gu backend-v2 leis nach eil e co-chòrdail ri v1? Gus seo a dhèanamh, suidhichidh sinn co-mheas 1/10 airson an aghaidh, a bhios aâ cumail smachd air na bhios trafaic aâ faighinn chun backend-v2 aâ cleachdadh co-rèiteachadh sourceLabels :
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
...
- match:
- sourceLabels:
app: frontend
version: v2
route:
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 100Mar thoradh air an sin, gheibh sinn na tha a dhĂŹth oirnn:

Eadar-dhealachaidhean bhon dòigh-obrach là imhe Canary
Đ a âchiad phĂ irt Rinn sinn cleachdadh Canary le lĂ imh, cuideachd aâ cleachdadh dĂ chleachdadh k8s. An sin rinn sinn smachd air co-mheas nan iarrtasan le bhith ag atharrachadh an Ă ireamh de mhac-samhail. Tha an dòigh-obrach seo ag obair, ach tha fĂŹor eas-bhuannachdan ann.
Tha Istio ga dhèanamh comasach co-mheas nan iarrtasan a dhearbhadh ge bith dè an Ă ireamh de mhac-samhail a thâ ann. Tha seo aâ ciallachadh, mar eisimpleir, gun urrainn dhuinn HPAn (Horizontal Pod Autoscalers) a chleachdadh agus nach fheum sinn a bhith air an rèiteachadh a rèir staid gnĂ thach cleachdadh Canary.
An toradh
Tha Istio ag obair gu math agus ga chleachdadh còmhla ri Kiali aâ dèanamh measgachadh fĂŹor chumhachdach. An ath rud air an liosta Ăšidhean agam tha a bhith aâ cothlamadh Spinnaker le Istio airson fèin-ghluasad agus anailisean Canary.
Source: www.habr.com
