Muga-muga sampeyan maca pérangan pisanan, ngendi kita sedhela nerangake apa Canary Deployments. Kita uga nuduhake carane ngleksanakake nggunakake sumber daya Kubernetes standar.
Argo Rollouts
Argo Rollouts minangka pengontrol penyebaran asli Kubernetes. Iki nyedhiyakake CRD (Definisi Sumber Daya Khusus) kanggo Kubernetes. Thanks kanggo iki, kita bisa nggunakake entitas anyar: Rollout, sing ngatur penyebaran biru-ijo lan kenari kanthi macem-macem opsi konfigurasi.
Argo Rollouts controller digunakake dening sumber adat Rollout, Ngidini strategi penyebaran tambahan kayata biru-ijo lan kenari kanggo Kubernetes. sumber daya Rollout nyedhiyakake fungsi sing padha Deployment, mung karo strategi penyebaran tambahan.
sumber Deployments duwe rong strategi kanggo penyebaran: RollingUpdate и Recreate. Senajan Sastranegara iki cocok kanggo paling kasus, kanggo penyebaran prajurit ing ukuran gedhe banget, Sastranegara tambahan digunakake, kayata biru-ijo utawa kenari, kang ora kasedhiya ing controller Deployment. Kanggo nggunakake strategi kasebut ing Kubernetes, pangguna kudu nulis skrip ing ndhuwur Deployment. Argo Rollouts Controller nyedhiyakake strategi kasebut minangka paramèter sing prasaja, deklaratif, lan bisa dikonfigurasi. https://argoproj.github.io/argo-rollouts
Ana uga Argo CI, sing nyedhiyakake antarmuka web sing trep kanggo nggunakake Rollouts, kita bakal nliti ing artikel sabanjure.
Ing turnip infrastruktur kita (ndeleng ngisor) kita wis nambah install.yaml minangka i/k8s/argo-rollouts/install.yaml. Kanthi cara iki GitlabCI bakal nginstal menyang kluster.
Iki Python + Flask API banget prasaja sing ngasilake respon minangka JSON. Kita bakal mbangun paket nggunakake GitlabCI lan push asil menyang Gitlab Registry. Ing registri kita duwe rong versi rilis sing beda:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Bentenipun mung ing antarane file JSON bali. Kita nggunakake aplikasi iki kanggo nggambarake kanthi gampang versi apa sing kita sesambungake.
Infrastruktur gudang
Ing repositori iki, kita bakal nggunakake GitlabCI kanggo penyebaran menyang Kubernetes, .gitlab-ci.yml katon kaya iki:
Rollout kerjane padha karo Deployment. Yen kita ora nyetel strategi nganyari (kaya kenari ing kene) bakal tumindak kaya Deployment rolling-update standar.
Kita nemtokake rong langkah ing yaml kanggo penyebaran kenari:
10% lalu lintas menyang kenari (ngenteni manual OK)
50% lalu lintas menyang kenari (ngenteni 2 menit banjur terus nganti 100%)
Nindakake penyebaran awal
Sawise panyebaran awal, sumber daya kita bakal katon kaya iki:
Lan kita entuk respon mung saka versi pisanan aplikasi:
Nindakake Penyebaran Canary
Langkah 1: 10% lalu lintas
Kanggo miwiti panyebaran kenari, kita mung kudu ngganti versi gambar kaya biasane karo panyebaran:
Aku nyaranake video iki, nuduhake carane Argo Rollouts lan Argo CI bisa bebarengan:
Asile
Aku seneng banget karo ide nggunakake CRD sing ngatur nggawe jinis penyebaran utawa replika tambahan, lalu lintas pangalihan, lsp. Makarya karo wong-wong mau dadi lancar. Sabanjure aku pengin nyoba integrasi karo Argo CI.
Nanging, katon ana penggabungan gedhe saka Argo CI lan Flux CI, mula aku bisa ngenteni nganti rilis anyar metu: Argo Fluks.
Apa sampeyan duwe pengalaman karo Argo Rollouts utawa Argo CI?