జెంకిన్స్-ఎక్స్ ఇస్టియో ఫ్లాగర్ ఉపయోగించి కానరీ విస్తరణ
కానరీ విస్తరణ
మీరు చదివారని ఆశిస్తున్నాము మొదటి భాగం, ఇక్కడ మేము కానరీ విస్తరణలు ఏమిటో క్లుప్తంగా వివరించాము. ప్రామాణిక కుబెర్నెట్స్ వనరులను ఉపయోగించి దీన్ని ఎలా అమలు చేయాలో కూడా మేము చూపించాము.
అర్గో రోల్అవుట్లు
అర్గో రోల్అవుట్స్ అనేది కుబెర్నెట్స్ స్థానిక విస్తరణ కంట్రోలర్. ఇది Kubernetes కోసం CRD (కస్టమ్ రిసోర్స్ డెఫినిషన్) అందిస్తుంది. దానికి ధన్యవాదాలు, మేము కొత్త ఎంటిటీని ఉపయోగించవచ్చు: Rollout, ఇది వివిధ కాన్ఫిగరేషన్ ఎంపికలతో నీలం-ఆకుపచ్చ మరియు కానరీ విస్తరణలను నిర్వహిస్తుంది.
కస్టమ్ రిసోర్స్ ద్వారా ఉపయోగించబడే Argo Rollouts కంట్రోలర్ Rollout, కుబెర్నెట్స్ కోసం బ్లూ-గ్రీన్ మరియు కానరీ వంటి అదనపు విస్తరణ వ్యూహాలను అనుమతిస్తుంది. వనరు Rollout సమానమైన కార్యాచరణను అందిస్తుంది Deployment, అదనపు విస్తరణ వ్యూహాలతో మాత్రమే.
వనరు Deployments విస్తరణ కోసం రెండు వ్యూహాలు ఉన్నాయి: RollingUpdate и Recreate. ఈ వ్యూహాలు చాలా సందర్భాలలో అనుకూలంగా ఉన్నప్పటికీ, చాలా పెద్ద స్థాయిలో సర్వర్లకు విస్తరణ కోసం, డిప్లాయ్మెంట్ కంట్రోలర్లో అందుబాటులో లేని బ్లూ-గ్రీన్ లేదా కానరీ వంటి అదనపు వ్యూహాలు ఉపయోగించబడతాయి. కుబెర్నెట్స్లో ఈ వ్యూహాలను ఉపయోగించడానికి, వినియోగదారులు వారి డిప్లాయ్మెంట్ల పైన స్క్రిప్ట్లను వ్రాయవలసి ఉంటుంది. Argo Rollouts కంట్రోలర్ ఈ వ్యూహాలను సాధారణ, డిక్లరేటివ్, కాన్ఫిగర్ చేయగల పారామీటర్లుగా బహిర్గతం చేస్తుంది. https://argoproj.github.io/argo-rollouts
Argo CI కూడా ఉంది, ఇది రోల్అవుట్లతో ఉపయోగించడానికి అనుకూలమైన వెబ్ ఇంటర్ఫేస్ను అందిస్తుంది, మేము దానిని తదుపరి కథనంలో పరిశీలిస్తాము.
మా ఇన్ఫ్రాస్ట్రక్చర్ టర్నిప్లో (క్రింద చూడండి) మేము ఇప్పటికే install.yamlని i/k8s/argo-rollouts/install.yamlగా జోడించాము. ఈ విధంగా GitlabCI దానిని క్లస్టర్లో ఇన్స్టాల్ చేస్తుంది.
ఇది చాలా సులభమైన పైథాన్+ఫ్లాస్క్ API, ఇది JSONగా ప్రతిస్పందనను అందిస్తుంది. మేము GitlabCIని ఉపయోగించి ప్యాకేజీని నిర్మిస్తాము మరియు ఫలితాన్ని Gitlab రిజిస్ట్రీకి పుష్ చేస్తాము. రిజిస్ట్రీలో మనకు రెండు వేర్వేరు విడుదల వెర్షన్లు ఉన్నాయి:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
వాటి మధ్య ఉన్న ఒకే ఒక్క తేడా JSON ఫైల్ తిరిగి ఇవ్వబడింది. మేము ఏ వెర్షన్తో కమ్యూనికేట్ చేస్తున్నామో వీలైనంత సులభంగా విజువలైజ్ చేయడానికి ఈ అప్లికేషన్ని ఉపయోగిస్తాము.
ఇన్ఫ్రాస్ట్రక్చర్ రిపోజిటరీ
ఈ రిపోజిటరీలో మేము Kubernetesకి విస్తరణ కోసం GitlabCIని ఉపయోగిస్తాము, .gitlab-ci.yml ఇలా కనిపిస్తుంది:
Rollout డిప్లాయ్మెంట్ మాదిరిగానే పని చేస్తుంది. మేము నవీకరణ వ్యూహాన్ని సెట్ చేయకుంటే (ఇక్కడ కానరీ లాగా) అది డిఫాల్ట్ రోలింగ్-అప్డేట్ డిప్లాయ్మెంట్ లాగా ప్రవర్తిస్తుంది.
మేము కానరీ విస్తరణ కోసం yamlలో రెండు దశలను నిర్వచించాము:
కానరీకి 10% ట్రాఫిక్ (మాన్యువల్ సరే కోసం వేచి ఉండండి)
కానరీకి 50% ట్రాఫిక్ (2 నిమిషాలు వేచి ఉండి తర్వాత 100% వరకు కొనసాగండి)
ప్రారంభ విస్తరణను నిర్వహిస్తోంది
ప్రారంభ విస్తరణ తర్వాత, మా వనరులు ఇలా కనిపిస్తాయి:
మరియు మేము అప్లికేషన్ యొక్క మొదటి వెర్షన్ నుండి మాత్రమే ప్రతిస్పందనను పొందుతాము:
కానరీ విస్తరణను నిర్వహిస్తోంది
దశ 1: 10% ట్రాఫిక్
కానరీ డిప్లాయ్మెంట్ని ప్రారంభించడానికి, మేము సాధారణంగా డిప్లాయ్మెంట్లతో చేసే విధంగా ఇమేజ్ వెర్షన్ను మార్చాలి:
నేను నిజంగా ఈ వీడియోను సిఫార్సు చేస్తున్నాను, ఇది Argo Rollouts మరియు Argo CI ఎలా కలిసి పని చేస్తుందో చూపిస్తుంది:
ఫలితం
అదనపు రకాల విస్తరణలు లేదా ప్రతిరూపాలు, దారిమార్పు ట్రాఫిక్ మొదలైన వాటి సృష్టిని నిర్వహించే CRDలను ఉపయోగించాలనే ఆలోచన నాకు చాలా ఇష్టం. వారితో పని సాఫీగా సాగుతుంది. తర్వాత నేను అర్గో CIతో ఏకీకరణను పరీక్షించాలనుకుంటున్నాను.
అయినప్పటికీ, Argo CI మరియు Flux CI యొక్క పెద్ద విలీనం వస్తున్నట్లు కనిపిస్తోంది, కాబట్టి కొత్త విడుదల వచ్చే వరకు నేను వేచి ఉండవచ్చు: అర్గో ఫ్లక్స్.
మీకు అర్గో రోల్అవుట్లు లేదా అర్గో CIతో ఏదైనా అనుభవం ఉందా?