Kita bakal nindakake penyebaran Canary kanthi manual liwat GitOps lan nggawe / ngowahi sumber daya utama Kubernetes. Artikel iki dimaksudaké utamané kanggo introduksi kanthi cara penyebaran ing Kubernetes Canary, amarga ana cara otomatisasi sing luwih efektif, sing bakal ditimbang ing artikel ing ngisor iki.
Kanthi strategi Canary, nganyari pisanan ditrapake mung kanggo subset pangguna. Liwat ngawasi, data log, tes manual, utawa saluran umpan balik liyane, rilis kasebut diuji sadurunge dirilis menyang kabeh pangguna.
Kubernetes Deployment (update bergulir)
Strategi standar kanggo Kubernetes Deployment yaiku rolling-update, ing ngendi sawetara pods diluncurake nganggo versi gambar anyar. Yen padha digawe tanpa masalah, pods karo versi lawas saka gambar bakal mungkasi, lan pods anyar digawe podo karo.
GitOps
Kita nggunakake GitOps ing conto iki amarga kita:
nggunakake Git minangka sumber siji bebener
kita nggunakake Operasi Git kanggo mbangun lan panyebaran (ora ana prentah kajaba git tag/merge sing dibutuhake)
Conto:
Ayo dadi praktik sing apik - duwe siji gudang kanggo kode aplikasi lan siji kanggo infrastruktur.
Repositori aplikasi
Iki Python + Flask API banget prasaja sing ngasilake respon minangka JSON. Kita bakal mbangun paket liwat 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 iku owah-owahan ing file JSON bali. Kita nggunakake aplikasi iki kanggo nggambarake kanthi gampang versi apa sing kita sesambungake.
Infrastruktur gudang
Ing turnip iki kita bakal nyebar liwat GitlabCI menyang Kubernetes, .gitlab-ci.yml katon kaya iki:
Kita push owah-owahan iki menyang repositori saka ngendi penyebaran bakal diwiwiti (liwat GitlabCI) lan ndeleng minangka asil:
Layanan kita bakal nuduhake loro panyebaran, amarga loro-lorone duwe pamilih app. Amarga randomisasi standar Kubernetes, kita kudu ndeleng respon sing beda kanggo ~ 10% panjalukan:
Kahanan saiki aplikasi kita (GitOps, dijupuk saka Git minangka Sumber Tunggal saka Truth) yaiku anané rong panyebaran kanthi replika aktif, siji kanggo saben versi.
~ 10% pangguna dadi akrab karo versi anyar lan ora sengaja nyoba. Saiki iki wektu kanggo mriksa kesalahan ing log lan ngawasi data kanggo nemokake masalah.
Langkah 2: Rilis versi anyar kanggo kabeh pangguna
Kita mutusake manawa kabeh wis apik lan saiki kita kudu nggulung versi anyar kanggo kabeh pangguna. Kanggo nindakake iki, kita mung nganyari deploy.yaml nginstal versi anyar saka gambar lan nomer réplika witjaksono kanggo 10. Ing deploy-canary.yaml kita nyetel jumlah replika bali menyang 0. Sawise penyebaran, asil bakal kaya ing ngisor iki:
Kanggo ngringkes
Kanggo kula, mbukak penyebaran kanthi manual kanthi cara iki mbantu ngerti carane gampang bisa diatur nggunakake k8s. Wiwit Kubernetes ngidini sampeyan nganyari kabeh liwat API, langkah kasebut bisa otomatis liwat skrip.
Bab liya sing kudu ditindakake yaiku titik entri tester (LoadBalancer utawa liwat Ingress) sing mung bisa diakses versi anyar. Bisa digunakake kanggo browsing manual.
Ing artikel sabanjure, kita bakal mriksa solusi otomatis liyane sing ngleksanakake kabeh sing wis ditindakake.