Cara mudah dan selamat untuk mengautomasikan penggunaan kenari dengan Helm

Cara mudah dan selamat untuk mengautomasikan penggunaan kenari dengan Helm

Penggunaan Canary ialah cara yang sangat berkesan untuk menguji kod baharu pada subset pengguna. Ia mengurangkan dengan ketara beban trafik yang boleh menjadi masalah semasa proses penempatan, kerana ia hanya berlaku dalam subset tertentu. Nota ini ditumpukan kepada cara mengatur penggunaan sedemikian menggunakan Kubernetes dan automasi penggunaan. Kami menganggap anda tahu sesuatu tentang sumber Helm dan Kubernetes.

Cara mudah dan selamat untuk mengautomasikan penggunaan kenari dengan Helm

Arahan kenari ringkas kepada Kubernetes merangkumi dua sumber utama: perkhidmatan itu sendiri dan alat penggunaan. Arahan Canary berfungsi melalui satu perkhidmatan yang berinteraksi dengan dua sumber berbeza yang menyediakan trafik kemas kini. Salah satu sumber ini akan berfungsi dengan versi "kanari", dan yang kedua akan berfungsi dengan versi stabil. Dalam keadaan ini, kita boleh mengawal bilangan versi kenari untuk mengurangkan jumlah trafik yang diperlukan untuk disiarkan. Jika, sebagai contoh, anda lebih suka menggunakan Yaml, maka ia akan kelihatan seperti ini dalam 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.

Lebih mudah untuk membayangkan pilihan ini menggunakan kubectl, dan dalam dokumentasi Kubernetes Malah terdapat tutorial penuh mengenai senario ini. Tetapi persoalan utama siaran ini ialah bagaimana kami akan mengautomasikan proses ini menggunakan Helm.

Automasi penggunaan kenari

Pertama sekali, kami memerlukan peta carta Helm, yang sudah termasuk sumber yang kami bincangkan di atas. Ia sepatutnya kelihatan seperti ini:

~/charts/app
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

Asas konsep Helm ialah pengurusan keluaran berbilang versi. Versi stabil ialah cawangan stabil utama kami bagi kod projek. Tetapi dengan Helm, kami boleh menggunakan keluaran kenari dengan kod percubaan kami. Perkara utama adalah untuk mengekalkan pertukaran trafik antara versi stabil dan keluaran kenari. Kami akan menguruskan semua ini menggunakan pemilih khas:

selector:
  app.kubernetes.io/name: myapp

Sumber "kanari" dan penggunaan stabil kami akan menunjukkan label ini pada modul. Jika semuanya dikonfigurasikan dengan betul, maka semasa penggunaan versi kenari peta carta Helm kami, kami akan melihat bahawa trafik akan diarahkan ke modul yang baru digunakan. Versi stabil arahan ini akan kelihatan seperti ini:

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

Sekarang mari kita semak keluaran kenari kami. Untuk menggunakan versi kenari, kita perlu ingat dua perkara. Nama keluaran mestilah berbeza supaya kami tidak melancarkan kemas kini kepada versi stabil semasa. Versi dan teg juga mestilah berbeza supaya kami boleh menggunakan kod lain dan mengenal pasti perbezaan mengikut teg sumber.

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

Itu sahaja! Jika anda ping perkhidmatan, anda boleh melihat bahawa kemas kini kanari mengarahkan trafik hanya sebahagian daripada masa.

Jika anda sedang mencari alat automasi penggunaan yang termasuk logik yang diterangkan, maka beri perhatian kepada Deliverybot dan Alat automasi helm pada GitHub. Carta Helm yang digunakan untuk melaksanakan kaedah yang diterangkan di atas adalah pada Github, di sini. Secara umum, ini ialah gambaran keseluruhan teori tentang cara melaksanakan automasi penggunaan versi kenari dalam amalan, dengan konsep dan contoh khusus.

Sumber: www.habr.com

Tambah komen