Canary Deployment e fa'aaoga ai le Jenkins-X Istio Flagger
Canary Deployment
Matou te faamoemoe ua e faitau vaega muamua, lea na matou fa'amatala fa'apuupuu ai po'o le a le Canary Deployments. Na matou faʻaalia foi pe faʻapefea ona faʻatinoina e faʻaaoga ai punaoa masani Kubernetes.
Argo Rollouts
Argo Rollouts o le Kubernetes e pulea le fa'atinoina o galuega. E maua ai le CRD (Custom Resource Definition) mo Kubernetes. Faʻafetai i ai, e mafai ona matou faʻaogaina se mea fou: Rollout, lea e pulea le lanu moana-lanumeamata ma le canary deployments ma filifiliga fetuunaiga eseese.
Argo Rollouts pule fa'aaoga e se aganu'u aganu'u Rollout, Fa'ataga mo isi fa'ata'ita'iga fa'apipi'i e pei ole lanumoana-lanumeamata ma canary mo Kubernetes. Punaoa Rollout maua galuega tutusa Deployment, na'o le fa'aopoopoina o ta'iala fa'apipi'i.
alagāʻoa Deployments e lua taʻiala mo le faʻapipiʻiina: RollingUpdate и Recreate. E ui lava o nei taʻiala e talafeagai mo le tele o tulaga, mo le faʻapipiʻiina i 'auʻaunaga i luga o se lapoʻa tele, o loʻo faʻaaogaina isi taʻiala, e pei o le lanumoana-lanumeamata poʻo le canary, e le o maua i le Deployment controller. Ina ia faʻaogaina nei taʻiala i Kubernetes, e tatau i tagata faʻaoga ona tusia ni tusitusiga i luga o latou Faiga. O le Argo Rollouts Controller o lo'o fa'aalia nei ta'iala e faigofie, fa'ailoa, ma fa'atutu. https://argoproj.github.io/argo-rollouts
O loʻo iai foʻi Argo CI, lea e tuʻuina atu ai se upega tafaʻilagi talafeagai mo le faʻaogaina ma Rollouts, o le a tatou vaʻavaʻai i lena mea i le isi tusiga.
I totonu o la matou fale tele (va'ai i lalo) ua uma ona matou fa'aopoopo install.yaml e pei o i/k8s/argo-rollouts/install.yaml. O le auala lea e faʻapipiʻi ai e GitlabCI i totonu o le fuifui.
O se Python + Flask API faigofie tele lea e toe faʻafoʻi mai se tali e pei o JSON. O le a matou fausia le afifi e faʻaaoga ai GitlabCI ma tulei le taunuʻuga i le Gitlab Registry. I totonu o le resitala e lua a matou faʻasalalauga faʻasalalauga eseese:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Pau lava le eseesega i le va o latou o le JSON faila toe faafoi. Matou te faʻaogaina lenei talosaga e vaʻavaʻai ai i le faigofie e mafai ai po o le a le faʻamatalaga matou te fesoʻotaʻi ai.
Fale teufale tetele
I totonu o lenei fale teu oloa o le a matou faʻaogaina GitlabCI mo le faʻapipiʻiina i Kubernetes, .gitlab-ci.yml e pei o lenei:
Rollout galue tutusa ma le Fa'asoa. Afai tatou te le setiina se fuafuaga faʻafouina (pei o canary iinei) o le a amio pei o le faʻaogaina o le rolling-update Deployment.
Matou te faʻamatalaina laasaga e lua i yaml mo le faʻapipiʻiina o canary:
10% o feoaiga i canary (faatali mo le tusi lesona OK)
50% feoaiga i canary (faatali mo le 2 minute ona faaauau lea i le 100%)
Faʻatinoina le faʻatulagaina muamua
A maeʻa le faʻapipiʻiina muamua, o a matou punaoa o le a pei o lenei:
Ma matou te maua se tali naʻo le lomiga muamua o le talosaga:
Fa'atinoina o le Canary Deployment
Laasaga 1: 10% feoaiga
Ina ia amata se faʻapipiʻiina o canary, e tatau ona tatou suia le ata faʻatusa e masani ona tatou faia i faʻapipiʻi:
Ou te matua fautuaina lenei vitio, e faʻaalia ai le auala e galulue faʻatasi ai Argo Rollouts ma Argo CI:
Le iʻuga
Ou te matua fiafia lava i le manatu o le faʻaaogaina o CRD e faʻatautaia ai le fausiaina o isi ituaiga faʻapipiʻi poʻo faʻasologa, toe faʻafeiloaʻi feoaiga, ma isi. O le galulue faatasi ma i latou e sologa lelei. Le isi ou te manaʻo e faʻataʻitaʻi le tuʻufaʻatasia ma Argo CI.
Ae ui i lea, e foliga mai o loʻo i ai se tuʻufaʻatasiga tele o Argo CI ma Flux CI o loʻo oʻo mai, ina ia mafai ona ou faʻatali seʻia oʻo mai le faʻasalalauga fou: Argo Flux.
Ua iai sou poto masani ile Argo Rollouts po'o le Argo CI?