Canary Deployment gamit ang Jenkins-X Istio Flagger
Pag-deploy sa Canary
Kami nanghinaut nga imong basahon unang bahin, diin among gipatin-aw sa daklit kung unsa ang mga pag-deploy sa Canary ug gipakita kung giunsa kini ipatuman gamit ang sukaranan nga mga kapanguhaan sa Kubernetes.
Istio
Ug among gihunahuna nga pinaagi sa pagbasa niini nga artikulo nahibal-an na nimo kung unsa ang Istio. Kung dili, nan mahimo nimong basahon ang bahin niini dinhi.
Aplikasyon alang sa mga pagsulay
Ang matag pod adunay duha ka sudlanan: among aplikasyon ug istio-proxy.
Maggamit kami usa ka yano nga aplikasyon sa pagsulay nga adunay frontend-nginx ug backend python pods. Ang nginx pod mag-redirect lang sa matag hangyo ngadto sa backend pod ug magtrabaho isip proxy. Ang mga detalye makita sa mga musunod nga yaml:
Pagpadagan sa aplikasyon sa pagsulay sa imong kaugalingon
Kung gusto nimo sundon ang akong panig-ingnan ug gamiton kini nga aplikasyon sa pagsulay sa imong kaugalingon, tan-awa proyekto readme.
Inisyal nga Deployment
Sa dihang gilusad namo ang unang Deployment, among nakita nga ang mga pod sa among aplikasyon adunay 2 lang ka container, nga mao, ang Istio sidecar bag-o lang gipatuman:
Ug makita usab namo ang Istio Gateway Loadbalancer sa namespace istio-system:
Pagmugna sa trapiko
Gamiton namo ang mosunod nga IP aron makamugna og trapiko nga madawat sa mga frontend pod ug ipasa ngadto sa mga backend pod:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
Dugangan usab namo frontend.istio-test sa among host file.
Tan-awa ang Mesh pinaagi sa Kiali
Gi-install namon ang aplikasyon sa pagsulay ug Istio kauban ang Pagsubay, Grafana, Prometheus ug Kiali (tan-awa sa ubos alang sa mga detalye). proyekto readme). Busa mahimo natong gamiton ang Kiali pinaagi sa:
istioctl dashboard kiali # admin:admin
Gitan-aw ni Kiali ang kasamtangan nga trapiko pinaagi sa Mesh
Sama sa atong makita, ang 100% sa trapiko moadto sa frontend nga serbisyo, dayon ngadto sa frontend pods nga adunay label nga v1, tungod kay naggamit kami og yano nga nginx proxy nga nag-redirect sa mga hangyo ngadto sa backend nga serbisyo, nga sa baylo nag-redirect kanila ngadto sa backend pods. nga adunay label v1.
Maayo ang pagtrabaho ni Kiali sa Istio ug naghatag usa ka boxed Mesh rendering solution. Lang dakung.
Pag-deploy sa Canary
Ang among backend aduna nay duha ka k8s deployment, usa para sa v1 ug usa para sa v2. Karon kinahanglan lang naton isulti si Istio nga ipasa ang usa ka piho nga porsyento sa mga hangyo sa v2.
Lakang 1: 10%
Ug ang kinahanglan namong buhaton mao ang pag-adjust sa gibug-aton sa VirtualService sa istio.yaml:
Karon ang pag-deploy sa Canary mahimong makonsiderar nga kompleto ug ang tanan nga trapiko gi-redirect sa v2:
Pagsulay sa Canary nga mano-mano
Ingnon ta nga nagpadala kami karon og 2% sa tanan nga mga hangyo sa v10 backend. Unsa kaha kung gusto namon nga mano-mano ang pagsulay sa v2 aron masiguro nga ang tanan molihok sama sa among gipaabut?
Mahimo kaming makadugang usa ka espesyal nga lagda sa pagpares base sa mga ulohan sa HTTP:
Karon gamit ang curl mahimo natong pugson ang usa ka v2 nga hangyo pinaagi sa pagpadala sa header:
Ang mga hangyo nga walaβy usa ka header gimaneho gihapon sa ratio nga 1/10:
Canary alang sa duha ka nagsalig nga bersyon
Karon atong tagdon ang kapilian diin kita adunay bersyon v2 alang sa frontend ug backend. Alang sa duha, among gipiho nga ang 10% sa trapiko kinahanglan moadto sa v2:
Nakita namon nga ang frontend v1 ug v2 pareho nga nagpasa sa trapiko sa ratio nga 1/10 sa backend v1 ug v2.
Unsa kaha kung kinahanglan namon nga ipasa ang trapiko gikan sa frontend-v2 hangtod sa backend-v2 tungod kay dili kini katugma sa v1? Aron mahimo kini, magbutang kami usa ka ratio nga 1/10 alang sa frontend, nga nagkontrol kung unsa ang makuha sa trapiko sa backend-v2 gamit ang negosasyon. sourceLabels :
Ingon usa ka sangputanan, makuha namon ang among kinahanglan:
Mga kalainan gikan sa manwal nga Canary approach
Π ang una nga bahin Gipahigayon namo ang Canary deployment nga mano-mano, gamit usab ang duha ka k8s deployment. Didto among gikontrol ang ratio sa mga hangyo pinaagi sa pagbag-o sa gidaghanon sa mga replika. Kini nga pamaagi molihok, apan adunay seryoso nga mga kakulangan.
Gipaposible sa Istio ang pagtino sa ratio sa mga hangyo bisan unsa pa ang gidaghanon sa mga replika. Kini nagpasabot, pananglitan, nga kita makagamit sa HPAs (Horizontal Pod Autoscalers) ug dili kinahanglan nga i-configure sumala sa kasamtangan nga kahimtang sa Canary deployment.
Ang resulta
Maayo ang pagtrabaho ni Istio ug ang paggamit niini kauban ang Kiali naghimo alang sa usa ka kusgan kaayo nga kombinasyon. Sunod sa akong listahan sa mga interes mao ang paghiusa sa Spinnaker uban sa Istio alang sa automation ug Canary analytics.