వెర్ఫ్‌లో మోనోరెపో మరియు మల్టీరెపోకు మద్దతు మరియు డాకర్ రిజిస్ట్రీ దానితో ఏమి చేయాలి

వెర్ఫ్‌లో మోనోరెపో మరియు మల్టీరెపోకు మద్దతు మరియు డాకర్ రిజిస్ట్రీ దానితో ఏమి చేయాలి

మోనో-రిపోజిటరీ అంశం ఒకటి కంటే ఎక్కువసార్లు చర్చించబడింది మరియు ఒక నియమం వలె చాలా చురుకైన వివాదానికి కారణమవుతుంది. సృష్టించడం ద్వారా వర్ఫ్ Git నుండి డాకర్ చిత్రాలకు అప్లికేషన్ కోడ్‌ను రూపొందించే ప్రక్రియను మెరుగుపరచడానికి రూపొందించబడిన ఓపెన్ సోర్స్ సాధనం (తర్వాత వాటిని కుబెర్నెట్‌లకు డెలివరీ చేయడం), ఏ ఎంపిక ఉత్తమమో మేము పెద్దగా ఆలోచించము. మాకు, విభిన్న అభిప్రాయాల మద్దతుదారులకు అవసరమైన ప్రతిదాన్ని అందించడం ప్రాథమికమైనది (ఇది ఇంగితజ్ఞానానికి విరుద్ధంగా లేకపోతే, వాస్తవానికి).

werf యొక్క ఇటీవలి మోనో-రెపో మద్దతు దీనికి మంచి ఉదాహరణ. అయితే ముందుగా, ఈ సపోర్ట్ సాధారణంగా వెర్ఫ్‌ని ఉపయోగించడం మరియు డాకర్ రిజిస్ట్రీకి దానితో ఎలా సంబంధం కలిగి ఉందో తెలుసుకుందాం ...

సమస్యలు

అలాంటి పరిస్థితిని ఊహించుకుందాం. సంస్థ స్వతంత్ర ప్రాజెక్టులపై పనిచేసే అనేక అభివృద్ధి బృందాలను కలిగి ఉంది. చాలా అప్లికేషన్‌లు కుబెర్నెట్స్‌లో రన్ అవుతాయి కాబట్టి అవి కంటెయినరైజ్ చేయబడతాయి. కంటైనర్లు, చిత్రాలను నిల్వ చేయడానికి, మీకు రిజిస్ట్రీ (రిజిస్ట్రీ) అవసరం. అటువంటి రిజిస్ట్రీగా, కంపెనీ ఒకే ఖాతాతో డాకర్ హబ్‌ని ఉపయోగిస్తుంది COMPANY. చాలా సోర్స్ కోడ్ నిల్వ సిస్టమ్‌ల మాదిరిగానే, డాకర్ హబ్ నెస్టెడ్ రిపోజిటరీ సోపానక్రమాన్ని అనుమతించదు, వంటి COMPANY/PROJECT/IMAGE. అలాంటప్పుడు... ప్రతి ప్రాజెక్ట్‌కి ప్రత్యేక ఖాతాను సృష్టించకుండానే మీరు ఈ పరిమితితో ఏకశిలా కాని అప్లికేషన్‌లను రిజిస్ట్రీలో ఎలా నిల్వ చేయవచ్చు?

వెర్ఫ్‌లో మోనోరెపో మరియు మల్టీరెపోకు మద్దతు మరియు డాకర్ రిజిస్ట్రీ దానితో ఏమి చేయాలి

బహుశా, వివరించిన పరిస్థితి ఎవరికైనా ప్రత్యక్షంగా తెలిసి ఉండవచ్చు, కానీ సాధారణంగా అప్లికేషన్ నిల్వను నిర్వహించే సమస్యను పరిశీలిద్దాం, అనగా. పై ఉదాహరణ మరియు డాకర్ హబ్‌ని ప్రస్తావించకుండా.

పరిష్కారాలు

అప్లికేషన్ ఉంటే ఏకశిలా, ఒక చిత్రంలో వస్తుంది, ఆపై ప్రశ్నలు లేవు మరియు మేము చిత్రాలను ప్రాజెక్ట్ యొక్క కంటైనర్ రిజిస్ట్రీకి సేవ్ చేస్తాము.

ఒక అప్లికేషన్ బహుళ భాగాలుగా సమర్పించబడినప్పుడు, సూక్ష్మసేవలు, అప్పుడు ఒక నిర్దిష్ట విధానం అవసరం. రెండు చిత్రాలతో కూడిన సాధారణ వెబ్ అప్లికేషన్ యొక్క ఉదాహరణలో: frontend и backend - సాధ్యమయ్యే ఎంపికలు:

  1. చిత్రాలను ప్రత్యేక సమూహ రిపోజిటరీలలో నిల్వ చేయండి:

    వెర్ఫ్‌లో మోనోరెపో మరియు మల్టీరెపోకు మద్దతు మరియు డాకర్ రిజిస్ట్రీ దానితో ఏమి చేయాలి

  2. అన్నింటినీ ఒకే రిపోజిటరీలో నిల్వ చేయండి మరియు ట్యాగ్‌లోని చిత్రం పేరును పరిగణించండి, ఉదాహరణకు, ఈ క్రింది విధంగా:

    వెర్ఫ్‌లో మోనోరెపో మరియు మల్టీరెపోకు మద్దతు మరియు డాకర్ రిజిస్ట్రీ దానితో ఏమి చేయాలి

NB: వాస్తవానికి, వివిధ రిపోజిటరీలలో సేవ్ చేయడానికి మరొక ఎంపిక ఉంది, PROJECT-frontend и PROJECT-backend, కానీ వినియోగదారుల మధ్య మద్దతు, సంస్థ మరియు హక్కుల పంపిణీ సంక్లిష్టత కారణంగా మేము దీనిని పరిగణించము.

werf మద్దతు

మొదట్లో, వెర్ఫ్ తనని తాను సమూహ రిపోజిటరీలకు పరిమితం చేసింది - అదృష్టవశాత్తూ, చాలా రిజిస్ట్రీలు ఈ లక్షణానికి మద్దతు ఇస్తాయి. వెర్షన్ నుండి ప్రారంభమవుతుంది v1.0.4-alpha.3, రిజిస్ట్రీలతో పనిని జోడించారు గూడుకు మద్దతు లేదు, మరియు డాకర్ హబ్ వాటిలో ఒకటి. అప్పటి నుండి, అప్లికేషన్ చిత్రాలను ఎలా నిల్వ చేయాలనే ఎంపిక వినియోగదారుకు ఉంటుంది.

ఎంపిక కింద అమలు అందుబాటులో ఉంది --images-repo-mode=multirepo|monorepo (డిఫాల్ట్ multirepo, అనగా సమూహ రిపోజిటరీలలో నిల్వ). ఇది రిజిస్ట్రీలో చిత్రాలు నిల్వ చేయబడే నమూనాలను నిర్వచిస్తుంది. ప్రాథమిక ఆదేశాలను ఉపయోగిస్తున్నప్పుడు కావలసిన మోడ్‌ను ఎంచుకోవడం సరిపోతుంది మరియు మిగతావన్నీ మారవు.

ఎందుకంటే చాలా వెర్ఫ్ ఎంపికలను సెట్ చేయవచ్చు పర్యావరణం వేరియబుల్స్, CI / CD సిస్టమ్‌లలో, స్టోరేజ్ మోడ్ సాధారణంగా మొత్తం ప్రాజెక్ట్ కోసం ప్రపంచవ్యాప్తంగా సెట్ చేయడం సులభం. ఉదాహరణకి, GitLab విషయంలో ప్రాజెక్ట్ సెట్టింగ్‌లలో ఎన్విరాన్‌మెంట్ వేరియబుల్‌ని జోడించండి: సెట్టింగ్‌లు -> CI / CD -> వేరియబుల్స్: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

మేము చిత్రాలను ప్రచురించడం మరియు అప్లికేషన్‌లను విడుదల చేయడం గురించి మాట్లాడినట్లయితే (మీరు సంబంధిత డాక్యుమెంటేషన్ కథనాలలో ఈ ప్రక్రియల గురించి వివరంగా చదువుకోవచ్చు: ప్రక్రియను ప్రచురించండి и అమలు ప్రక్రియ), అప్పుడు మోడ్ మీరు చిత్రంతో పని చేసే టెంప్లేట్‌ను మాత్రమే నిర్ణయిస్తుంది.

దెయ్యం వివరాల్లో ఉంది

రిజిస్ట్రీని శుభ్రపరిచే ప్రక్రియలో కొత్త నిల్వ పద్ధతిని జోడించేటప్పుడు వ్యత్యాసం మరియు ప్రధాన కష్టం (వెర్ఫ్ మద్దతునిచ్చే ప్రక్షాళన లక్షణాల కోసం, చూడండి శుభ్రపరిచే ప్రక్రియ).

శుభ్రపరిచేటప్పుడు, కుబెర్నెట్స్ క్లస్టర్‌లలో ఉపయోగించిన చిత్రాలను, అలాగే వినియోగదారు కాన్ఫిగర్ చేసిన విధానాలను వెర్ఫ్ పరిగణనలోకి తీసుకుంటుంది. విధానాలు ట్యాగ్‌లను వ్యూహాలుగా విభజించడంపై ఆధారపడి ఉంటాయి. ప్రస్తుతం మద్దతు ఉన్న వ్యూహాలు:

  1. ట్యాగ్, బ్రాంచ్ మరియు కమిట్ వంటి Git ప్రిమిటీవ్స్ ద్వారా లింక్ చేయబడిన 3 వ్యూహాలు;
  2. ఏకపక్ష అనుకూల ట్యాగ్‌ల కోసం 1 వ్యూహం.

తుది చిత్రం యొక్క లేబుల్‌లలో చిత్రాన్ని ప్రచురించేటప్పుడు మేము ట్యాగ్ వ్యూహం గురించి సమాచారాన్ని సేవ్ చేస్తాము. అర్థమే పిలవబడేది మెటా ట్యాగ్ - కొన్ని పాలసీలను వర్తింపజేయడం అవసరం. ఉదాహరణకు, Git రిపోజిటరీ నుండి బ్రాంచ్ లేదా ట్యాగ్‌ను తొలగించేటప్పుడు, సంబంధిత వాటిని తొలగించడం లాజికల్ ఉపయోగించని మా విధానాలలో భాగంగా కవర్ చేయబడిన రిజిస్ట్రీ నుండి చిత్రాలు.

ఒక రిపోజిటరీలో సేవ్ చేసినప్పుడు (monorepo), చిత్రం ట్యాగ్‌లో, మెటా ట్యాగ్‌తో పాటు, చిత్రం పేరు కూడా నిల్వ చేయబడుతుంది: PROJECT:frontend-META-TAG. వాటిని వేరు చేయడానికి, మేము ఏ నిర్దిష్ట సెపరేటర్‌ను పరిచయం చేయలేదు, కానీ ప్రచురించేటప్పుడు తుది చిత్రం యొక్క లేబుల్‌కు అవసరమైన విలువను జోడించాము.

NB: మీరు werf సోర్స్ కోడ్‌లో వివరించిన ప్రతిదాన్ని చూడడానికి ఆసక్తి కలిగి ఉంటే, అప్పుడు ప్రారంభ స్థానం కావచ్చు పిఆర్ 1684.

ఈ వ్యాసంలో, మా విధానం యొక్క సమస్యలు మరియు సమర్థనపై మేము ఎక్కువ శ్రద్ధ చూపము: ట్యాగింగ్ వ్యూహాల గురించి, లేబుల్‌లలో డేటాను నిల్వ చేయడం మరియు మొత్తం ప్రచురణ ప్రక్రియ గురించి - ఇవన్నీ డిమిత్రి స్టోలియారోవ్ ఇటీవలి నివేదికలో వివరంగా వివరించబడ్డాయి: “కుబెర్నెట్స్‌లో CI/CD కోసం werf మా సాధనం".

సంగ్రహించడం

అన్‌నెస్టెడ్ రిజిస్ట్రీలకు మద్దతు లేకపోవడం మాకు లేదా మాకు తెలిసిన werf వినియోగదారులకు నిరోధించే అంశం కాదు - అన్నింటికంటే, మీరు ఎల్లప్పుడూ ప్రత్యేక ఇమేజ్ రిజిస్ట్రీని పెంచవచ్చు (లేదా Google క్లౌడ్‌లో షరతులతో కూడిన కంటైనర్ రిజిస్ట్రీకి మారవచ్చు) ... అయితే, విస్తృత DevOps కమ్యూనిటీకి సాధనం మరింత సౌకర్యవంతంగా ఉండటానికి అటువంటి పరిమితిని తీసివేయడం తార్కికంగా అనిపించింది. దీన్ని అమలు చేయడం, కంటైనర్ రిజిస్ట్రీ క్లీనప్ మెకానిజంను మళ్లీ పని చేయడంలో మేము ప్రధాన ఇబ్బందిని ఎదుర్కొన్నాము. ఇప్పుడు ప్రతిదీ సిద్ధంగా ఉంది, ఇది ఎవరికైనా సులభంగా మారిందని గ్రహించడం ఆనందంగా ఉంది మరియు మేము (ప్రాజెక్ట్ యొక్క ప్రధాన డెవలపర్‌లుగా) ఈ లక్షణానికి మరింత మద్దతు ఇవ్వడంలో గుర్తించదగిన ఇబ్బందులు ఉండవు.

మాతో ఉండండి మరియు అతి త్వరలో మేము ఇతర ఆవిష్కరణల గురించి మీకు తెలియజేస్తాము వర్ఫ్!

PS

మా బ్లాగులో కూడా చదవండి:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి