Manantena izahay fa mamaky ianao tapany voalohany, izay nanazavantsika fohifohy ny atao hoe Canary Deployments. Nasehonay ihany koa ny fomba fampiharana azy amin'ny fampiasana loharanon-karena Kubernetes mahazatra.
Argo Rollouts
Argo Rollouts dia mpitantana ny fametrahana teratany Kubernetes. Izy io dia manome CRD (Custom Resource Definition) ho an'ny Kubernetes. Noho izany dia afaka mampiasa entity vaovao isika: Rollout, izay mitantana ny fametrahana manga-maitso sy canary miaraka amin'ny safidy fanamboarana isan-karazany.
Argo Rollouts controller ampiasain'ny loharano mahazatra Rollout, Mamela paikady fametrahana fanampiny toy ny manga-maitso sy ny canary ho an'ny Kubernetes. loharano Rollout manome fonctionnaire mitovy Deployment, miaraka amin'ny paikady fametrahana fanampiny ihany.
loharano Deployments manana paikady roa amin'ny fametrahana: RollingUpdate и Recreate. Na dia mety amin'ny ankamaroan'ny toe-javatra aza ireo paikady ireo, ho an'ny fandefasana amin'ny lohamilina amin'ny ambaratonga lehibe dia misy paikady fanampiny ampiasaina, toy ny manga-maitso na canary, izay tsy hita ao amin'ny fanaraha-maso ny Deployment. Mba hampiasana ireo paika ireo ao amin'ny Kubernetes, dia tsy maintsy nanoratra sora-baventy teo ambonin'ny Fametrahany ny mpampiasa. Ny Argo Rollouts Controller dia mampiharihary ireo paikady ireo ho toy ny masontsivana tsotra sy azo amboarina. https://argoproj.github.io/argo-rollouts
Misy ihany koa ny Argo CI izay manome interface tsara amin'ny Internet ampiasaina amin'ny Rollouts, hojerentsika izany amin'ny lahatsoratra manaraka.
Ao amin'ny fotodrafitrasantsika (jereo eto ambany) dia efa nampiana install.yaml ho i/k8s/argo-rollouts/install.yaml. Amin'izany fomba izany no hametrahana azy ao amin'ny cluster ny GitlabCI.
Ity dia Python + Flask API tena tsotra izay mamerina valiny ho JSON. Hanamboatra ny fonosana amin'ny alàlan'ny GitlabCI izahay ary hanosika ny valiny mankany amin'ny Rejistra Gitlab. Ao amin'ny rejisitra dia manana dikan-teny roa samihafa izahay:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Ny hany maha samy hafa azy ireo dia ny rakitra JSON niverina. Ampiasainay ity fampiharana ity mba hijerena mora foana ny dikan-teny ifampiresahanay.
Fitehirizana fotodrafitrasa
Amin'ity tahiry ity dia hampiasa ny GitlabCI izahay amin'ny fametrahana ny Kubernetes, .gitlab-ci.yml dia toy izao:
Rollout miasa mitovy amin'ny Deployment. Raha tsy mametraka paikady fanavaozam-baovao isika (toy ny canary eto) dia ho toy ny Deployment rolling-update default izany.
Mamaritra dingana roa amin'ny yaml izahay amin'ny fametrahana ny canary:
10% amin'ny fifamoivoizana mankany amin'ny canary (miandry ny bokotra OK)
50% ny fifamoivoizana mankany canary (miandrasa 2 minitra dia tohizo hatramin'ny 100%)
Manatanteraka ny fametrahana voalohany
Aorian'ny fametrahana voalohany dia ho toy izao ny loharanontsika:
Tena manoro hevitra ity horonantsary ity aho, mampiseho ny fomba fiasan'ny Argo Rollouts sy Argo CI:
Ny vokany
Tena tiako ny hevitra amin'ny fampiasana CRD izay mitantana ny famoronana karazana fanaparitahana fanampiny na replicase, redirect traffic, sns. Mizotra tsara ny fiaraha-miasa amin’izy ireo. Manaraka izany dia te-hizaha toetra ny fampidirana amin'ny Argo CI aho.
Na izany aza, toa misy fampifangaroana lehibe ny Argo CI sy ny Flux CI ho avy, ka mety hiandry aho mandra-pivoakan'ny famoahana vaovao: Argo Flux.
Efa nanana traikefa tamin'ny Argo Rollouts na Argo CI ve ianao?
Vakio ihany koa lahatsoratra hafa ao amin'ny bilaoginay: