Muga-muga sampeyan maca pérangan pisanan, ing ngendi kita nerangake kanthi ringkes apa penyebaran Canary lan nuduhake carane ngleksanakake nggunakake sumber daya Kubernetes standar.
Istio
Lan kita nganggep yen maca artikel iki sampeyan wis ngerti apa Istio. Yen ora, sampeyan bisa maca babagan iki kene.
Aplikasi kanggo tes
Saben pod ngemot rong wadhah: aplikasi kita lan istio-proxy.
Kita bakal nggunakake aplikasi test prasaja karo frontend-nginx lan backend python pods. Pod nginx mung bakal ngarahake saben panjalukan menyang pod backend lan bisa digunakake minangka proxy. Rincian bisa ditemokake ing yamls ing ngisor iki:
Yen sampeyan pengin ngetutake conto lan nggunakake aplikasi tes iki dhewe, waca proyek maca.
Panyebaran Awal
Nalika kita miwiti Deployment pisanan, kita weruh yen pods aplikasi kita mung duwe 2 wadhah, yaiku, sidecar Istio lagi wae dileksanakake:
Lan kita uga ndeleng Istio Gateway Loadbalancer ing namespace istio-system:
Generasi lalu lintas
Kita bakal nggunakake IP ing ngisor iki kanggo ngasilake lalu lintas sing bakal ditampa dening pod frontend lan diterusake menyang pod backend:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
Kita uga bakal nambah frontend.istio-test menyang file host kita.
Ndeleng Mesh liwat Kiali
We nginstal aplikasi test lan Istio bebarengan karo Tracing, Grafana, Prometheus lan Kiali (ndeleng ngisor kanggo rincian). proyek maca). Mula kita bisa nggunakake Kiali liwat:
istioctl dashboard kiali # admin:admin
Kiali nggambarake lalu lintas saiki liwat Mesh
Kaya sing bisa dideleng, 100% lalu lintas menyang layanan frontend, banjur menyang pod frontend kanthi label v1, amarga kita nggunakake proxy nginx prasaja sing ngarahake panjalukan menyang layanan backend, sing banjur ngarahake menyang pods backend. kanthi label v1.
Kiali kerjane apik karo Istio lan menehi solusi rendering Mesh kothak. Apik banget.
Penyebaran Canary
Backend kita wis duwe rong panyebaran k8, siji kanggo v1 lan siji kanggo v2. Saiki kita mung kudu ngandhani Istio supaya nerusake persentase panjaluk tartamtu menyang v2.
Langkah 1: 10%
Lan kabeh sing kudu kita lakoni yaiku nyetel bobot saka VirtualService ing istio.yaml:
Saiki penyebaran Canary bisa dianggep lengkap lan kabeh lalu lintas dialihake menyang v2:
Nguji Canary kanthi manual
Ayo kita saiki ngirim 2% kabeh panjalukan menyang v10 backend. Apa yen kita pengin nyoba v2 kanthi manual kanggo mesthekake yen kabeh bisa kaya sing dikarepake?
Kita bisa nambah aturan sing cocog khusus adhedhasar header HTTP:
Saiki nggunakake curl kita bisa meksa panjalukan v2 kanthi ngirim header:
Panjaluk tanpa header isih bakal didorong dening rasio 1/10:
Canary kanggo rong versi gumantung
Saiki kita bakal nimbang pilihan ing ngendi kita duwe versi v2 kanggo frontend lan backend. Kanggo loro, kita nemtokake manawa 10% lalu lintas kudu menyang v2:
Kita weruh manawa frontend v1 lan v2 loro lalu lintas maju kanthi rasio 1/10 kanggo backend v1 lan v2.
Apa yen kita kudu nerusake lalu lintas saka frontend-v2 mung menyang backend-v2 amarga ora kompatibel karo v1? Kanggo nindakake iki, kita bakal nyetel rasio 1/10 kanggo frontend, sing ngontrol lalu lintas menyang backend-v2 nggunakake negosiasi. sourceLabels :
В sisih pisanan Kita nindakake penyebaran Canary kanthi manual, uga nggunakake rong panyebaran k8. Ing kana kita ngontrol rasio panjalukan kanthi ngganti jumlah replika. Pendekatan iki bisa digunakake, nanging duwe cacat serius.
Istio ndadekake iku bisa kanggo nemtokake rasio panjalukan preduli saka nomer réplika. Iki tegese, contone, kita bisa nggunakake HPAs (Horizontal Pod Autoscalers) lan ora perlu dikonfigurasi miturut kahanan saiki penyebaran Canary.
Asile
Istio dianggo apik lan nggunakake bebarengan karo Kiali ndadekake kombinasi banget kuat. Sabanjure ing dhaptar kapentinganku yaiku nggabungake Spinnaker karo Istio kanggo otomatisasi lan analytics Canary.