Cara anu saderhana sareng aman pikeun ngajadikeun otomatis panyebaran kanari nganggo Helm

Cara anu saderhana sareng aman pikeun ngajadikeun otomatis panyebaran kanari nganggo Helm

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.

Cara anu saderhana sareng aman pikeun ngajadikeun otomatis panyebaran kanari nganggo Helm

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 dokuméntasi Kubernetes Malah aya tutorial lengkep ngeunaan skenario ieu. Tapi patarosan utama tulisan ieu kumaha urang bakal ngajadikeun otomatis prosés ieu nganggo Helm.

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 Deliverybot jeung Alat automation Helm dina GitHub. Bagan Helm anu dianggo pikeun nerapkeun metodeu anu dijelaskeun di luhur aya dina Github, di dieu. Sacara umum, ieu mangrupikeun tinjauan téoritis ngeunaan cara nerapkeun otomatisasi panyebaran versi kenari dina prakték, kalayan konsép sareng conto khusus.

sumber: www.habr.com

Tambahkeun komentar