
የሞኖሬፖ ርዕስ ብዙ ጊዜ ተብራርቷል እና እንደ ደንቡ በጣም ንቁ ክርክሮችን ያስከትላል። ከጂት ወደ ዶከር ምስሎች (እና በኋላም ለኩበርኔትስ) የአፕሊኬሽን ኮድ የመገንባት ሂደትን ለማሻሻል የተነደፈ ክፍት ምንጭ መሳሪያ እንደመሆናችን መጠን፣ የትኛው ምርጫ የተሻለ እንደሆነ በመገመት ብዙ ጊዜ አናጠፋም። ዋናው ትኩረታችን ለተለያዩ አስተያየቶች ደጋፊዎች የሚያስፈልገውን ሁሉ ማቅረብ ነው (እርግጥ ነው፣ ከጤናማ አስተሳሰብ ጋር የማይጋጭ እስከሆነ ድረስ)።
በቅርቡ በዌርፍ ውስጥ የተጨመረው የሞኖ-ሬፖ ድጋፍ ለዚህ ጥሩ ምሳሌ ነው። ነገር ግን በመጀመሪያ፣ ይህ ድጋፍ ከዌርፍ አጠቃቀም ጋር እንዴት እንደሚዛመድ እና የዶከር መዝገብ ቤት ከእሱ ጋር ምን እንደሚያገናኘው እንመልከት…
ጉዳዮች
ይህንን ሁኔታ በዓይነ ሕሊናህ ተመልከት። አንድ ኩባንያ በገለልተኛ ፕሮጀክቶች ላይ የሚሰሩ በርካታ የልማት ቡድኖች አሉት። አብዛኛዎቹ አፕሊኬሽኖች በኩበርኔቶች ላይ ይሰራሉ ስለዚህም ኮንቴይነር ተደርገው ይያዛሉ። ኮንቴይነሮችን እና ምስሎችን ለማከማቸት መዝገብ ቤት ያስፈልጋል። ኩባንያው ዶከር ሃብን እንደ መዝገብ ቤቱ ይጠቀማል፣ አንድ መለያ ብቻ አለው። COMPANYከአብዛኛዎቹ የምንጭ ኮድ ማከማቻ ስርዓቶች ጋር ተመሳሳይ፣ Docker Hub የተዋሃዱ የማከማቻ ተዋረዶችን አይፈቅድም።፣ እንደ COMPANY/PROJECT/IMAGEበዚህ ሁኔታ... ለእያንዳንዱ ፕሮጀክት የተለየ መለያ ሳንፈጥር፣ በዚህ ገደብ ውስጥ ሞኖሊቲክ ያልሆኑ አፕሊኬሽኖችን በመዝገቡ ውስጥ እንዴት ማከማቸት እንችላለን?

ይህ ሁኔታ ለአንዳንዶች የተለመደ ሊሆን ይችላል፣ ነገር ግን ከላይ ያለውን ምሳሌ እና የዶከር ሃብን ሳንጠቅስ በአጠቃላይ የመተግበሪያ ማከማቻን የማደራጀት ጉዳይ እንመልከት።
መፍትሄዎች
ማመልከቻው ከሆነ ሞኖሊቲክ በሆነ መልኩ, በአንድ ምስል ይቀርባል፣ ከዚያ ምንም ጥያቄ አይነሳም እና ምስሎቹን በፕሮጀክቱ የኮንቴይነር መዝገብ ውስጥ እናስቀምጣቸዋለን።
አንድ መተግበሪያ እንደ ብዙ ክፍሎች ሲቀርብ፣ ጥቃቅን አገልግሎቶችከዚያም የተለየ አካሄድ መምረጥ ያስፈልጋል። ሁለት ምስሎችን የያዘ የተለመደ የድር መተግበሪያ ምሳሌ በመጠቀም፦ frontend и backend - ሊሆኑ የሚችሉ አማራጮች የሚከተሉት ናቸው:
- ምስሎችን በተለየ ጎጆ ማከማቻዎች ውስጥ ያስቀምጡ፦

- ሁሉንም ነገር በአንድ ማከማቻ ውስጥ ያስቀምጡ፣ እና የምስሉን ስም በመለያው ውስጥ ያካትቱ፣ ለምሳሌ፣ እንደዚህ፡

NBእንደ እውነቱ ከሆነ፣ በተለያዩ ማከማቻዎች ውስጥ በማስቀመጥ ሌላ አማራጭ አለ፣ PROJECT-frontend и PROJECT-backendነገር ግን በተጠቃሚዎች መካከል የመብቶች ድጋፍ፣ አደረጃጀት እና ስርጭት ውስብስብነት ምክንያት አንመለከተውም።
በዌርፍ ላይ የሚደረግ ድጋፍ
መጀመሪያ ላይ፣ ዌርፍ በተሰቀሉ ማከማቻዎች ብቻ የተወሰነ ነው - እንደ እድል ሆኖ፣ አብዛኛዎቹ መዝገቦች ይህንን ባህሪ ይደግፋሉ። ከስሪት ጀምሮ። , ከምዝገባዎች ጋር የተጨመረ ስራን ጨምሮ ጎጆ መሥራት አይደገፍምእና Docker Hub ከእነዚህ ውስጥ አንዱ ነው። ከአሁን ጀምሮ ተጠቃሚዎች የመተግበሪያ ምስሎችን እንዴት ማከማቸት እንደሚችሉ የመምረጥ መብት አላቸው።
ተግባራዊነት እንደ አማራጭ ይገኛል --images-repo-mode=multirepo|monorepo (በነባሪነት multirepo(ማለትም፣ በተሰቀሉ ማከማቻዎች ውስጥ ማከማቸት)። ምስሎቹ በመዝገቡ ውስጥ የሚቀመጡባቸውን አብነቶች ይገልጻል። መሰረታዊ ትዕዛዞችን ሲጠቀሙ የሚፈለገውን ሁነታ ብቻ ይምረጡ፣ እና የተቀረው ነገር ሁሉ ሳይለወጥ ይቀራል።
አብዛኛዎቹ የዌርፍ አማራጮች ሊዘጋጁ ስለሚችሉ የአካባቢ ተለዋዋጮችበCI/CD ሲስተሞች ውስጥ፣ የማከማቻ ሁነታው በአጠቃላይ ለፕሮጀክቱ በዓለም አቀፍ ደረጃ ለማዘጋጀት ቀላል ነው። ለምሳሌ፣ በ GitLab ጉዳይ ላይ በፕሮጀክት ቅንብሮች ውስጥ የአካባቢ ተለዋዋጭ ማከል በቂ ነው- ቅንብሮች -> CI / CD -> ተለዋዋጮች፡ WERF_IMAGES_REPO_MODE: multirepo|monorepo.
ምስሎችን ስለማተም እና አፕሊኬሽኖችን ስለማስተዋወቅ ስንናገር (ስለእነዚህ ሂደቶች በተዛማጅ የሰነድ መጣጥፎች ውስጥ በዝርዝር ማንበብ ይችላሉ፡ и )፣ ከዚያ ሁነታው ከምስሉ ጋር መስራት የሚችሉበትን አብነት ብቻ ይወስናል።
ዲያቢሎስ በዝርዝሮች ውስጥ አለ።
አዲስ የማከማቻ ዘዴ ሲጨምሩ ያለው ልዩነት እና ዋናው ችግር መዝገቡን በማጽዳት ሂደት ውስጥ ነው። (በwerf የተደገፉ የጽዳት ችሎታዎችን ለማየት፣ ይመልከቱ ).
ዌርፍ ሲያጸዱ በኩበርኔተስ ክላስተር ውስጥ ጥቅም ላይ የዋሉትን ምስሎች እንዲሁም በተጠቃሚ የተዋቀሩ ፖሊሲዎችን ግምት ውስጥ ያስገባል። ፖሊሲዎች መለያዎችን ወደ ስልቶች በመከፋፈል ላይ የተመሰረቱ ናቸው። በአሁኑ ጊዜ የሚደገፉ ስልቶች፡
- እንደ ታግ፣ ቅርንጫፍ እና commit ያሉ ከ Git primitives ጋር የተያያዙ 3 ስልቶች፤
- ለብጁ መለያዎች 1 ስትራቴጂ።
በመጨረሻው ምስል መለያዎች ላይ ምስል ስናሳትም የመለያ ስትራቴጂ መረጃ እናከማቻለን። እሴቱ ራሱ የሚባለው ነው። ሜታ መለያ — አንዳንድ ፖሊሲዎችን ለመተግበር አስፈላጊ ነው። ለምሳሌ፣ ከጂት ማከማቻ ላይ ቅርንጫፍ ወይም መለያ ሲሰርዙ፣ ተያያዥ ፖሊሲዎችን መሰረዝም ምክንያታዊ ነው። ጥቅም ላይ ያልዋለ ከመመሪያዎቻችን አካል የተሸፈነው ከመመዝገቢያው የተገኙ ምስሎች።
በአንድ ማከማቻ ውስጥ ሲያስቀምጡ (monorepo)፣ ከሜታ መለያው በተጨማሪ፣ የምስል መለያው የምስል ስሙን ሊያከማች ይችላል፡ PROJECT:frontend-META-TAGእነሱን ለመለየት፣ ምንም አይነት የተለየ መለያ አላስተዋወቅንም፣ ነገር ግን ሲታተም አስፈላጊውን እሴት በመጨረሻው የምስል መለያ ላይ ጨምረናል።
NBበ werf ምንጭ ኮድ ውስጥ የተገለጸውን ሁሉ ለማየት ፍላጎት ካለዎት፣ የመነሻ ነጥብ ሊኖርዎት ይችላል .
በዚህ ጽሑፍ ውስጥ፣ ለአቀራረባችን ችግሮች እና ትክክለኛነት የበለጠ ትኩረት አንሰጥም-ስለ መለያ አሰጣጥ ስልቶች፣ መረጃዎችን በመለያዎች ውስጥ ስለማከማቸት እና በአጠቃላይ ስለ ህትመት ሂደት - ይህ ሁሉ በቅርቡ በዲሚትሪ ስቶሊያሮቭ ባወጣው ሪፖርት በዝርዝር ተገልጾአል፡- “».
ለማሳጠር
ያልተዋሃዱ መዝገቦች ድጋፍ አለማግኘት ለእኛም ሆነ ለምናውቃቸው የዌርፍ ተጠቃሚዎች ምንም አይነት ስምምነት አላስገኘም - ሁልጊዜ የተለየ የምስል መዝገብ ማዘጋጀት (ወይም በGoogle Cloud ውስጥ እንደ ኮንቴይነር መዝገብ ቤት ወዳለ ነገር መቀየር) ይቻላል። ሆኖም፣ ይህንን ገደብ ማስወገድ መሣሪያውን በሰፊው የዴቭኦፕስ ማህበረሰብ የበለጠ ጥቅም ላይ እንዲውል ለማድረግ ምክንያታዊ ይመስላል። ይህንን ተግባራዊ ስናደርግ፣ የኮንቴይነር መዝገብ ቤት ማጽጃ ዘዴን እንደገና በመንደፍ ረገድ ዋናውን ፈተና አጋጥሞናል። አሁን ሁሉም ነገር ዝግጁ ስለሆነ፣ ነገሮች ለአንድ ሰው ቀላል መሆናቸው ጥሩ ነው፣ እና እኛ (የፕሮጀክቱ ዋና ገንቢዎች እንደመሆናችን መጠን) ይህንን ባህሪ የበለጠ ለመደገፍ ምንም አይነት ጉልህ ችግሮች አንጠብቅም።
በቅርብ ጊዜ ውስጥ ስለሌሎች ፈጠራዎች እንነግርዎታለን እና ይጠብቁን። !
PS
በብሎጋችን ላይ ያንብቡ፡-
- «";
- «».
ምንጭ: hab.com


