Kanariar Inplementazioa Jenkins-X Istio Flagger erabiliz
Kanariarren hedapena
Irakurtzea espero dugu lehen zatia, non laburki azaldu genuen zer diren Canary Deployments. Kubernetes baliabide estandarrak erabiliz nola inplementatu ere erakutsi genuen.
Argo inplementazioak
Argo Rollouts Kubernetes jatorrizko inplementazio-kontrolatzailea da. CRD (Custom Resource Definition) bat eskaintzen du Kubernetesentzat. Horri esker, entitate berri bat erabil dezakegu: Rollout, urdin-berdeak eta kanariar inplementazioak kudeatzen dituena, hainbat konfigurazio aukerarekin.
Baliabide pertsonalizatu batek erabiltzen duen Argo Rollouts kontrolagailua Rollout, Kubernetesentzako inplementazio-estrategia gehigarriak egiteko aukera ematen du, hala nola, urdin-berdea eta kanaria. Baliabidea Rollout funtzionalitate baliokidea eskaintzen du Deployment, inplementazio estrategia osagarriekin soilik.
baliabidea Deployments bi estrategia ditu zabaltzeko: RollingUpdate ΠΈ Recreate. Estrategia hauek kasu gehienetarako egokiak badira ere, oso eskala handian zerbitzarietan hedatzeko, estrategia osagarriak erabiltzen dira, hala nola, urdin-berdea edo kanaria, Deployment controller-en eskuragarri ez daudenak. Estrategia hauek Kubernetesen erabiltzeko, erabiltzaileek script-ak idatzi behar zituzten beren Inplementazioen gainean. Argo Rollouts Controller-ek estrategia hauek parametro sinple, deklaratibo eta konfiguragarri gisa azaltzen ditu. https://argoproj.github.io/argo-rollouts
Argo CI ere badago, web interfaze erosoa eskaintzen duena Rollouts-ekin erabiltzeko, hurrengo artikuluan ikusiko dugu.
Oso sinplea den Python+Flask API bat da, erantzun bat JSON gisa itzultzen duena. GitlabCI erabiliz paketea eraikiko dugu eta emaitza Gitlab Erregistrora eramango dugu. Erregistroan bi bertsio ezberdin ditugu:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Haien arteko desberdintasun bakarra itzultzen den JSON fitxategia da. Aplikazio hau zein bertsiorekin komunikatzen garen ahalik eta errazen ikusteko erabiltzen dugu.
Azpiegituren biltegia
Biltegi honetan GitlabCI erabiliko dugu Kubernetes-en hedatzeko, .gitlab-ci.yml-ek honela dauka:
Rollout Deployment-en berdin funtzionatzen du. Ez badugu eguneratze-estrategia bat ezartzen (kanary hemen bezala) lehenetsitako rolling-update Deployment bezala jokatuko du.
Yaml-en bi urrats definitzen ditugu canary inplementatzeko:
Trafikoaren % 10 kanariara (itxaron eskuz ondo arte)
%50eko trafikoa Kanarietara (itxaron 2 minutu eta jarraitu %100era arte
Hasierako hedapena egitea
Hasierako hedapenaren ondoren, gure baliabideak honela izango dira:
Eta erantzun bat jasoko dugu aplikazioaren lehen bertsiotik soilik:
Kanariarren hedapena egitea
1. urratsa: %10eko trafikoa
Kanariar inplementazio bat hasteko, irudiaren bertsioa aldatu behar dugu inplementazioekin egin ohi dugun moduan:
Benetan gomendatzen dut bideo hau, Argo Rollouts eta Argo CI elkarrekin nola funtzionatzen duten erakusten du:
Guztira
Asko gustatzen zait inplementazio edo erreplika-multzo osagarriak sortzea, trafikoa birbideratzen dutenak eta abar kudeatzen dituzten CRDak erabiltzearen ideia. Haiekin lan egitea ondo doa. Ondoren, Argo CI-rekin integrazioa probatu nahiko nuke.
Hala ere, badirudi Argo CI eta Flux CIren bat-egite handi bat etorriko dela, beraz, baliteke bertsio berria atera arte itxarongo nuke: Argo Fluxua.
Esperientziarik izan al duzu Argo Rollouts edo Argo CI-rekin?