Penggunaan Canary menggunakan Jenkins-X Istio Flagger
Penggunaan Canary
Kami harap anda membaca bahagian pertama, di mana kami menerangkan secara ringkas apa itu Canary Deployments. Kami juga menunjukkan cara untuk melaksanakannya menggunakan sumber Kubernetes standard.
Pelancaran Argo
Argo Rollouts ialah pengawal penggunaan asli Kubernetes. Ia menyediakan CRD (Definisi Sumber Tersuai) untuk Kubernetes. Terima kasih kepadanya, kami boleh menggunakan entiti baharu: Rollout, yang menguruskan penggunaan biru-hijau dan kenari dengan pelbagai pilihan konfigurasi.
Pengawal Argo Rollouts yang digunakan oleh sumber tersuai Rollout, Membenarkan strategi penggunaan tambahan seperti biru-hijau dan kenari untuk Kubernetes. Sumber Rollout menyediakan fungsi yang setara Deployment, hanya dengan strategi penggunaan tambahan.
sumber Deployments mempunyai dua strategi untuk penempatan: RollingUpdate и Recreate. Walaupun strategi ini sesuai untuk kebanyakan kes, untuk penempatan ke pelayan pada skala yang sangat besar, strategi tambahan digunakan, seperti biru-hijau atau kenari, yang tidak tersedia dalam pengawal Deployment. Untuk menggunakan strategi ini dalam Kubernetes, pengguna perlu menulis skrip di atas Deployment mereka. Pengawal Argo Rollouts mendedahkan strategi ini sebagai parameter yang mudah, deklaratif dan boleh dikonfigurasikan. https://argoproj.github.io/argo-rollouts
Terdapat juga Argo CI, yang menyediakan antara muka web yang mudah untuk digunakan dengan Pelancaran, kami akan melihatnya dalam artikel seterusnya.
Dalam lobak infrastruktur kami (lihat di bawah) kami telah menambah install.yaml sebagai i/k8s/argo-rollouts/install.yaml. Dengan cara ini GitlabCI akan memasangnya ke dalam kelompok.
Ini adalah API Python+Flask yang sangat mudah yang mengembalikan respons sebagai JSON. Kami akan membina pakej menggunakan GitlabCI dan menolak hasilnya ke Pendaftaran Gitlab. Dalam pendaftaran kami mempunyai dua versi keluaran yang berbeza:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Satu-satunya perbezaan di antara mereka ialah fail JSON yang dikembalikan. Kami menggunakan aplikasi ini untuk menggambarkan semudah mungkin versi yang kami berkomunikasi.
Repositori infrastruktur
Dalam repositori ini kami akan menggunakan GitlabCI untuk penempatan ke Kubernetes, .gitlab-ci.yml kelihatan seperti ini:
Rollout berfungsi sama seperti Deployment. Jika kami tidak menetapkan strategi kemas kini (seperti kenari di sini) ia akan berkelakuan seperti Deployment kemas kini rolling lalai.
Kami mentakrifkan dua langkah dalam yaml untuk penggunaan kenari:
10% daripada trafik ke kenari (tunggu manual OK)
50% trafik ke kenari (tunggu 2 minit kemudian teruskan ke 100%)
Melaksanakan penempatan awal
Selepas penggunaan awal, sumber kami akan kelihatan seperti ini:
Dan kami mendapat respons hanya daripada versi pertama aplikasi:
Melakukan Deployment Canary
Langkah 1: 10% trafik
Untuk memulakan penggunaan kenari, kita hanya perlu menukar versi imej seperti yang biasa kita lakukan dengan penempatan:
Saya sangat mengesyorkan video ini, ia menunjukkan cara Argo Rollouts dan Argo CI berfungsi bersama:
Jumlah
Saya sangat menyukai idea menggunakan CRD yang menguruskan penciptaan jenis penempatan atau replika tambahan, mengubah hala lalu lintas, dsb. Bekerja dengan mereka berjalan lancar. Seterusnya saya ingin menguji integrasi dengan Argo CI.
Walau bagaimanapun, nampaknya terdapat penggabungan besar Argo CI dan Flux CI akan datang, jadi saya mungkin menunggu sehingga keluaran baharu keluar: Argo Flux.
Adakah anda mempunyai pengalaman dengan Argo Rollouts atau Argo CI?