గమనిక. అనువాదం.: ఇటీవలి ప్రచురణ తర్వాత పదార్థం GitOpsలో పుల్ మరియు పుష్ పద్ధతుల గురించి, మేము సాధారణంగా ఈ మోడల్పై ఆసక్తిని చూశాము, కానీ ఈ అంశంపై చాలా తక్కువ రష్యన్ భాషా ప్రచురణలు ఉన్నాయి (హాబ్రేలో ఏవీ లేవు). అందువల్ల, మీ దృష్టికి మరొక వ్యాసం యొక్క అనువాదాన్ని అందించడానికి మేము సంతోషిస్తున్నాము - దాదాపు ఒక సంవత్సరం క్రితం అయినప్పటికీ! - వీవ్వర్క్స్ నుండి, దీని అధిపతి "GitOps" అనే పదాన్ని రూపొందించారు. టెక్స్ట్ విధానం యొక్క సారాంశం మరియు ఇప్పటికే ఉన్న వాటి నుండి కీలక వ్యత్యాసాలను వివరిస్తుంది.
ఒక సంవత్సరం క్రితం మేము ప్రచురించాము GitOps పరిచయం. అప్పటికి, Weaveworks బృందం పూర్తిగా Kubernetes ఆధారంగా SaaSని ఎలా ప్రారంభించిందో మేము పంచుకున్నాము మరియు క్లౌడ్ స్థానిక వాతావరణంలో అమలు చేయడం, నిర్వహించడం మరియు పర్యవేక్షించడం కోసం ప్రిస్క్రిప్టివ్ బెస్ట్ ప్రాక్టీస్ల సెట్ను అభివృద్ధి చేసింది.
వ్యాసం ప్రజాదరణ పొందింది. ఇతర వ్యక్తులు GitOps గురించి మాట్లాడటం ప్రారంభించారు మరియు కొత్త సాధనాలను ప్రచురించడం ప్రారంభించారు git push, అభివృద్ధి, రహస్యాలు, ఫంక్షన్, నిరంతర ఏకీకరణ మరియు అందువలన న. మా వెబ్సైట్లో కనిపించింది పెద్ద సంఖ్యలో ప్రచురణలు మరియు GitOps వినియోగ సందర్భాలు. కానీ కొంతమందికి ఇంకా ప్రశ్నలు ఉన్నాయి. మోడల్ సాంప్రదాయ నుండి ఎలా భిన్నంగా ఉంటుంది? కోడ్గా మౌలిక సదుపాయాలు మరియు నిరంతర డెలివరీ (నిరంతర డెలివరీ)? Kubernetes ఉపయోగించడం అవసరమా?
కొత్త వివరణ అవసరమని మేము త్వరలో గ్రహించాము, అందిస్తున్నాము:
పెద్ద సంఖ్యలో ఉదాహరణలు మరియు కథనాలు;
GitOps యొక్క నిర్దిష్ట నిర్వచనం;
సాంప్రదాయ నిరంతర డెలివరీతో పోలిక.
ఈ వ్యాసంలో మేము ఈ అంశాలన్నింటినీ కవర్ చేయడానికి ప్రయత్నించాము. ఇది GitOpsకి నవీకరించబడిన పరిచయాన్ని మరియు డెవలపర్ మరియు CI/CD దృక్కోణాన్ని అందిస్తుంది. మేము ప్రాథమికంగా కుబెర్నెట్స్పై దృష్టి పెడతాము, అయినప్పటికీ మోడల్ను సాధారణీకరించవచ్చు.
GitOpsని కలవండి
ఆలిస్ ఊహించుకోండి. ఆమె ఫ్యామిలీ ఇన్సూరెన్స్ని నడుపుతుంది, ఇది కాంట్రాక్ట్ల యొక్క ఇన్స్యూర్స్ను స్వయంగా గుర్తించలేని వ్యక్తులకు ఆరోగ్యం, ఆటో, ఇల్లు మరియు ప్రయాణ బీమాను అందిస్తుంది. ఆలిస్ ఒక బ్యాంక్లో డేటా సైంటిస్ట్గా పనిచేస్తున్నప్పుడు ఆమె వ్యాపారం పక్క ప్రాజెక్ట్గా ప్రారంభమైంది. డేటాను మరింత సమర్థవంతంగా విశ్లేషించడానికి మరియు బీమా ప్యాకేజీలను రూపొందించడానికి అధునాతన కంప్యూటర్ అల్గారిథమ్లను ఉపయోగించవచ్చని ఒక రోజు ఆమె గ్రహించింది. పెట్టుబడిదారులు ఈ ప్రాజెక్ట్కు ఆర్థిక సహాయం చేసారు మరియు ఇప్పుడు ఆమె కంపెనీ సంవత్సరానికి $20 మిలియన్ కంటే ఎక్కువ ఆదాయాన్ని తెస్తుంది మరియు వేగంగా అభివృద్ధి చెందుతోంది. ప్రస్తుతం వివిధ హోదాల్లో 180 మంది ఉద్యోగులు పనిచేస్తున్నారు. వెబ్సైట్, డేటాబేస్ను అభివృద్ధి చేయడం, నిర్వహించడం మరియు కస్టమర్ బేస్ను విశ్లేషించే సాంకేతిక బృందం ఇందులో ఉంది. 60 మందితో కూడిన బృందానికి కంపెనీ టెక్నికల్ డైరెక్టర్ బాబ్ నాయకత్వం వహిస్తున్నారు.
బాబ్ బృందం క్లౌడ్లో ఉత్పత్తి వ్యవస్థలను అమలు చేస్తుంది. Google క్లౌడ్లోని కుబెర్నెట్ల ప్రయోజనాన్ని పొందుతూ వారి ప్రధాన అప్లికేషన్లు GKEలో రన్ అవుతాయి. అదనంగా, వారు తమ పనిలో వివిధ డేటా మరియు విశ్లేషణ సాధనాలను ఉపయోగిస్తారు.
ఫ్యామిలీ ఇన్సూరెన్స్ కంటైనర్లను ఉపయోగించడం ప్రారంభించలేదు, కానీ డాకర్ ఉత్సాహంలో చిక్కుకుంది. GKE కొత్త ఫీచర్లను పరీక్షించడానికి క్లస్టర్లను అమలు చేయడాన్ని సులభతరం చేసిందని కంపెనీ త్వరలో కనుగొంది. కంటైనర్ రిజిస్ట్రీని నిర్వహించడానికి CI మరియు క్వే కోసం జెంకిన్స్ జోడించబడ్డాయి, జెంకిన్స్ కోసం స్క్రిప్ట్లు వ్రాయబడ్డాయి, ఇవి కొత్త కంటైనర్లు మరియు కాన్ఫిగరేషన్లను GKEకి నెట్టాయి.
కొంత సమయం గడిచిపోయింది. ఆలిస్ మరియు బాబ్ వారు ఎంచుకున్న విధానం యొక్క పనితీరు మరియు వ్యాపారంపై దాని ప్రభావంతో నిరాశ చెందారు. కంటైనర్ల పరిచయం బృందం ఆశించినంతగా ఉత్పాదకతను మెరుగుపరచలేదు. కొన్నిసార్లు విస్తరణలు విచ్ఛిన్నమవుతాయి మరియు కోడ్ మార్పులు కారణమా అనేది అస్పష్టంగా ఉంది. కాన్ఫిగర్ మార్పులను ట్రాక్ చేయడం కూడా కష్టంగా మారింది. తరచుగా కొత్త క్లస్టర్ను సృష్టించడం మరియు దానికి అప్లికేషన్లను తరలించడం అవసరం, ఎందుకంటే సిస్టమ్గా మారిన గందరగోళాన్ని తొలగించడానికి ఇది సులభమైన మార్గం. అప్లికేషన్ అభివృద్ధి చెందడంతో పరిస్థితి మరింత దిగజారిపోతుందని ఆలిస్ భయపడ్డాడు (అదనంగా, మెషిన్ లెర్నింగ్ ఆధారంగా కొత్త ప్రాజెక్ట్ తయారవుతోంది). బాబ్ చాలా పనిని స్వయంచాలకంగా చేసాడు మరియు పైప్లైన్ ఎందుకు అస్థిరంగా ఉంది, సరిగ్గా స్కేల్ చేయలేదు మరియు క్రమానుగతంగా మాన్యువల్ జోక్యం ఎందుకు అవసరమో అర్థం కాలేదు?
అప్పుడు వారు GitOps గురించి తెలుసుకున్నారు. ఈ నిర్ణయం వారు ఆత్మవిశ్వాసంతో ముందుకు సాగాల్సిన అవసరం ఉందని తేలింది.
ఆలిస్ మరియు బాబ్ Git, DevOps మరియు ఇన్ఫ్రాస్ట్రక్చర్ గురించి చాలా సంవత్సరాలుగా కోడ్ వర్క్ఫ్లో వింటూనే ఉన్నారు. GitOps యొక్క ప్రత్యేకత ఏమిటంటే, ఇది కుబెర్నెట్స్ సందర్భంలో ఈ ఆలోచనలను అమలు చేయడానికి-నిశ్చయాత్మకమైన మరియు సూత్రప్రాయమైన ఉత్తమ అభ్యాసాల సమితిని తీసుకువస్తుంది. ఈ థీమ్ పదే పదే పెరిగింది, సహా వీవ్వర్క్స్ బ్లాగ్.
కుటుంబ బీమా GitOpsను అమలు చేయాలని నిర్ణయించింది. కంపెనీ ఇప్పుడు స్వయంచాలక ఆపరేషన్ మోడల్ను కలిగి ఉంది, అది కుబెర్నెట్స్తో అనుకూలంగా ఉంటుంది మరియు మిళితం చేస్తుంది వేగం తో స్థిరత్వంఎందుకంటే వాళ్ళు:
ఎవరూ వెర్రివెళ్లకుండానే జట్టు ఉత్పాదకత రెట్టింపు అయిందని కనుగొన్నారు;
స్క్రిప్ట్లను అందించడం మానేసింది. బదులుగా, వారు ఇప్పుడు కొత్త ఫీచర్లపై దృష్టి పెట్టవచ్చు మరియు ఇంజనీరింగ్ పద్ధతులను మెరుగుపరచవచ్చు - ఉదాహరణకు, కానరీ రోల్అవుట్లను పరిచయం చేయడం మరియు పరీక్షను మెరుగుపరచడం;
మేము విస్తరణ ప్రక్రియను మెరుగుపరిచాము, తద్వారా ఇది చాలా అరుదుగా విచ్ఛిన్నమవుతుంది;
మాన్యువల్ జోక్యం లేకుండా పాక్షిక వైఫల్యాల తర్వాత విస్తరణలను పునరుద్ధరించడానికి అవకాశం వచ్చింది;
ఉపయోగించిన కొనుగోలుоడెలివరీ వ్యవస్థలపై ఎక్కువ విశ్వాసం. ఆలిస్ మరియు బాబ్ వారు జట్టును సమాంతరంగా పనిచేసే మైక్రోసర్వీస్ బృందాలుగా విభజించవచ్చని కనుగొన్నారు;
ప్రతి సమూహం యొక్క ప్రయత్నాల ద్వారా ప్రతిరోజూ ప్రాజెక్ట్లో 30-50 మార్పులు చేయవచ్చు మరియు కొత్త పద్ధతులను ప్రయత్నించవచ్చు;
ప్రాజెక్ట్కి కొత్త డెవలపర్లను ఆకర్షించడం సులభం, వారు కొన్ని గంటల్లో పుల్ అభ్యర్థనలను ఉపయోగించి ఉత్పత్తికి అప్డేట్లను విడుదల చేసే అవకాశం ఉంది;
SOC2 ఫ్రేమ్వర్క్లో సులభంగా ఆడిట్ పాస్ చేయండి (సురక్షిత డేటా నిర్వహణ కోసం సర్వీస్ ప్రొవైడర్ల అవసరాలకు అనుగుణంగా; మరింత చదవండి, ఉదాహరణకు, ఇక్కడ - సుమారు అనువాదం.).
ఏం జరిగింది?
GitOps రెండు విషయాలు:
కుబెర్నెట్స్ మరియు క్లౌడ్ స్థానికుల కోసం కార్యాచరణ నమూనా. ఇది కంటెయినరైజ్డ్ క్లస్టర్లు మరియు అప్లికేషన్లను అమలు చేయడం, నిర్వహించడం మరియు పర్యవేక్షించడం కోసం ఉత్తమ అభ్యాసాల సమితిని అందిస్తుంది. రూపంలో సొగసైన నిర్వచనం ఒక స్లయిడ్ от లూయిస్ ఫేసీరా:
డెవలపర్-సెంట్రిక్ అప్లికేషన్ మేనేజ్మెంట్ వాతావరణాన్ని సృష్టించే మార్గం. మేము Git వర్క్ఫ్లోను కార్యకలాపాలు మరియు అభివృద్ధి రెండింటికీ వర్తింపజేస్తాము. దయచేసి ఇది కేవలం Git పుష్ గురించి మాత్రమే కాదు, CI/CD మరియు UI/UX సాధనాల మొత్తం సెట్ను నిర్వహించడం గురించి.
Git గురించి కొన్ని మాటలు
మీకు వెర్షన్ కంట్రోల్ సిస్టమ్లు మరియు Git-ఆధారిత వర్క్ఫ్లో గురించి తెలియకపోతే, వాటి గురించి తెలుసుకోవాలని మేము బాగా సిఫార్సు చేస్తున్నాము. బ్రాంచ్లు మరియు పుల్ రిక్వెస్ట్లతో పని చేయడం మొదట బ్లాక్ మ్యాజిక్ లాగా అనిపించవచ్చు, కానీ ప్రయోజనాలు కృషికి విలువైనవి. ఇక్కడ మంచి వ్యాసం ప్రారంభించడానికి.
కుబెర్నెటెస్ ఎలా పని చేస్తుంది
మా కథలో, ఆలిస్ మరియు బాబ్ కొంతకాలం కుబెర్నెట్స్తో కలిసి పనిచేసిన తర్వాత GitOps వైపు మొగ్గు చూపారు. నిజానికి, GitOps కుబెర్నెట్స్తో దగ్గరి సంబంధం కలిగి ఉంది - ఇది కుబెర్నెట్స్ ఆధారంగా మౌలిక సదుపాయాలు మరియు అప్లికేషన్ల కోసం ఒక కార్యాచరణ నమూనా.
Kubernetes వినియోగదారులకు ఏమి ఇస్తుంది?
ఇక్కడ కొన్ని ప్రధాన లక్షణాలు ఉన్నాయి:
కుబెర్నెటెస్ మోడల్లో, ప్రతిదీ డిక్లరేటివ్ రూపంలో వివరించవచ్చు.
Kubernetes API సర్వర్ ఈ డిక్లరేషన్ను ఇన్పుట్గా తీసుకుంటుంది మరియు క్లస్టర్ను డిక్లరేషన్లో వివరించిన స్థితికి తీసుకురావడానికి నిరంతరం ప్రయత్నిస్తుంది.
అనేక రకాల వర్క్లోడ్లను వివరించడానికి మరియు నిర్వహించడానికి డిక్లరేషన్లు సరిపోతాయి-“అప్లికేషన్లు.”
ఫలితంగా, అప్లికేషన్ మరియు క్లస్టర్లో మార్పులు దీని వలన సంభవిస్తాయి:
కంటైనర్ చిత్రాలలో మార్పులు;
డిక్లరేటివ్ స్పెసిఫికేషన్లో మార్పులు;
పర్యావరణంలో లోపాలు - ఉదాహరణకు, కంటైనర్ క్రాష్లు.
కుబెర్నెటెస్ గొప్ప కన్వర్జెన్స్ సామర్థ్యాలు
అడ్మినిస్ట్రేటర్ కాన్ఫిగరేషన్ మార్పులను చేసినప్పుడు, కుబెర్నెట్స్ ఆర్కెస్ట్రేటర్ తన స్థితి ఉన్నంత వరకు వాటిని క్లస్టర్కు వర్తింపజేస్తుంది కొత్త కాన్ఫిగరేషన్కు దగ్గరగా ఉండదు. ఈ మోడల్ ఏదైనా కుబెర్నెట్స్ రిసోర్స్ కోసం పని చేస్తుంది మరియు కస్టమ్ రిసోర్స్ డెఫినిషన్స్ (CRDలు)తో విస్తరించబడుతుంది. అందువల్ల, కుబెర్నెట్స్ విస్తరణలు క్రింది అద్భుతమైన లక్షణాలను కలిగి ఉన్నాయి:
ఆటోమేషన్: కుబెర్నెటెస్ అప్డేట్లు మార్పులను సునాయాసంగా మరియు సమయానుకూలంగా వర్తింపజేసే ప్రక్రియను ఆటోమేట్ చేయడానికి ఒక యంత్రాంగాన్ని అందిస్తాయి.
కన్వర్జెన్స్: Kubernetes విజయవంతమైన వరకు నవీకరణలను ప్రయత్నిస్తూనే ఉంటుంది.
చిత్తశుద్ధి: కన్వర్జెన్స్ యొక్క పునరావృత అప్లికేషన్లు అదే ఫలితానికి దారితీస్తాయి.
నిర్ణయాత్మకత: వనరులు తగినంతగా ఉన్నప్పుడు, నవీకరించబడిన క్లస్టర్ యొక్క స్థితి కావలసిన స్థితిపై మాత్రమే ఆధారపడి ఉంటుంది.
GitOps ఎలా పని చేస్తుంది
GitOps ఎలా పనిచేస్తుందో వివరించడానికి మేము Kubernetes గురించి తగినంతగా నేర్చుకున్నాము.
కుటుంబ బీమా యొక్క మైక్రోసర్వీస్ బృందాలకు తిరిగి వెళ్దాం. వారు సాధారణంగా ఏమి చేయాలి? దిగువ జాబితాను చూడండి (అందులో ఏవైనా అంశాలు వింతగా లేదా తెలియనివిగా అనిపిస్తే, దయచేసి విమర్శించడం ఆపి, మాతో ఉండండి). ఇవి జెంకిన్స్ ఆధారిత వర్క్ఫ్లోల ఉదాహరణలు మాత్రమే. ఇతర సాధనాలతో పని చేస్తున్నప్పుడు అనేక ఇతర ప్రక్రియలు ఉన్నాయి.
ప్రధాన విషయం ఏమిటంటే, ప్రతి నవీకరణ కాన్ఫిగరేషన్ ఫైల్లు మరియు Git రిపోజిటరీలకు మార్పులతో ముగుస్తుంది. Gitకి ఈ మార్పులు క్లస్టర్ను నవీకరించడానికి "GitOps ఆపరేటర్"కి కారణమవుతాయి:
1. పని ప్రక్రియ: "జెంకిన్స్ బిల్డ్ - మాస్టర్ బ్రాంచ్".
పని జాబితా:
జెంకిన్స్ ట్యాగ్ చేయబడిన చిత్రాలను క్వేకి నెట్టాడు;
జెంకిన్స్ కాన్ఫిగరేషన్ మరియు హెల్మ్ చార్ట్లను మాస్టర్ స్టోరేజ్ బకెట్కి నెట్టివేస్తుంది;
క్లౌడ్ ఫంక్షన్ మాస్టర్ స్టోరేజ్ బకెట్ నుండి మాస్టర్ Git రిపోజిటరీకి కాన్ఫిగర్ మరియు చార్ట్లను కాపీ చేస్తుంది;
GitOps ఆపరేటర్ క్లస్టర్ను అప్డేట్ చేస్తుంది.
2. జెంకిన్స్ బిల్డ్ - విడుదల లేదా హాట్ఫిక్స్ శాఖ:
జెంకిన్స్ ట్యాగ్ చేయని చిత్రాలను క్వేకి నెట్టాడు;
జెంకిన్స్ కాన్ఫిగర్ మరియు హెల్మ్ చార్ట్లను స్టేజింగ్ స్టోరేజ్ బకెట్కి నెట్టివేస్తుంది;
క్లౌడ్ ఫంక్షన్ కాన్ఫిగరేషన్ మరియు చార్ట్లను స్టేజింగ్ స్టోరేజ్ బకెట్ నుండి స్టేజింగ్ Git రిపోజిటరీకి కాపీ చేస్తుంది;
GitOps ఆపరేటర్ క్లస్టర్ను అప్డేట్ చేస్తుంది.
3. జెంకిన్స్ బిల్డ్ - డెవలప్ లేదా ఫీచర్ బ్రాంచ్:
జెంకిన్స్ ట్యాగ్ చేయని చిత్రాలను క్వేకి నెట్టాడు;
జెంకిన్స్ కాన్ఫిగర్ మరియు హెల్మ్ చార్ట్లను డెవలప్ స్టోరేజ్ బకెట్లోకి నెట్టాడు;
క్లౌడ్ ఫంక్షన్ డెవలప్ స్టోరేజ్ బకెట్ నుండి డెవలప్ చేసిన Git రిపోజిటరీకి కాన్ఫిగర్ మరియు చార్ట్లను కాపీ చేస్తుంది;
GitOps ఆపరేటర్ క్లస్టర్ను అప్డేట్ చేస్తుంది.
4. కొత్త క్లయింట్ని జోడిస్తోంది:
మేనేజర్ లేదా అడ్మినిస్ట్రేటర్ (LCM/ops) ప్రారంభంలో నెట్వర్క్ లోడ్ బ్యాలెన్సర్లను (NLBలు) అమర్చడానికి మరియు కాన్ఫిగర్ చేయడానికి Gradleని పిలుస్తాడు;
అప్డేట్ల కోసం విస్తరణను సిద్ధం చేయడానికి LCM/ops కొత్త కాన్ఫిగరేషన్ను చేస్తుంది;
GitOps ఆపరేటర్ క్లస్టర్ను అప్డేట్ చేస్తుంది.
GitOps యొక్క సంక్షిప్త వివరణ
ప్రతి పర్యావరణం కోసం డిక్లరేటివ్ స్పెసిఫికేషన్లను ఉపయోగించి మొత్తం సిస్టమ్ యొక్క కావలసిన స్థితిని వివరించండి (మా కథనంలో, బాబ్ బృందం Gitలో మొత్తం సిస్టమ్ కాన్ఫిగరేషన్ను నిర్వచిస్తుంది).
Git రిపోజిటరీ అనేది మొత్తం సిస్టమ్ యొక్క కావలసిన స్థితికి సంబంధించి సత్యం యొక్క ఏకైక మూలం.
కావలసిన స్థితికి అన్ని మార్పులు Gitలో కమిట్ల ద్వారా చేయబడతాయి.
కావలసిన క్లస్టర్ పారామితులు అన్నీ కూడా క్లస్టర్లోనే గమనించవచ్చు. ఈ విధంగా అవి ఏకీభవిస్తాయో లేదో మనం నిర్ణయించవచ్చు (కన్వర్జ్, కలుస్తాయి) లేదా భేదం (విభజన, విభేదించు) కావలసిన మరియు గమనించిన రాష్ట్రాలు.
కావలసిన మరియు గమనించిన రాష్ట్రాలు భిన్నంగా ఉంటే, అప్పుడు:
ఒక కన్వర్జెన్స్ మెకానిజం ఉంది, అది ముందుగానే లేదా తరువాత స్వయంచాలకంగా లక్ష్యం మరియు గమనించిన స్థితులను సమకాలీకరిస్తుంది. క్లస్టర్ లోపల, కుబెర్నెటెస్ ఇలా చేస్తాడు.
ప్రక్రియ వెంటనే "మార్పు కట్టుబడి" హెచ్చరికతో ప్రారంభమవుతుంది.
కొంత కాన్ఫిగర్ చేయదగిన సమయం తర్వాత, రాష్ట్రాలు వేర్వేరుగా ఉంటే "డిఫ్" హెచ్చరికను పంపవచ్చు.
ఈ విధంగా, Gitలోని అన్ని కమిట్లు క్లస్టర్కు ధృవీకరించదగిన మరియు శక్తివంతమైన నవీకరణలను కలిగిస్తాయి.
రోల్బ్యాక్ అనేది గతంలో కోరుకున్న స్థితికి కలయిక.
కన్వర్జెన్స్ ఫైనల్. దీని సంభవం దీని ద్వారా సూచించబడుతుంది:
నిర్దిష్ట సమయం వరకు తేడా హెచ్చరికలు లేవు.
"కన్వర్జ్డ్" హెచ్చరిక (ఉదా. webhook, Git రైట్బ్యాక్ ఈవెంట్).
విభేదం అంటే ఏమిటి?
మళ్ళీ పునరావృతం చేద్దాం: అన్ని కోరుకున్న క్లస్టర్ లక్షణాలు తప్పనిసరిగా క్లస్టర్లోనే గమనించవచ్చు.
భిన్నత్వానికి కొన్ని ఉదాహరణలు:
Gitలో శాఖలను విలీనం చేయడం వల్ల కాన్ఫిగరేషన్ ఫైల్లో మార్పు.
GUI క్లయింట్ చేసిన Git కమిట్ కారణంగా కాన్ఫిగరేషన్ ఫైల్లో మార్పు.
గిట్లోని PR కారణంగా కావలసిన స్థితికి బహుళ మార్పులు, ఆపై కంటైనర్ ఇమేజ్ని నిర్మించడం మరియు కాన్ఫిగర్ మార్పులు.
లోపం కారణంగా క్లస్టర్ స్థితిలో మార్పు, వనరుల వైరుధ్యం ఫలితంగా "చెడు ప్రవర్తన" లేదా అసలైన స్థితి నుండి యాదృచ్ఛిక విచలనం.
కన్వర్జెన్స్ యొక్క మెకానిజం ఏమిటి?
కొన్ని ఉదాహరణలు:
కంటైనర్లు మరియు క్లస్టర్ల కోసం, కన్వర్జెన్స్ మెకానిజం కుబెర్నెట్స్ ద్వారా అందించబడుతుంది.
కుబెర్నెటీస్ ఆధారిత అప్లికేషన్లు మరియు డిజైన్లను (ఇస్టియో మరియు కుబెఫ్లో వంటివి) నిర్వహించడానికి అదే మెకానిజం ఉపయోగించవచ్చు.
కుబెర్నెట్స్, ఇమేజ్ రిపోజిటరీలు మరియు Git మధ్య కార్యాచరణ పరస్పర చర్యను నిర్వహించడానికి ఒక మెకానిజం అందిస్తుంది GitOps ఆపరేటర్ వీవ్ ఫ్లక్స్, ఇది భాగం నేత క్లౌడ్.
బేస్ మెషీన్ల కోసం, కన్వర్జెన్స్ మెకానిజం తప్పనిసరిగా డిక్లరేటివ్ మరియు అటానమస్ అయి ఉండాలి. మన స్వంత అనుభవం నుండి మనం చెప్పగలం Terraform ఈ నిర్వచనానికి దగ్గరగా ఉంటుంది, కానీ ఇప్పటికీ మానవ నియంత్రణ అవసరం. ఈ కోణంలో, GitOps ఇన్ఫ్రాస్ట్రక్చర్ సంప్రదాయాన్ని కోడ్గా విస్తరించింది.
GitOps దోపిడీకి ఒక నమూనాను అందించడానికి కుబెర్నెటెస్ యొక్క అద్భుతమైన కన్వర్జెన్స్ ఇంజిన్తో Gitని మిళితం చేస్తుంది.
GitOps మాకు చెప్పడానికి అనుమతిస్తుంది: వర్ణించగల మరియు గమనించగల వ్యవస్థలు మాత్రమే స్వయంచాలకంగా మరియు నియంత్రించబడతాయి.
GitOps మొత్తం క్లౌడ్ స్థానిక స్టాక్ కోసం ఉద్దేశించబడింది (ఉదాహరణకు, Terraform, మొదలైనవి)
GitOps కేవలం కుబెర్నెట్స్ మాత్రమే కాదు. మొత్తం వ్యవస్థను డిక్లరేటివ్గా నడపాలని మరియు కన్వర్జెన్స్ని ఉపయోగించాలని మేము కోరుకుంటున్నాము. మొత్తం సిస్టమ్ ద్వారా మేము Kubernetes తో పని చేసే వాతావరణాల సమాహారం అని అర్థం - ఉదాహరణకు, "dev cluster 1", "production", మొదలైనవి. ప్రతి వాతావరణంలో మెషీన్లు, క్లస్టర్లు, అప్లికేషన్లు అలాగే డేటా, పర్యవేక్షణ అందించే బాహ్య సేవల కోసం ఇంటర్ఫేస్లు ఉంటాయి. మరియు మొదలైనవి
ఈ సందర్భంలో బూట్స్ట్రాపింగ్ సమస్యకు Terraform ఎంత ముఖ్యమో గమనించండి. కుబెర్నెట్లను ఎక్కడో అమలు చేయాలి మరియు టెర్రాఫార్మ్ని ఉపయోగించడం అంటే కుబెర్నెట్లు మరియు అప్లికేషన్లను ఆధారం చేసే కంట్రోల్ లేయర్ను రూపొందించడానికి మేము అదే GitOps వర్క్ఫ్లోలను వర్తింపజేయవచ్చు. ఇది ఉపయోగకరమైన ఉత్తమ అభ్యాసం.
కుబెర్నెట్స్ పైన ఉన్న లేయర్లకు GitOps భావనలను వర్తింపజేయడంపై బలమైన దృష్టి ఉంది. ప్రస్తుతానికి, Istio, Helm, Ksonnet, OpenFaaS మరియు Kubeflow కోసం GitOps-రకం పరిష్కారాలు ఉన్నాయి, అలాగే, ఉదాహరణకు, క్లౌడ్ స్థానిక కోసం అప్లికేషన్లను అభివృద్ధి చేయడానికి పొరను సృష్టించే Pulumi కోసం.
కుబెర్నెటెస్ CI/CD: GitOpsని ఇతర విధానాలతో పోల్చడం
చెప్పినట్లుగా, GitOps రెండు విషయాలు:
పైన వివరించిన కుబెర్నెట్స్ మరియు క్లౌడ్ నేటివ్ కోసం ఆపరేటింగ్ మోడల్.
చాలా మందికి, GitOps అనేది ప్రధానంగా Git పుష్ల ఆధారంగా వర్క్ఫ్లో. మాకూ ఆయనంటే ఇష్టం. కానీ అదంతా కాదు: ఇప్పుడు CI/CD పైప్లైన్లను చూద్దాం.
GitOps కుబెర్నెట్స్ కోసం నిరంతర విస్తరణ (CD)ని ప్రారంభిస్తుంది
GitOps ఒక నిరంతర విస్తరణ మెకానిజంను అందిస్తుంది, ఇది ప్రత్యేక "డిప్లాయ్మెంట్ మేనేజ్మెంట్ సిస్టమ్స్" అవసరాన్ని తొలగిస్తుంది. కుబెర్నెటెస్ మీ కోసం అన్ని పనులను చేస్తుంది.
అప్లికేషన్ను అప్డేట్ చేయడానికి Gitలో అప్డేట్ చేయాలి. ఇది కోరుకున్న స్థితికి లావాదేవీల నవీకరణ. అప్డేట్ చేయబడిన వివరణ ఆధారంగా కుబెర్నెటెస్ ద్వారా క్లస్టర్లోనే "వియోగం" చేయబడుతుంది.
కుబెర్నెట్స్ ఎలా పనిచేస్తుందో దాని స్వభావం కారణంగా, ఈ అప్డేట్లు కలుస్తాయి. ఇది అన్ని నవీకరణలు అటామిక్గా ఉండే నిరంతర విస్తరణ కోసం ఒక యంత్రాంగాన్ని అందిస్తుంది.
గమనిక: నేత క్లౌడ్ Git మరియు కుబెర్నెట్లను అనుసంధానించే GitOps ఆపరేటర్ను అందిస్తుంది మరియు క్లస్టర్ యొక్క కావలసిన మరియు ప్రస్తుత స్థితిని సరిచేయడం ద్వారా CDని అమలు చేయడానికి అనుమతిస్తుంది.
kubectl మరియు స్క్రిప్ట్లు లేకుండా
మీరు మీ క్లస్టర్ని అప్డేట్ చేయడానికి Kubectlని ఉపయోగించకుండా ఉండాలి మరియు ప్రత్యేకంగా kubectl ఆదేశాలను సమూహానికి స్క్రిప్ట్లను ఉపయోగించకుండా ఉండండి. బదులుగా, GitOps పైప్లైన్తో, ఒక వినియోగదారు Git ద్వారా వారి Kubernetes క్లస్టర్ని నవీకరించవచ్చు.
ప్రయోజనాలు ఉన్నాయి:
ప్రావిల్నోస్ట్. అప్డేట్ల సమూహాన్ని అన్వయించవచ్చు, సమ్మిళితం చేయవచ్చు మరియు చివరకు ధృవీకరించవచ్చు, ఇది పరమాణు విస్తరణ లక్ష్యానికి మమ్మల్ని చేరువ చేస్తుంది. దీనికి విరుద్ధంగా, స్క్రిప్ట్లను ఉపయోగించడం ఏ విధమైన కలయికకు హామీని అందించదు (దీనిపై దిగువన మరిన్ని).
భద్రత. కోటింగ్ Kelsey Hightower: "మీ కుబెర్నెట్స్ క్లస్టర్కి ఆటోమేషన్ సాధనాలు మరియు డీబగ్గింగ్ లేదా నిర్వహణ బాధ్యత వహించే నిర్వాహకులకు యాక్సెస్ను పరిమితం చేయండి." ఇది కూడ చూడు నా ప్రచురణ భద్రత మరియు సాంకేతిక లక్షణాలతో సమ్మతి గురించి, అలాగే హోమ్బ్రూ హ్యాకింగ్ గురించిన కథనం నిర్లక్ష్యంగా వ్రాసిన జెంకిన్స్ స్క్రిప్ట్ నుండి ఆధారాలను దొంగిలించడం ద్వారా.
వినియోగదారు అనుభవం. Kubectl కుబెర్నెట్స్ ఆబ్జెక్ట్ మోడల్ యొక్క మెకానిక్లను బహిర్గతం చేస్తుంది, ఇవి చాలా క్లిష్టంగా ఉంటాయి. ఆదర్శవంతంగా, వినియోగదారులు అధిక స్థాయి సంగ్రహణలో సిస్టమ్తో పరస్పర చర్య చేయాలి. ఇక్కడ నేను మళ్ళీ కెల్సీని సూచిస్తాను మరియు చూడమని సిఫార్సు చేస్తాను అటువంటి పునఃప్రారంభం.
CI మరియు CD మధ్య వ్యత్యాసం
GitOps ఇప్పటికే ఉన్న CI/CD మోడల్లను మెరుగుపరుస్తుంది.
ఆధునిక CI సర్వర్ అనేది ఆర్కెస్ట్రేషన్ సాధనం. ముఖ్యంగా, ఇది CI పైప్లైన్లను ఆర్కెస్ట్రేట్ చేయడానికి ఒక సాధనం. వీటిలో బిల్డ్, టెస్ట్, ట్రంక్కు విలీనం మొదలైనవి ఉన్నాయి. CI సర్వర్లు సంక్లిష్ట బహుళ-దశల పైప్లైన్ల నిర్వహణను ఆటోమేట్ చేస్తాయి. కుబెర్నెటెస్ అప్డేట్ల సెట్ను స్క్రిప్ట్ చేయడం మరియు క్లస్టర్కు మార్పులను పుష్ చేయడానికి పైప్లైన్లో భాగంగా దీన్ని అమలు చేయడం ఒక సాధారణ టెంప్టేషన్. నిజమే, చాలా మంది నిపుణులు చేసేది ఇదే. అయితే, ఇది సరైనది కాదు మరియు ఇక్కడ ఎందుకు ఉంది.
ట్రంక్కి అప్డేట్లను పుష్ చేయడానికి CIని ఉపయోగించాలి మరియు CDని అంతర్గతంగా నిర్వహించడానికి ఆ అప్డేట్ల ఆధారంగా కుబెర్నెటెస్ క్లస్టర్ స్వయంగా మారాలి. మేము దానిని పిలుస్తాము CD కోసం మోడల్ లాగండి, CI పుష్ మోడల్ కాకుండా. CD భాగం రన్టైమ్ ఆర్కెస్ట్రేషన్.
కుబెర్నెట్స్లో డైరెక్ట్ అప్డేట్ల ద్వారా CI సర్వర్లు CDలను ఎందుకు చేయకూడదు
CI ఉద్యోగాల సమితిగా Kubernetesకి నేరుగా అప్డేట్లను ఆర్కెస్ట్రేట్ చేయడానికి CI సర్వర్ని ఉపయోగించవద్దు. ఇది మేము మాట్లాడుతున్న వ్యతిరేక నమూనా ఇప్పటికే చెప్పబడింది మీ బ్లాగులో.
ఆలిస్ మరియు బాబ్కి తిరిగి వెళ్దాం.
వారు ఎలాంటి సమస్యలను ఎదుర్కొన్నారు? బాబ్ యొక్క CI సర్వర్ క్లస్టర్కు మార్పులను వర్తింపజేస్తుంది, అయితే అది ప్రక్రియలో క్రాష్ అయితే, క్లస్టర్ ఏ స్థితిలో ఉందో (లేదా ఉండాలి) లేదా దాన్ని ఎలా పరిష్కరించాలో బాబ్కి తెలియదు. విజయం విషయంలోనూ అదే నిజం.
బాబ్ బృందం ఒక కొత్త చిత్రాన్ని నిర్మించి, ఆపై చిత్రాన్ని అమలు చేయడానికి వారి విస్తరణలను ప్యాచ్ చేసిందని అనుకుందాం (అన్నీ CI పైప్లైన్ నుండి).
చిత్రం సాధారణంగా నిర్మించబడి, పైప్లైన్ విఫలమైతే, బృందం గుర్తించవలసి ఉంటుంది:
అప్డేట్ అందుబాటులోకి వచ్చిందా?
మేము కొత్త నిర్మాణాన్ని ప్రారంభిస్తున్నామా? ఇది అనవసరమైన దుష్ప్రభావాలకు దారితీస్తుందా - ఒకే మార్పులేని చిత్రం యొక్క రెండు నిర్మాణాలను కలిగి ఉండే అవకాశం ఉందా?
బిల్డ్ని అమలు చేయడానికి ముందు మేము తదుపరి నవీకరణ కోసం వేచి ఉండాలా?
సరిగ్గా ఏమి తప్పు జరిగింది? ఏ దశలను పునరావృతం చేయాలి (మరియు ఏవి పునరావృతం చేయడం సురక్షితం)?
Git-ఆధారిత వర్క్ఫ్లోను ఏర్పాటు చేయడం వలన బాబ్ బృందం ఈ సమస్యలను ఎదుర్కోదని హామీ ఇవ్వదు. కమిట్ పుష్, ట్యాగ్ లేదా ఇతర పరామితితో వారు ఇప్పటికీ పొరపాటు చేయవచ్చు; అయినప్పటికీ, ఈ విధానం ఇప్పటికీ స్పష్టమైన అన్నీ లేదా ఏమీ లేని విధానానికి చాలా దగ్గరగా ఉంది.
సంగ్రహంగా చెప్పాలంటే, CI సర్వర్లు CDతో ఎందుకు వ్యవహరించకూడదో ఇక్కడ ఉంది:
నవీకరణ స్క్రిప్ట్లు ఎల్లప్పుడూ నిర్ణయాత్మకమైనవి కావు; వాటిలో తప్పులు చేయడం సులభం.
CI సర్వర్లు డిక్లరేటివ్ క్లస్టర్ మోడల్కు కలుస్తాయి.
బలహీనతకు హామీ ఇవ్వడం కష్టం. వినియోగదారులు సిస్టమ్ యొక్క లోతైన అర్థాలను అర్థం చేసుకోవాలి.
పాక్షిక వైఫల్యం నుండి కోలుకోవడం చాలా కష్టం.
హెల్మ్ గురించి గమనిక: మీరు హెల్మ్ని ఉపయోగించాలనుకుంటే, దానిని GitOps ఆపరేటర్తో కలపమని మేము సిఫార్సు చేస్తున్నాము ఫ్లక్స్-హెల్మ్. ఇది కలయికను నిర్ధారించడంలో సహాయపడుతుంది. హెల్మ్ అనేది నిర్ణయాత్మకమైనది లేదా పరమాణువు కాదు.
కుబెర్నెట్స్ కోసం నిరంతర డెలివరీని అమలు చేయడానికి GitOps ఉత్తమ మార్గం
ఆలిస్ మరియు బాబ్ బృందం GitOpsను అమలు చేస్తుంది మరియు సాఫ్ట్వేర్ ఉత్పత్తులతో పని చేయడం, అధిక పనితీరు మరియు స్థిరత్వాన్ని కొనసాగించడం చాలా సులభతరంగా మారిందని కనుగొన్నారు. వారి కొత్త విధానం ఎలా ఉంటుందో చూపించే దృష్టాంతంతో ఈ కథనాన్ని ముగిద్దాం. మేము ఎక్కువగా అప్లికేషన్లు మరియు సేవల గురించి మాట్లాడుతున్నామని గుర్తుంచుకోండి, అయితే GitOps మొత్తం ప్లాట్ఫారమ్ను నిర్వహించడానికి ఉపయోగించవచ్చు.
Kubernetes కోసం ఆపరేటింగ్ మోడల్
కింది రేఖాచిత్రాన్ని చూడండి. ఇది Git మరియు కంటైనర్ ఇమేజ్ రిపోజిటరీని రెండు ఆర్కెస్ట్రేటెడ్ లైఫ్సైకిల్స్ కోసం షేర్డ్ రిసోర్స్లుగా అందిస్తుంది:
Gitకి ఫైల్లను చదవడం మరియు వ్రాయడం మరియు కంటైనర్ ఇమేజ్ల రిపోజిటరీని అప్డేట్ చేయగల నిరంతర ఏకీకరణ పైప్లైన్.
నిర్వహణ మరియు పరిశీలనతో విస్తరణను మిళితం చేసే రన్టైమ్ GitOps పైప్లైన్. ఇది Gitకి ఫైల్లను చదువుతుంది మరియు వ్రాస్తుంది మరియు కంటైనర్ చిత్రాలను డౌన్లోడ్ చేయగలదు.
ప్రధాన ఫలితాలు ఏమిటి?
ఆందోళనల విభజన: రెండు పైప్లైన్లు Git లేదా ఇమేజ్ రిపోజిటరీని నవీకరించడం ద్వారా మాత్రమే కమ్యూనికేట్ చేయగలవని దయచేసి గమనించండి. మరో మాటలో చెప్పాలంటే, CI మరియు రన్టైమ్ వాతావరణం మధ్య ఫైర్వాల్ ఉంది. మేము దీనిని "ఇమ్యుటబిలిటీ ఫైర్వాల్" అని పిలుస్తాము. (మార్పులేని ఫైర్వాల్), అన్ని రిపోజిటరీ నవీకరణలు కొత్త సంస్కరణలను సృష్టిస్తాయి కాబట్టి. ఈ అంశంపై మరింత సమాచారం కోసం, స్లయిడ్లు 72-87ని చూడండి ఈ ప్రదర్శన.
మీరు ఏదైనా CI మరియు Git సర్వర్ని ఉపయోగించవచ్చు: GitOps ఏదైనా భాగంతో పని చేస్తుంది. మీరు మీకు ఇష్టమైన CI మరియు Git సర్వర్లు, ఇమేజ్ రిపోజిటరీలు మరియు టెస్ట్ సూట్లను ఉపయోగించడం కొనసాగించవచ్చు. మార్కెట్లోని దాదాపు అన్ని ఇతర నిరంతర డెలివరీ సాధనాలకు వాటి స్వంత CI/Git సర్వర్ లేదా ఇమేజ్ రిపోజిటరీ అవసరం. ఇది క్లౌడ్ స్థానిక అభివృద్ధిలో పరిమితి కారకంగా మారవచ్చు. GitOpsతో, మీరు తెలిసిన సాధనాలను ఉపయోగించవచ్చు.
ఈవెంట్లు ఇంటిగ్రేషన్ సాధనంగా: Gitలో డేటా నవీకరించబడిన వెంటనే, వీవ్ ఫ్లక్స్ (లేదా వీవ్ క్లౌడ్ ఆపరేటర్) రన్టైమ్ను తెలియజేస్తుంది. కుబెర్నెటెస్ మార్పు సెట్ను అంగీకరించినప్పుడల్లా, Git నవీకరించబడుతుంది. దిగువ చూపిన విధంగా GitOps కోసం వర్క్ఫ్లోలను నిర్వహించడం కోసం ఇది సరళమైన ఇంటిగ్రేషన్ మోడల్ను అందిస్తుంది.
తీర్మానం
ఏదైనా ఆధునిక CI/CD సాధనానికి అవసరమైన బలమైన నవీకరణ హామీలను GitOps అందిస్తుంది:
ఆటోమేషన్;
కన్వర్జెన్స్;
బలహీనత;
నిర్ణయాత్మకత.
ఇది ముఖ్యమైనది ఎందుకంటే ఇది క్లౌడ్ స్థానిక డెవలపర్ల కోసం కార్యాచరణ నమూనాను అందిస్తుంది.
సిస్టమ్ల నిర్వహణ మరియు పర్యవేక్షణ కోసం సాంప్రదాయ సాధనాలు రన్బుక్లో పనిచేసే ఆపరేషన్స్ టీమ్లతో అనుబంధించబడి ఉంటాయి (రొటీన్ విధానాలు మరియు కార్యకలాపాల సమితి - సుమారుగా. అనువాదం.), నిర్దిష్ట విస్తరణతో ముడిపడి ఉంది.
క్లౌడ్ స్థానిక నిర్వహణలో, విస్తరణల ఫలితాలను కొలవడానికి పరిశీలనా సాధనాలు ఉత్తమ మార్గం, తద్వారా అభివృద్ధి బృందం త్వరగా ప్రతిస్పందిస్తుంది.
వారి స్వంత బృందాలు మరియు విస్తరణ ప్రణాళికలతో వివిధ క్లౌడ్లు మరియు అనేక సేవలలో చెల్లాచెదురుగా ఉన్న అనేక క్లస్టర్లను ఊహించుకోండి. ఈ సమృద్ధిని నిర్వహించడానికి GitOps స్కేల్-ఇన్వేరియంట్ మోడల్ను అందిస్తుంది.