డాకర్తో నిరంతర డెలివరీ పద్ధతులు (సమీక్ష మరియు వీడియో)
మా సాంకేతిక దర్శకుడి తాజా ప్రసంగాల ఆధారంగా మేము మా బ్లాగును ప్రచురణలతో ప్రారంభిస్తాము డిస్టోల్ (డిమిత్రి స్టోలియారోవ్). అవన్నీ 2016లో వివిధ వృత్తిపరమైన కార్యక్రమాలలో జరిగాయి మరియు DevOps మరియు డాకర్ అంశానికి అంకితం చేయబడ్డాయి. Badoo కార్యాలయంలో డాకర్ మాస్కో సమావేశం నుండి ఒక వీడియో, మేము ఇప్పటికే కలిగి ఉన్నాము ప్రచురించబడింది ఆన్లైన్. కొత్త వాటితో పాటు నివేదికల సారాంశాన్ని తెలియజేసే కథనాలు ఉంటాయి. కాబట్టి…
మే 31 సదస్సులో రూట్కాన్ఫ్ 2016, పండుగ "రష్యన్ ఇంటర్నెట్ టెక్నాలజీస్" (RIT++ 2016)లో భాగంగా నిర్వహించబడింది, "నిరంతర విస్తరణ మరియు విస్తరణ" విభాగం "డాకర్తో నిరంతర డెలివరీ యొక్క ఉత్తమ పద్ధతులు" నివేదికతో ప్రారంభించబడింది. ఇది డాకర్ మరియు ఇతర ఓపెన్ సోర్స్ ఉత్పత్తులను ఉపయోగించి నిరంతర డెలివరీ (CD) ప్రక్రియను రూపొందించడానికి ఉత్తమ పద్ధతులను సంగ్రహించి మరియు క్రమబద్ధీకరించింది. మేము ఉత్పత్తిలో ఈ పరిష్కారాలతో పని చేస్తాము, ఇది ఆచరణాత్మక అనుభవంపై ఆధారపడటానికి అనుమతిస్తుంది.
మీకు ఒక గంట గడపడానికి అవకాశం ఉంటే నివేదిక యొక్క వీడియో, దీన్ని పూర్తిగా చూడాలని మేము సిఫార్సు చేస్తున్నాము. లేకపోతే, టెక్స్ట్ రూపంలో ప్రధాన సారాంశం క్రింద ఉంది.
డాకర్తో నిరంతర డెలివరీ
కింద నిరంతర డెలివరీ Git రిపోజిటరీ నుండి అప్లికేషన్ కోడ్ మొదట ఉత్పత్తికి వచ్చి, ఆపై ఆర్కైవ్లో ముగుస్తుంది కాబట్టి మేము ఈవెంట్ల గొలుసును అర్థం చేసుకున్నాము. ఆమె ఇలా కనిపిస్తుంది: Git → బిల్డ్ → టెస్ట్ → విడుదల → ఆపరేట్.
నివేదికలో ఎక్కువ భాగం బిల్డ్ స్టేజ్ (అప్లికేషన్ అసెంబ్లీ)కి అంకితం చేయబడింది మరియు టాపిక్స్ విడుదల మరియు ఆపరేట్ క్లుప్తంగా తాకడం జరిగింది. మేము వాటిని పరిష్కరించడానికి మిమ్మల్ని అనుమతించే సమస్యలు మరియు నమూనాల గురించి మాట్లాడుతాము మరియు ఈ నమూనాల నిర్దిష్ట అమలులు భిన్నంగా ఉండవచ్చు.
ఇక్కడ డాకర్ ఎందుకు అవసరం? ఈ ఓపెన్ సోర్స్ సాధనం సందర్భంలో మేము నిరంతర డెలివరీ పద్ధతుల గురించి మాట్లాడాలని నిర్ణయించుకున్నాము. మొత్తం నివేదిక దాని వినియోగానికి అంకితం చేయబడినప్పటికీ, అప్లికేషన్ కోడ్ రోల్అవుట్ యొక్క ప్రధాన నమూనాను పరిగణనలోకి తీసుకున్నప్పుడు అనేక కారణాలు వెల్లడయ్యాయి.
ప్రధాన రోల్అవుట్ నమూనా
కాబట్టి, మేము అప్లికేషన్ యొక్క కొత్త వెర్షన్లను విడుదల చేసినప్పుడు, మేము ఖచ్చితంగా ఎదుర్కొంటాము పనికిరాని సమస్య, ఉత్పత్తి సర్వర్ మారే సమయంలో ఉత్పత్తి చేయబడింది. అప్లికేషన్ యొక్క పాత వెర్షన్ నుండి కొత్తదానికి ట్రాఫిక్ తక్షణమే మారదు: ముందుగా మనం కొత్త వెర్షన్ విజయవంతంగా డౌన్లోడ్ చేయబడటమే కాకుండా, “వేడెక్కింది” (అంటే, అభ్యర్థనలను అందించడానికి పూర్తిగా సిద్ధంగా ఉంది) అని నిర్ధారించుకోవాలి.
అందువలన, కొంత సమయం వరకు అప్లికేషన్ యొక్క రెండు వెర్షన్లు (పాత మరియు కొత్తవి) ఏకకాలంలో పని చేస్తాయి. ఇది స్వయంచాలకంగా దారి తీస్తుంది భాగస్వామ్య వనరుల సంఘర్షణ: నెట్వర్క్, ఫైల్ సిస్టమ్, IPC మొదలైనవి. డాకర్తో, అప్లికేషన్ యొక్క విభిన్న వెర్షన్లను ప్రత్యేక కంటైనర్లలో అమలు చేయడం ద్వారా ఈ సమస్య సులభంగా పరిష్కరించబడుతుంది, దీని కోసం ఒకే హోస్ట్ (సర్వర్/వర్చువల్ మెషీన్)లో వనరు ఐసోలేషన్ హామీ ఇవ్వబడుతుంది. వాస్తవానికి, మీరు ఇన్సులేషన్ లేకుండా కొన్ని ఉపాయాలతో పొందవచ్చు, కానీ రెడీమేడ్ మరియు అనుకూలమైన సాధనం ఉంటే, వ్యతిరేక కారణం ఉంది - దానిని నిర్లక్ష్యం చేయకూడదు.
కంటెయినరైజేషన్ అమలు చేసినప్పుడు అనేక ఇతర ప్రయోజనాలను అందిస్తుంది. ఏదైనా అప్లికేషన్ ఆధారపడి ఉంటుంది నిర్దిష్ట వెర్షన్ (లేదా సంస్కరణ పరిధి) వ్యాఖ్యాత, మాడ్యూల్స్/ఎక్స్టెన్షన్ల లభ్యత మొదలైనవి, అలాగే వాటి వెర్షన్లు. మరియు ఇది వెంటనే అమలు చేయగల పర్యావరణానికి మాత్రమే కాకుండా, మొత్తం పర్యావరణానికి కూడా వర్తిస్తుంది సిస్టమ్ సాఫ్ట్వేర్ మరియు దాని వెర్షన్ (ఉపయోగించిన Linux పంపిణీ వరకు). కంటైనర్లు అప్లికేషన్ కోడ్ను మాత్రమే కాకుండా, ముందుగా ఇన్స్టాల్ చేసిన సిస్టమ్ మరియు అవసరమైన సంస్కరణల అప్లికేషన్ సాఫ్ట్వేర్ను కలిగి ఉన్నందున, మీరు డిపెండెన్సీలతో సమస్యల గురించి మరచిపోవచ్చు.
సారాంశం చేద్దాం ప్రధాన రోల్అవుట్ నమూనా కింది అంశాలను పరిగణనలోకి తీసుకుని కొత్త సంస్కరణలు:
మొదట, అప్లికేషన్ యొక్క పాత వెర్షన్ మొదటి కంటైనర్లో నడుస్తుంది.
కొత్త వెర్షన్ తర్వాత రోల్ అవుట్ చేయబడింది మరియు రెండవ కంటైనర్లో "వేడెక్కుతుంది". ఈ కొత్త వెర్షన్ అప్డేట్ చేయబడిన అప్లికేషన్ కోడ్ను మాత్రమే కాకుండా, దాని డిపెండెన్సీలలో దేనినైనా అలాగే సిస్టమ్ కాంపోనెంట్లను (ఉదాహరణకు, OpenSSL యొక్క కొత్త వెర్షన్ లేదా మొత్తం పంపిణీ) కలిగి ఉండటం గమనార్హం.
అభ్యర్థనలను అందించడానికి కొత్త వెర్షన్ పూర్తిగా సిద్ధంగా ఉన్నప్పుడు, ట్రాఫిక్ మొదటి కంటైనర్ నుండి రెండవదానికి మారుతుంది.
పాత సంస్కరణను ఇప్పుడు నిలిపివేయవచ్చు.
ప్రత్యేక కంటైనర్లలో అప్లికేషన్ యొక్క విభిన్న సంస్కరణలను అమలు చేసే ఈ విధానం మరొక సౌలభ్యాన్ని అందిస్తుంది - త్వరిత రోల్బ్యాక్ పాత సంస్కరణకు (అన్ని తరువాత, కావలసిన కంటైనర్కు ట్రాఫిక్ను మార్చడం సరిపోతుంది).
చివరి మొదటి సిఫార్సులో కెప్టెన్ కూడా తప్పు కనుగొనలేకపోయాడు: "[డాకర్తో నిరంతర డెలివరీని నిర్వహిస్తున్నప్పుడు]డాకర్ ఉపయోగించండి[మరియు అది ఏమి ఇస్తుందో అర్థం చేసుకోండి]" గుర్తుంచుకోండి, ఇది ప్రతి సమస్యను పరిష్కరించే వెండి బుల్లెట్ కాదు, కానీ అద్భుతమైన పునాదిని అందించే సాధనం.
పునరుత్పత్తి
“పునరుత్పత్తి” అంటే అప్లికేషన్లను ఆపరేట్ చేస్తున్నప్పుడు ఎదురయ్యే సాధారణీకరించిన సమస్యల సమితి. మేము అటువంటి కేసుల గురించి మాట్లాడుతున్నాము:
స్టేజింగ్ కోసం నాణ్యత విభాగం తనిఖీ చేసిన స్క్రిప్ట్లు ఖచ్చితంగా ఉత్పత్తిలో పునరుత్పత్తి చేయబడాలి.
వివిధ రిపోజిటరీ మిర్రర్ల నుండి ప్యాకేజీలను స్వీకరించగల సర్వర్లలో అప్లికేషన్లు ప్రచురించబడతాయి (కాలక్రమేణా అవి నవీకరించబడతాయి మరియు వాటితో ఇన్స్టాల్ చేయబడిన అప్లికేషన్ల వెర్షన్లు).
"ప్రతిదీ స్థానికంగా నాకు పని చేస్తుంది!" (...మరియు డెవలపర్లు ఉత్పత్తికి అనుమతించబడరు.)
మీరు పాత (ఆర్కైవ్ చేసిన) సంస్కరణలో ఏదైనా తనిఖీ చేయాలి.
...
వారి సాధారణ సారాంశం ఉపయోగించిన పరిసరాల యొక్క పూర్తి సమ్మతి (అలాగే మానవ కారకం లేకపోవటం) అవసరం అనే వాస్తవాన్ని మరుగుతుంది. పునరుత్పత్తికి మేము ఎలా హామీ ఇవ్వగలము? డాకర్ చిత్రాలను రూపొందించండి Git నుండి కోడ్ ఆధారంగా, ఆపై వాటిని ఏదైనా పని కోసం ఉపయోగించండి: టెస్ట్ సైట్లలో, ఉత్పత్తిలో, ప్రోగ్రామర్ల స్థానిక యంత్రాలపై... అదే సమయంలో, నిర్వహించబడే చర్యలను తగ్గించడం చాలా ముఖ్యం. после చిత్రాన్ని సమీకరించడం: ఇది సరళమైనది, లోపాలు తక్కువగా ఉంటాయి.
మౌలిక సదుపాయాలు కోడ్
ఇన్ఫ్రాస్ట్రక్చర్ అవసరాలు (సర్వర్ సాఫ్ట్వేర్ లభ్యత, దాని వెర్షన్ మొదలైనవి) అధికారికంగా మరియు “ప్రోగ్రామ్” చేయకపోతే, ఏదైనా అప్లికేషన్ అప్డేట్ రోల్ అవుట్ వినాశకరమైన పరిణామాలకు దారి తీస్తుంది. ఉదాహరణకు, స్టేజింగ్లో మీరు ఇప్పటికే PHP 7.0కి మారారు మరియు తదనుగుణంగా కోడ్ను తిరిగి వ్రాసారు - అప్పుడు కొన్ని పాత PHP (5.5)తో ఉత్పత్తిలో దాని ప్రదర్శన ఖచ్చితంగా ఎవరినైనా ఆశ్చర్యపరుస్తుంది. ఇంటర్ప్రెటర్ వెర్షన్లో పెద్ద మార్పు గురించి మీరు మరచిపోలేరు, కానీ “డెవిల్ ఇన్ ది డిటైల్స్”: ఆశ్చర్యం ఏదైనా డిపెండెన్సీకి సంబంధించిన చిన్న అప్డేట్లో ఉండవచ్చు.
ఈ సమస్యను పరిష్కరించడానికి ఒక విధానాన్ని అంటారు IaC (ఇన్ఫ్రాస్ట్రక్చర్ను కోడ్గా, “ఇన్ఫ్రాస్ట్రక్చర్ను కోడ్గా”) మరియు అప్లికేషన్ కోడ్తో పాటు మౌలిక సదుపాయాల అవసరాలను నిల్వ చేస్తుంది. దీన్ని ఉపయోగించి, డెవలపర్లు మరియు DevOps నిపుణులు ఒకే Git అప్లికేషన్ రిపోజిటరీతో పని చేయవచ్చు, కానీ దానిలోని వివిధ భాగాలపై. ఈ కోడ్ నుండి, Gitలో డాకర్ చిత్రం సృష్టించబడుతుంది, దీనిలో మౌలిక సదుపాయాల యొక్క అన్ని ప్రత్యేకతలను పరిగణనలోకి తీసుకొని అప్లికేషన్ అమలు చేయబడుతుంది. సరళంగా చెప్పాలంటే, చిత్రాలను అసెంబ్లింగ్ చేయడానికి స్క్రిప్ట్లు (నియమాలు) సోర్స్ కోడ్తో ఒకే రిపోజిటరీలో ఉండాలి మరియు కలిసి విలీనం చేయాలి.
బహుళ-లేయర్ అప్లికేషన్ ఆర్కిటెక్చర్ విషయంలో - ఉదాహరణకు, డాకర్ కంటైనర్లో ఇప్పటికే అమలవుతున్న అప్లికేషన్ ముందు nginx ఉంది - ప్రతి లేయర్ కోసం Gitలోని కోడ్ నుండి డాకర్ ఇమేజ్లు తప్పనిసరిగా సృష్టించబడాలి. అప్పుడు మొదటి చిత్రం ఇంటర్ప్రెటర్ మరియు ఇతర “క్లోజ్” డిపెండెన్సీలతో కూడిన అప్లికేషన్ను కలిగి ఉంటుంది మరియు రెండవ చిత్రం అప్స్ట్రీమ్ nginxని కలిగి ఉంటుంది.
డాకర్ చిత్రాలు, Gitతో కమ్యూనికేషన్
మేము Git నుండి సేకరించిన అన్ని డాకర్ చిత్రాలను రెండు వర్గాలుగా విభజిస్తాము: తాత్కాలిక మరియు విడుదల. తాత్కాలిక చిత్రాలు Gitలో బ్రాంచ్ పేరుతో ట్యాగ్ చేయబడి, తదుపరి కమిట్తో భర్తీ చేయవచ్చు మరియు ప్రివ్యూ కోసం మాత్రమే రూపొందించబడుతుంది (ఉత్పత్తి కోసం కాదు). విడుదలైన వాటి నుండి ఇది వారి ప్రధాన వ్యత్యాసం: వాటిలో ఏ నిర్దిష్ట కమిట్ ఉందో మీకు ఎప్పటికీ తెలియదు.
ఇది తాత్కాలిక చిత్రాలలో సేకరించడానికి అర్ధమే: మాస్టర్ బ్రాంచ్ (మాస్టర్ యొక్క ప్రస్తుత సంస్కరణను నిరంతరం చూడటానికి మీరు దానిని స్వయంచాలకంగా ప్రత్యేక సైట్కు రోల్ చేయవచ్చు), విడుదలలతో కూడిన శాఖలు, నిర్దిష్ట ఆవిష్కరణల శాఖలు.
తాత్కాలిక చిత్రాల ప్రివ్యూ ఉత్పత్తికి అనువాదం అవసరం వచ్చిన తర్వాత, డెవలపర్లు ఒక నిర్దిష్ట ట్యాగ్ను ఉంచారు. ట్యాగ్ ద్వారా స్వయంచాలకంగా సేకరించబడుతుంది చిత్రం విడుదల (దాని ట్యాగ్ Git నుండి వచ్చిన ట్యాగ్కు అనుగుణంగా ఉంటుంది) మరియు స్టేజింగ్కు వెళ్లింది. ఇది నాణ్యత విభాగం ద్వారా విజయవంతంగా ధృవీకరించబడితే, అది ఉత్పత్తికి వెళుతుంది.
డప్
వివరించిన ప్రతిదీ (రోల్అవుట్, ఇమేజ్ అసెంబ్లీ, తదుపరి నిర్వహణ) బాష్ స్క్రిప్ట్లు మరియు ఇతర "మెరుగైన" సాధనాలను ఉపయోగించి స్వతంత్రంగా అమలు చేయబడుతుంది. కానీ మీరు ఇలా చేస్తే, ఏదో ఒక సమయంలో అమలు చాలా సంక్లిష్టత మరియు పేద నియంత్రణకు దారి తీస్తుంది. దీన్ని అర్థం చేసుకుని, మేము CI/CDని నిర్మించడానికి మా స్వంత ప్రత్యేక వర్క్ఫ్లో యుటిలిటీని రూపొందించడానికి వచ్చాము - డప్.
దీని సోర్స్ కోడ్ రూబీలో వ్రాయబడింది, ఓపెన్ సోర్స్ మరియు ప్రచురించబడింది గ్యాలరీలు. దురదృష్టవశాత్తూ, డాక్యుమెంటేషన్ ప్రస్తుతం సాధనం యొక్క బలహీనమైన అంశం, కానీ మేము దానిపై పని చేస్తున్నాము. మరియు మేము డాప్ గురించి ఒకటి కంటే ఎక్కువసార్లు వ్రాస్తాము మరియు మాట్లాడతాము, ఎందుకంటే... ఆసక్తి ఉన్న మొత్తం సంఘంతో దాని సామర్థ్యాలను పంచుకోవడానికి మేము హృదయపూర్వకంగా వేచి ఉండలేము, అయితే ఈలోగా, మీ సమస్యలను పంపండి మరియు అభ్యర్థనలను లాగండి మరియు/లేదా GitHubలో ప్రాజెక్ట్ అభివృద్ధిని అనుసరించండి.
ఆగస్టు 13, 2019న నవీకరించబడింది: ప్రస్తుతం ఒక ప్రాజెక్ట్ డప్ పేరు మార్చబడింది వర్ఫ్, దాని కోడ్ పూర్తిగా గోలో తిరిగి వ్రాయబడింది మరియు దాని డాక్యుమెంటేషన్ గణనీయంగా మెరుగుపరచబడింది.
Kubernetes
వృత్తిపరమైన వాతావరణంలో ఇప్పటికే గణనీయమైన గుర్తింపును పొందిన మరొక రెడీమేడ్ ఓపెన్ సోర్స్ సాధనం Kubernetes,డాకర్ మేనేజ్మెంట్ క్లస్టర్. డాకర్పై నిర్మించిన ప్రాజెక్ట్ల ఆపరేషన్లో దాని ఉపయోగం యొక్క అంశం నివేదిక పరిధికి మించినది, కాబట్టి ప్రదర్శన కొన్ని ఆసక్తికరమైన లక్షణాల యొక్క అవలోకనానికి పరిమితం చేయబడింది.
రోల్ అవుట్ కోసం, Kubernetes ఆఫర్లు:
సంసిద్ధత ప్రోబ్ - అప్లికేషన్ యొక్క కొత్త వెర్షన్ యొక్క సంసిద్ధతను తనిఖీ చేయడం (దీనికి ట్రాఫిక్ని మార్చడానికి);
రోలింగ్ అప్డేట్ - కంటైనర్ల క్లస్టర్లో సీక్వెన్షియల్ ఇమేజ్ అప్డేట్ (షట్డౌన్, అప్డేట్, లాంచ్ కోసం ప్రిపరేషన్, ట్రాఫిక్ మారడం);
సమకాలీకరణ నవీకరణ - వేరొక విధానంతో క్లస్టర్లో చిత్రాన్ని నవీకరించడం: మొదట సగం కంటైనర్లలో, తర్వాత మిగిలిన వాటిపై;
కానరీ విడుదలలు - క్రమరాహిత్యాలను పర్యవేక్షించడానికి పరిమిత (చిన్న) సంఖ్యలో కంటైనర్లపై కొత్త చిత్రాన్ని ప్రారంభించడం.
కంటిన్యూయస్ డెలివరీ అనేది కొత్త వెర్షన్ విడుదల మాత్రమే కాదు, కుబెర్నెటెస్కు తదుపరి మౌలిక సదుపాయాల నిర్వహణకు అనేక అవకాశాలు ఉన్నాయి: అంతర్నిర్మిత పర్యవేక్షణ మరియు అన్ని కంటైనర్ల కోసం లాగింగ్, ఆటోమేటిక్ స్కేలింగ్ మొదలైనవి. ఇవన్నీ ఇప్పటికే పని చేస్తున్నాయి మరియు సరైన కోసం వేచి ఉన్నాయి. మీ ప్రక్రియలలో అమలు.
తుది సిఫార్సులు
డాకర్ ఉపయోగించండి.
మీ అన్ని అవసరాల కోసం అప్లికేషన్ల డాకర్ చిత్రాలను సృష్టించండి.
“మౌలిక సదుపాయాలు కోడ్” అనే సూత్రాన్ని అనుసరించండి.
Gitని డాకర్కి లింక్ చేయండి.
రోల్అవుట్ క్రమాన్ని నియంత్రించండి.
రెడీమేడ్ ప్లాట్ఫారమ్ (కుబెర్నెట్స్ లేదా మరొకటి) ఉపయోగించండి.
వీడియోలు మరియు స్లయిడ్లు
ప్రదర్శన నుండి వీడియో (సుమారు గంట) YouTubeలో ప్రచురించబడింది(నివేదిక 5వ నిమిషం నుండి ప్రారంభమవుతుంది - ఈ క్షణం నుండి ప్లే చేయడానికి లింక్ని అనుసరించండి).