Panyebaran Kanaria mangrupikeun cara anu épéktip pikeun nguji kode énggal dina sawaréh pangguna. Éta sacara signifikan ngirangan beban lalu lintas anu tiasa janten masalah nalika prosés panyebaran, sabab ngan ukur aya dina sawaréh khusus. Catetan ieu dikhususkeun pikeun kumaha ngatur panyebaran sapertos kitu nganggo Kubernetes sareng otomatisasi penyebaran. Kami nganggap anjeun terang ngeunaan sumber Helm sareng Kubernetes.
Panyebaran kanari saderhana ka Kubernetes kalebet dua sumber utama: jasa éta sorangan sareng alat panyebaran. deployment Canary jalan ngaliwatan hiji layanan tunggal nu berinteraksi sareng dua sumber béda porsi lalulintas update. Salah sahiji sumber ieu bakal tiasa dianggo sareng versi "kanari", sareng anu kadua bakal tiasa dianggo sareng versi stabil. Dina kaayaan ieu, urang bisa ngatur jumlah versi kanaria guna ngurangan jumlah lalulintas diperlukeun pikeun ngawula ka. Upami, contona, anjeun langkung resep ngagunakeun Yaml, maka bakal sapertos kieu dina Kubernetes:
kind: Deployment
metadata:
name: app-canary
labels:
app: app
spec:
replicas: 1
...
image: myapp:canary
---
kind: Deployment
metadata:
name: app
labels:
app: app
spec:
replicas: 5
...
image: myapp:stable
---
kind: Service
selector:
app: app # Selector will route traffic to both deployments.
Éta langkung gampang ngabayangkeun pilihan ieu nganggo kubectl, sareng in
Automation of deployment kenari
Anu mimiti, urang peryogi peta bagan Helm, anu parantos kalebet sumber daya anu urang bahas di luhur. Éta kedah katingali sapertos kieu:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Dasar konsép Helm nyaéta ngokolakeun pelepasan multi-versi. Versi stabil nyaéta cabang stabil utama kami tina kode proyék. Tapi kalayan Helm urang tiasa nyebarkeun sékrési kanaria kalayan kode ékspérimén urang. Hal utama nyaéta pikeun ngajaga bursa lalu lintas antara versi stabil sareng sékrési kanaria. Kami bakal ngatur sadayana ieu nganggo pamilih khusus:
selector:
app.kubernetes.io/name: myapp
"Kanaria" kami sareng sumber panyebaran stabil bakal nunjukkeun labél ieu dina modul. Lamun sagalana geus ngonpigurasi leres, lajeng salila deployment tina versi kanaria tina peta Helm grafik urang bakal ningali yén lalulintas bakal diarahkeun ka modul anyar deployed. Versi stabil tina paréntah ieu bakal katingali sapertos kieu:
helm upgrade
--install myapp
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v1 # Goes into app.kubernetes.io/version
--set image.tag=stable
--set replicaCount=5
Ayeuna hayu urang pariksa kaluaran kenari urang. Pikeun nyebarkeun versi kenari, urang kedah émut dua hal. Ngaran sékrési kedah béda supados urang henteu ngaluarkeun apdet kana versi stabil ayeuna. Versi sareng tag ogé kedah béda supados urang tiasa nyebarkeun kode anu sanés sareng ngaidentipikasi bédana ku tag sumberdaya.
helm upgrade
--install myapp-canary
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v2 # Goes into app.kubernetes.io/version
--set image.tag=canary
--set replicaCount=1
Éta hungkul! Upami anjeun ping jasa éta, anjeun tiasa ningali yén update kanaria ngajalankeun lalu lintas ngan ukur sabagian waktos.
Upami anjeun milarian alat-alat otomatisasi penyebaran anu kalebet logika anu dijelaskeun, teras perhatoskeun
sumber: www.habr.com