ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)

ጦማራችንን በቴክኒካል ዳይሬክተራችን የቅርብ ጊዜ ንግግሮች ላይ በመመስረት በተፈጠሩ ህትመቶች እንጀምራለን distol (ዲሚትሪ ስቶልያሮቭ) ሁሉም በ 2016 በተለያዩ ሙያዊ ዝግጅቶች የተከናወኑ ሲሆን ለዴቭኦፕስ እና ለዶከር ርዕስ ተሰጥተዋል. አንድ ቪዲዮ፣ በባዱ ቢሮ ውስጥ ከዶከር ሞስኮ ስብሰባ፣ እኛ ቀድሞውኑ ነን የታተመ በመስመር ላይ። አዲሶቹ የሪፖርቶቹን ይዘት በሚያስተላልፉ መጣጥፎች ይታጀባሉ። ስለዚህ…

ግንቦት 31 በጉባኤው ላይ RootConf 2016በሩሲያ የበይነመረብ ቴክኖሎጂዎች ፌስቲቫል (RIT ++ 2016) አካል ሆኖ የተካሄደው "ቀጣይ ማሰማራት እና ማሰማራት" የሚለው ክፍል "ከዶከር ጋር ቀጣይነት ያለው የማድረስ ምርጥ ልምዶች" በሪፖርቱ ተከፈተ። ዶከር እና ሌሎች የክፍት ምንጭ ምርቶችን በመጠቀም ቀጣይነት ያለው የማስረከቢያ (ሲዲ) ሂደትን ለመገንባት ምርጥ ተሞክሮዎችን ጠቅለል አድርጎ አስተካክሏል። ከእነዚህ መፍትሄዎች ጋር በምርት ውስጥ እንሰራለን, ይህም በተግባራዊ ልምድ ላይ እንድንተማመን ያስችለናል.

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)

አንድ ሰዓት ለማሳለፍ እድሉ ካለዎት ቪዲዮ ከሪፖርቱ ጋርሙሉ በሙሉ እንድትመለከቱት እናበረታታዎታለን። አለበለዚያ ዋናው መጭመቂያ በጽሁፍ መልክ ከዚህ በታች ቀርቧል.

ከዶከር ጋር ቀጣይነት ያለው መላኪያ

በ ተከታታይ ማድረስ የክስተቶችን ሰንሰለት እንረዳለን፣በዚህም ምክንያት ከጂት ማከማቻው የሚገኘው የመተግበሪያ ኮድ መጀመሪያ ወደ ምርት ይመጣል፣ እና ከዚያ ወደ ማህደሩ ውስጥ ይገባል። ይህን ይመስላል። Git → ገንባ (ስብሰባ) → ሙከራ (ሙከራ) → መልቀቅ (መልቀቅ) → መስራት (በኋላ ጥገና).

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)
አብዛኛው ሪፖርቱ ለግንባታ ደረጃ (የመተግበሪያ ስብሰባ) ያተኮረ ነው፣ እና የተለቀቀው እና የተግባር ርእሶች ይገመገማሉ። እነሱን ለመፍታት ስለሚፈቅዱ ችግሮች እና ቅጦች እንነጋገራለን, እና የእነዚህ ቅጦች ልዩ አተገባበር ሊለያይ ይችላል.

ለምን ዶከር እዚህ በአጠቃላይ ያስፈልጋል? በዚህ የክፍት ምንጭ መሳሪያ አውድ ውስጥ ስለ ቀጣይ የማድረስ ልምዶች ለመነጋገር የወሰንነው በከንቱ አይደለም። ምንም እንኳን አጠቃላይ ሪፖርቱ ለአጠቃቀሙ ብቻ የተወሰነ ቢሆንም፣ የማመልከቻ ኮድን የመልቀቁን ዋና ንድፍ ሲመለከቱ ብዙ ምክንያቶች ቀድሞውኑ ተገለጡ።

ዋና የታቀዱ ስርዓተ ጥለት

ስለዚህ፣ አዲስ የመተግበሪያውን ስሪቶች በምንለቅበት ጊዜ፣ በእርግጥ ያጋጥመናል። የእረፍት ጊዜ ችግርየምርት አገልጋዩ በሚቀየርበት ጊዜ የሚፈጠረው። ከአሮጌው የመተግበሪያው ስሪት ወደ አዲሱ ትራፊክ በፍጥነት መቀየር አይቻልም፡ በመጀመሪያ አዲሱ ስሪት በተሳካ ሁኔታ መጫኑን ብቻ ሳይሆን "ሙቅ" (ማለትም ጥያቄዎችን ለማቅረብ ሙሉ በሙሉ ዝግጁ መሆኑን ማረጋገጥ አለብን).

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)
ስለዚህ, ለተወሰነ ጊዜ, ሁለቱም የመተግበሪያው ስሪቶች (አሮጌ እና አዲስ) በአንድ ጊዜ ይሰራሉ. ይህም በራስ-ሰር ይመራል የጋራ መገልገያ ግጭትአውታረ መረብ ፣ የፋይል ስርዓት ፣ አይፒሲ ፣ ወዘተ. በዶከር ይህ ችግር በቀላሉ የሚፈታው የተለያዩ የመተግበሪያውን ስሪቶች በተለየ ኮንቴይነሮች ውስጥ በማስኬድ ነው፣ ለዚህም የሃብት ማግለል በተመሳሳይ አስተናጋጅ (አገልጋይ/ምናባዊ ማሽን) ውስጥ ዋስትና ተሰጥቶታል። እርግጥ ነው, ያለምንም ማግለል አንዳንድ ዘዴዎችን ማግኘት ይችላሉ, ነገር ግን ዝግጁ እና ምቹ መሳሪያ ካለ, ከዚያ የተገላቢጦሽ ምክንያት አለ - ችላ ለማለት አይደለም.

መያዣ (ኮንቴይነር) ለማሰማራት ሌሎች ብዙ ጥቅሞችን ይሰጣል። እያንዳንዱ መተግበሪያ በዚህ ላይ ይወሰናል የተወሰነ ስሪት (ወይም የስሪት ክልል) ተርጓሚ, ሞጁሎች / ቅጥያዎች, ወዘተ, እንዲሁም የእነሱ ስሪቶች መኖራቸው. እና ይህ ወዲያውኑ የሚተገበር አካባቢን ብቻ ሳይሆን መላውን አካባቢ ጨምሮ የስርዓት ሶፍትዌር እና የእሱ ስሪት (እስከ ጥቅም ላይ የዋለው የሊኑክስ ስርጭት ድረስ)። ኮንቴይነሮች የመተግበሪያ ኮድ ብቻ ሳይሆን ቀድሞ የተጫነ የስርዓት እና የመተግበሪያ ሶፍትዌሮች በመኖራቸው ምክንያት ከጥገኝነት ጋር የተያያዙ ችግሮችን መርሳት ይችላሉ.

ጠቅለል አድርገን እንናገር ዋና የታቀዱ ጥለት የሚከተሉትን ምክንያቶች ከግምት ውስጥ በማስገባት አዲስ ስሪቶች:

  1. በመጀመሪያ, የድሮው የመተግበሪያው ስሪት በመጀመሪያው መያዣ ውስጥ ይሰራል.
  2. ከዚያም አዲሱ ስሪት ተዘርግቶ በሁለተኛው መያዣ ውስጥ "ይሞቃል". ይህ አዲስ ስሪት እራሱ የተዘመነውን የመተግበሪያ ኮድ ብቻ ሳይሆን ማንኛውንም ጥገኞቹን እንዲሁም የስርዓት ክፍሎችን (ለምሳሌ የOpenSSL አዲስ ስሪት ወይም አጠቃላይ ስርጭቱን) መሸከም የሚችል መሆኑ ትኩረት የሚስብ ነው።
  3. አዲሱ ስሪት ጥያቄዎችን ለማቅረብ ሙሉ በሙሉ ዝግጁ ሲሆን ትራፊክ ከመጀመሪያው መያዣ ወደ ሁለተኛው ይቀየራል።
  4. አሁን የድሮውን ስሪት ማቆም ይቻላል.

ይህ አቀራረብ የተለያዩ የመተግበሪያውን ስሪቶች በተለየ መያዣዎች ውስጥ በማሰማራት ሌላ ምቾት ይሰጣል - በፍጥነት ወደ ኋላ መመለስ ወደ አሮጌው ስሪት (ከሁሉም በኋላ, ትራፊክ ወደ ተፈላጊው መያዣ መቀየር በቂ ነው).

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)
የመጨረሻው የመጀመሪያው ምክረ ሃሳብ የሚሰማው ካፒቴን እንኳን ጥፋት እንዳያገኝ ነው፡ "[ከዶከር ጋር ቀጣይነት ያለው መላኪያ ሲያደራጁ] ዶከርን ይጠቀሙ [እና የሚሰጠውን ተረዱ]". ያስታውሱ ይህ ማንኛውንም ችግር የሚፈታ "የብር ጥይት" አይደለም, ነገር ግን አስደናቂ መሠረት የሚሰጥ መሳሪያ ነው.

መራባት

"መባዛት" ስንል በመተግበሪያዎች አሠራር ውስጥ ያጋጠሙ አጠቃላይ የችግሮች ስብስብ ማለታችን ነው። ስለ እንደዚህ ዓይነት ጉዳዮች እየተነጋገርን ነው-

  • ለዝግጅት ጥራት ክፍል በጥራት የተፈተሸባቸው ሁኔታዎች በምርት ውስጥ በትክክል መባዛት አለባቸው።
  • አፕሊኬሽኖች ከተለያዩ የመስታወት ማከማቻዎች ፓኬጆችን መቀበል በሚችሉ አገልጋዮች ላይ ታትመዋል (በጊዜ ሂደት እነሱ ተዘምነዋል እና ከነሱ ጋር የተጫኑ መተግበሪያዎች ስሪቶች)።
  • "ሁሉም ነገር በአካባቢው ይሰራል!" (... እና ገንቢዎች ወደ ምርት አይፈቀዱም።)
  • በአሮጌው (የተመዘገበ) ስሪት ውስጥ የሆነ ነገር መፈተሽ ያስፈልጋል።
  • ...

የእነሱ አጠቃላይ ይዘት ጥቅም ላይ የዋሉትን አከባቢዎች ሙሉ በሙሉ ማሟላት (እንዲሁም የሰው አካል አለመኖር) አስፈላጊ እስከሆነ ድረስ ነው. እንደገና መወለድን እንዴት ማረጋገጥ ይቻላል? Docker ምስሎችን ይስሩ በ Git ኮድ ላይ በመመስረት እና ከዚያ ለማንኛውም ተግባራት ይጠቀሙባቸው-በሙከራ ጣቢያዎች ፣ በማምረት ፣ በፕሮግራም አውጪዎች የሀገር ውስጥ ማሽኖች ላይ ... በተመሳሳይ ጊዜ የሚከናወኑትን ድርጊቶች መቀነስ አስፈላጊ ነው ። после ምስልን መሰብሰብ: ቀለል ባለ መጠን, ስህተቶች የመኖራቸው ዕድሉ አነስተኛ ነው.

መሠረተ ልማት ኮድ ነው።

የመሠረተ ልማት መስፈርቶች (የአገልጋይ ሶፍትዌር መገኘት፣ ሥሪቱ፣ ወዘተ) መደበኛ ካልሆኑ እና “ፕሮግራም” ካልተደረጉ፣ የማንኛውም መተግበሪያ ማሻሻያ መልቀቅ አሳዛኝ መዘዞችን ያስከትላል። ለምሳሌ፣ ለማዘጋጀት ወደ ፒኤችፒ 7.0 ቀይረህ በዚሁ መሰረት ኮዱን እንደገና ጻፍከው - ከዚያ በአሮጌ ፒኤችፒ (5.5) ምርት ውስጥ መታየቱ አንድን ሰው ያስደንቃል። በአስተርጓሚው ስሪት ላይ ስላለው ትልቅ ለውጥ ላይረሱ ይችላሉ, ነገር ግን "ዲያቢሎስ በዝርዝሮች ውስጥ ነው": የሚያስደንቀው ነገር በማንኛውም ጥገኝነት ትንሽ ዝማኔ ውስጥ ሊሆን ይችላል.

ይህንን ችግር ለመፍታት ያለው አቀራረብ በመባል ይታወቃል IaC (መሰረተ ልማት እንደ ኮድ፣ "መሰረተ ልማት እንደ ኮድ") እና የመሠረተ ልማት መስፈርቶችን ከማመልከቻው ኮድ ጋር ማከማቸትን ያካትታል. እሱን በመጠቀም ገንቢዎች እና የዴቭኦፕስ ስፔሻሊስቶች ከመተግበሪያው ተመሳሳይ የ Git ማከማቻ ጋር ሊሰሩ ይችላሉ ፣ ግን በተለያዩ ክፍሎች ላይ። ከዚህ ኮድ የዶከር ምስል በጂት ውስጥ ተፈጥሯል፣ በዚህ ውስጥ አፕሊኬሽኑ የተዘረጋው የመሠረተ ልማት አውታሮችን ሁሉ ግምት ውስጥ በማስገባት ነው። በቀላል አነጋገር ምስሎችን ለመገንባት ስክሪፕቶች (ህጎች) ከምንጩ ኮድ ጋር በተመሳሳይ ማከማቻ ውስጥ መሆን አለባቸው እና አንድ ላይ መቀላቀል አለባቸው።

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)

በተነባበረ አፕሊኬሽን አርክቴክቸር - ለምሳሌ በ Docker ኮንቴይነር ውስጥ እየሄደ ካለ መተግበሪያ በፊት የሚመጣው nginx አለ - ለእያንዳንዱ ንብርብር Docker ምስሎች በ Git ውስጥ ካለው ኮድ መፈጠር አለባቸው። ከዚያም በመጀመሪያው ምስል ላይ ከአስተርጓሚ እና ከሌሎች "የቅርብ" ጥገኞች ጋር ማመልከቻ ይኖራል, እና በሁለተኛው - ወላጅ nginx.

Docker ምስሎች፣ ከ Git ጋር ግንኙነት

ከጂት የተገነቡ ሁሉንም የዶከር ምስሎች በሁለት ምድቦች እንከፍላለን፡ ጊዜያዊ እና የሚለቀቅ። ጊዜያዊ ምስሎች በጊት በሚገኘው የቅርንጫፉ ስም ታግ ተሰጥቷቸዋል፣ በሚቀጥለው ቁርጠኝነት ሊገለበጥ ይችላል እና ለቅድመ እይታ ብቻ ነው የሚለቀቁት (ለምርት አይደለም)። ይህ ከተለቀቁት ጋር ያላቸው ቁልፍ ልዩነት ነው፡ በእነሱ ውስጥ ምን የተለየ ቁርጠኝነት እንዳለ አታውቅም።

በጊዜያዊ ምስሎች ውስጥ መሰብሰብ ምክንያታዊ ነው-የዋናው ቅርንጫፍ (የአሁኑን የማስተርስ ስሪት ያለማቋረጥ ለማየት ወደ ሌላ ጣቢያ በራስ-ሰር መልቀቅ ይችላሉ) ፣ ከተለቀቁት ጋር ቅርንጫፎች ፣ የተወሰኑ ፈጠራዎች ቅርንጫፎች።

ከዶከር ጋር ቀጣይነት ያለው የማድረስ ልምዶች (ግምገማ እና ቪዲዮ)
ጊዜያዊ ምስሎች ቅድመ እይታ በምርት ውስጥ ለትርጉም አስፈላጊነት ከመጣ በኋላ ገንቢዎቹ የተወሰነ መለያ አደረጉ። በመለያ በራስ ሰር ተሰብስቧል የመልቀቅ ምስል (የእሱ መለያ ከጂት መለያ ጋር ይዛመዳል) እና ወደ ዝግጅት ይንከባለላል። በጥራት ክፍል በተሳካ ሁኔታ ከተረጋገጠ ወደ ምርት ይሄዳል.

ዳፕ

የተገለጹት ነገሮች ሁሉ (በመልቀቅ, ምስሎችን መገንባት, ቀጣይ ጥገና) የ Bash ስክሪፕቶችን እና ሌሎች "የተሻሻሉ" መሳሪያዎችን በመጠቀም በተናጥል ሊተገበሩ ይችላሉ. ነገር ግን ይህን ካደረጉ, ከዚያም በተወሰነ ጊዜ አተገባበሩ ወደ ከፍተኛ ውስብስብነት እና ደካማ አስተዳደርን ያመጣል. ይህንን በመረዳት CI / ሲዲ ለመገንባት የራሳችንን ልዩ የስራ ፍሰት መገልገያ ለመፍጠር መጣን - ዳፕ.

የእሱ ምንጭ ኮድ በሩቢ ውስጥ ተጽፏል, ክፍት እና ታትሟል የፊልሙ. እንደ አለመታደል ሆኖ ሰነዱ በአሁኑ ጊዜ የመሳሪያው በጣም ደካማ ነጥብ ነው, ነገር ግን በእሱ ላይ እየሰራን ነው. እና ከአንድ ጊዜ በላይ ስለ ዳፕ እንጽፋለን እና እንነጋገራለን, ምክንያቱም. ባህሪያቱን ለሁሉም ፍላጎት ላለው ማህበረሰብ ለማካፈል ከልብ መጠበቅ አንችልም ፣ ግን እስከዚያው ድረስ ጉዳዮችዎን ይላኩ እና ጥያቄዎችን ይጎትቱ እና / ወይም የፕሮጀክቱን እድገት በ GitHub ላይ ይከተሉ።

ኦገስት 13፣ 2019 ተዘምኗል፡ በአሁኑ ጊዜ ፕሮጀክት ዳፕ ተብሎ ተቀይሯል። werf፣ ኮዱ ሙሉ በሙሉ በ Go ውስጥ እንደገና ተጽፏል፣ እና ሰነዱ በጣም ተሻሽሏል።

ኩባንያቶች

በሙያዊ አካባቢ ውስጥ ጉልህ እውቅና ያገኘ ሌላ ከመደርደሪያ ውጭ ክፍት ምንጭ መሳሪያ ነው። ኩባንያቶችዶከርን ለማስተዳደር ክላስተር። በዶከር ላይ በተገነቡ ፕሮጀክቶች ውስጥ ጥቅም ላይ የሚውለው ርዕስ ከሪፖርቱ ወሰን በላይ ነው, ስለዚህ አቀራረቡ ለአንዳንድ አስደሳች ባህሪያት አጠቃላይ እይታ ብቻ የተገደበ ነው.

Kubernetes ለመልቀቅ የሚከተሉትን ያቀርባል

  • ዝግጁነት ምርመራ - የመተግበሪያውን አዲስ ስሪት ዝግጁነት ማረጋገጥ (ትራፊክ ወደ እሱ ለመቀየር);
  • የማሽከርከር ማሻሻያ - ተከታታይ የምስል ማሻሻያ በክላስተር ኮንቴይነሮች (መዘጋት, ማዘመን, ለመጀመር ዝግጅት, የትራፊክ መቀያየር);
  • የተመሳሰለ ዝመና - ምስሉን በክላስተር ውስጥ በተለያየ አቀራረብ ማዘመን: በመጀመሪያ በግማሽ መያዣዎች ላይ, ከዚያም በቀሪው ላይ;
  • የካናሪ ልቀቶች - ያልተለመዱ ነገሮችን ለመከታተል በተወሰኑ (ትንሽ) ኮንቴይነሮች ላይ አዲስ ምስል ማስጀመር።

ቀጣይነት ያለው ማድረስ የአዲሱ እትም መለቀቅ ብቻ ሳይሆን ኩበርኔትስ ለቀጣይ የመሠረተ ልማት ግንባታው በርካታ ባህሪያት አሉት፡ አብሮ የተሰራ ክትትል እና በሁሉም ኮንቴይነሮች ላይ መግባት፣ አውቶማቲክ ልኬት፣ ወዘተ. ይህ ሁሉ አስቀድሞ እየሰራ ነው እና ልክ ነው። በሂደትዎ ውስጥ ተገቢውን ትግበራ በመጠባበቅ ላይ።

የመጨረሻ ምክሮች

  1. ዶከር ይጠቀሙ።
  2. ለሁሉም ፍላጎቶች የመተግበሪያ Docker ምስሎችን ይስሩ።
  3. "መሠረተ ልማት ኮድ ነው" የሚለውን መርህ ይከተሉ.
  4. Gitን ከዶከር ጋር ያገናኙ።
  5. የልቀት ቅደም ተከተል ይቆጣጠሩ።
  6. ዝግጁ መድረክ (Kubernetes ወይም ሌላ) ይጠቀሙ.

ቪዲዮዎች እና ስላይዶች

ቪዲዮ ከአፈፃፀሙ (አንድ ሰዓት ገደማ) በዩቲዩብ ላይ ታትሟል (ሪፖርቱ ራሱ ከ5ኛው ደቂቃ ጀምሮ ይጀምራል -ከዚህ ደቂቃ ጀምሮ ለመጫወት ሊንኩን ይከተሉ).

የዝግጅት አቀራረብን ሪፖርት ያድርጉ፡

PS

በብሎጋችን ላይ በርዕሱ ላይ ያሉ ሌሎች ዘገባዎች፡-

ምንጭ: hab.com

አስተያየት ያክሉ