ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)

අපගේ තාක්ෂණික අධ්‍යක්ෂවරයාගේ නවතම කථා පදනම් කරගත් ප්‍රකාශන සමඟ අපි අපගේ බ්ලොග් අඩවිය ආරම්භ කරමු distol (Dmitry Stolyarov). ඒවා සියල්ලම 2016 දී විවිධ වෘත්තීය සිදුවීම් වලදී සිදු වූ අතර DevOps සහ Docker යන මාතෘකාවට කැපවී ඇත. Badoo කාර්යාලයේ ඩොකර් මොස්කව් රැස්වීමෙන් එක් වීඩියෝවක්, අප දැනටමත් ඇත ප්රකාශයට පත් කරන ලදී ඔන්ලයින්. නව ඒවා සමඟ වාර්තාවල සාරය ප්‍රකාශ කරන ලිපි ඇතුළත් වේ. ඒ නිසා…

මැයි 31 සමුළුවේදී RootConf 2016, "රුසියානු අන්තර්ජාල තාක්ෂණ" (RIT++ 2016) උත්සවයේ කොටසක් ලෙස පවත්වන ලද, "අඛණ්ඩව යෙදවීම සහ යෙදවීම" යන කොටස "Docker සමඟ අඛණ්ඩව බෙදා හැරීමේ හොඳම පිළිවෙත්" වාර්තාව සමඟ විවෘත කරන ලදී. එය ඩොකර් සහ අනෙකුත් විවෘත මූලාශ්‍ර නිෂ්පාදන භාවිතයෙන් අඛණ්ඩ බෙදාහැරීමේ (සීඩී) ක්‍රියාවලියක් ගොඩනැගීම සඳහා හොඳම භාවිතයන් සාරාංශ කර ක්‍රමානුකූල කර ඇත. නිෂ්පාදනයේ දී අපි මෙම විසඳුම් සමඟ වැඩ කරන අතර, ප්රායෝගික අත්දැකීම් මත විශ්වාසය තැබීමට අපට ඉඩ සලසයි.

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)

ඔබට පැයක් ගත කිරීමට අවස්ථාවක් තිබේ නම් වාර්තාවේ වීඩියෝව, අපි එය සම්පූර්ණයෙන්ම නැරඹීමට නිර්දේශ කරමු. එසේ නොමැති නම්, පෙළ ආකාරයෙන් ප්රධාන සාරාංශය පහත දැක්වේ.

ඩොකර් සමඟ අඛණ්ඩ බෙදා හැරීම

යටතේ අඛණ්ඩ භාරදීම Git ගබඩාවෙන් යෙදුම් කේතය මුලින්ම නිෂ්පාදනයට පැමිණ පසුව ලේඛනාගාරයේ අවසන් වන ප්‍රතිඵලයක් ලෙස සිදුවීම් දාමය අපි තේරුම් ගනිමු. එය මෙසේ පෙනේ: Git → Build → Test → Release → Operate.

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)
වාර්තාවේ වැඩි කොටසක් ගොඩනැගීමේ අදියර (යෙදුම් එකලස් කිරීම) සඳහා කැප කර ඇති අතර, මාතෘකා මුදා හැරීම සහ ක්රියාත්මක කිරීම කෙටියෙන් ස්පර්ශ කරනු ලැබේ. ඒවා විසඳීමට ඔබට ඉඩ සලසන ගැටළු සහ රටා ගැන අපි කතා කරන්නෙමු, මෙම රටා වල නිශ්චිත ක්‍රියාත්මක කිරීම් වෙනස් විය හැකිය.

මෙහි ඩොකර් අවශ්‍ය වන්නේ ඇයි? මෙම විවෘත මූලාශ්‍ර මෙවලමෙහි සන්දර්භය තුළ අඛණ්ඩ බෙදා හැරීමේ පිළිවෙත් ගැන කතා කිරීමට අපි තීරණය කළේ නිකම්ම නොවේ. සම්පූර්ණ වාර්තාවම එහි භාවිතය සඳහා කැප කර ඇතත්, යෙදුම් කේත ප්‍රවාහයේ ප්‍රධාන රටාව සලකා බැලීමේදී බොහෝ හේතු අනාවරණය වේ.

ප්රධාන පෙරළීමේ රටාව

එබැවින්, අපි යෙදුමේ නව අනුවාද නිකුත් කරන විට, අපි නිසැකවම මුහුණ දෙන්නෙමු අක්‍රීය කාල ගැටලුව, නිෂ්පාදන සේවාදායකය මාරු කිරීමේදී ජනනය වේ. යෙදුමේ පැරණි අනුවාදයේ සිට නව එක වෙත ගමනාගමනය ක්ෂණිකව මාරු විය නොහැක: පළමුව අපි නව අනුවාදය සාර්ථකව බාගත කර ඇති බව පමණක් නොව, “උණුසුම්” (එනම්, ඉල්ලීම් සැපයීමට සම්පූර්ණයෙන්ම සූදානම්) බවට වග බලා ගත යුතුය.

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)
මේ අනුව, යම් කාලයක් සඳහා යෙදුමේ අනුවාද දෙකම (පැරණි සහ නව) එකවර ක්‍රියා කරයි. ස්වයංක්‍රීයව මඟ පෙන්වන හවුල් සම්පත් ගැටුම: ජාලය, ගොනු පද්ධතිය, IPC, ආදිය. Docker සමඟින්, මෙම ගැටළුව පහසුවෙන් විසඳා ගත හැක්කේ යෙදුමේ විවිධ අනුවාද වෙනම බහාලුම්වල ධාවනය කිරීමෙන් වන අතර, ඒ සඳහා එකම ධාරක (සේවාදායක/අථත්‍ය යන්ත්‍රය) තුළ සම්පත් හුදකලා වීම සහතික කෙරේ. ඇත්ත වශයෙන්ම, ඔබට පරිවරණය නොමැතිව සමහර උපක්‍රම භාවිතා කළ හැකිය, නමුත් සූදානම් කළ සහ පහසු මෙවලමක් තිබේ නම්, ප්‍රතිවිරුද්ධ හේතුවක් තිබේ - එය නොසලකා හරින්න එපා.

බහාලුම් යෙදවීමේදී වෙනත් බොහෝ ප්‍රතිලාභ ලබා දේ. ඕනෑම යෙදුමක් රඳා පවතී නිශ්චිත අනුවාදය (හෝ අනුවාද පරාසය) පරිවර්තකයා, මොඩියුල / දිගු, ආදිය, මෙන්ම ඒවායේ අනුවාද ලබා ගත හැකිය. තවද මෙය ක්ෂණිකව ක්රියාත්මක කළ හැකි පරිසරයට පමණක් නොව, ඇතුළුව සමස්ත පරිසරයටම අදාළ වේ පද්ධති මෘදුකාංග සහ එහි අනුවාදය (භාවිතා කරන ලද ලිනක්ස් බෙදාහැරීම දක්වා). බහාලුම්වල යෙදුම් කේතය පමණක් නොව, අවශ්‍ය අනුවාදවල පෙර ස්ථාපනය කර ඇති පද්ධතිය සහ යෙදුම් මෘදුකාංග ද අඩංගු වන නිසා, ඔබට පරායත්තතා සමඟ ඇති ගැටළු අමතක කළ හැකිය.

අපි සාරාංශ කරමු ප්රධාන පෙරළීමේ රටාව පහත සඳහන් සාධක සැලකිල්ලට ගනිමින් නව අනුවාදයන්:

  1. මුලදී, යෙදුමේ පැරණි අනුවාදය පළමු කන්ටේනරය තුළ ක්රියාත්මක වේ.
  2. නව අනුවාදය පසුව රෝල් කර දෙවන කන්ටේනරය තුළ "උණුසුම්" කර ඇත. මෙම නව අනුවාදයම යාවත්කාලීන යෙදුම් කේතය පමණක් නොව, එහි ඕනෑම පරායත්තතාවයක් මෙන්ම පද්ධති සංරචක ද රැගෙන යා හැකි බව සැලකිය යුතු කරුණකි (උදාහරණයක් ලෙස, OpenSSL හි නව අනුවාදයක් හෝ සම්පූර්ණ බෙදා හැරීම).
  3. නව අනුවාදය ඉල්ලීම් සැපයීමට සම්පූර්ණයෙන්ම සූදානම් වූ විට, රථවාහන පළමු බහාලුමේ සිට දෙවැන්නට මාරු වේ.
  4. පැරණි අනුවාදය දැන් නතර කළ හැකිය.

යෙදුමේ විවිධ අනුවාද වෙනම බහාලුම්වල යෙදවීමේ මෙම ප්‍රවේශය තවත් පහසුවක් සපයයි - ඉක්මන් ආපසු හැරීම පැරණි අනුවාදයට (සියල්ලට පසු, එය අවශ්ය බහාලුම් වෙත ගමනාගමනය මාරු කිරීමට ප්රමාණවත් වේ).

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)
අවසාන පළමු නිර්දේශය කපිතාන්ට පවා වරදක් සොයාගත නොහැකි දෙයක් ලෙස පෙනේ: "[ඩොකර් සමඟ අඛණ්ඩ බෙදා හැරීම සංවිධානය කරන විට] Docker භාවිතා කරන්න [සහ එය ලබා දෙන දේ තේරුම් ගන්න]" මතක තබා ගන්න, මෙය සෑම ගැටලුවක්ම විසඳන රිදී උණ්ඩයක් නොව, අපූරු පදනමක් සපයන මෙවලමක් වේ.

ප්රතිනිෂ්පාදනය

"ප්‍රතිනිෂ්පාදනය" යන්නෙන් අප අදහස් කරන්නේ යෙදුම් ක්‍රියාත්මක කිරීමේදී ඇති වන සාමාන්‍යකරණය වූ ගැටළු සමූහයකි. අපි කතා කරන්නේ එවැනි අවස්ථා ගැන ය:

  • වේදිකාගත කිරීම සඳහා තත්ත්ව දෙපාර්තමේන්තුව විසින් පරීක්ෂා කරන ලද ස්ක්‍රිප්ට් නිෂ්පාදනයේදී නිවැරදිව ප්‍රතිනිෂ්පාදනය කළ යුතුය.
  • යෙදුම් විවිධ ගබඩා දර්පණ වලින් පැකේජ ලබා ගත හැකි සේවාදායකයන් මත ප්‍රකාශයට පත් කෙරේ (කාලයත් සමඟ ඒවා යාවත්කාලීන වන අතර ඒවා සමඟ ස්ථාපිත යෙදුම්වල අනුවාද).
  • "සියල්ල දේශීයව මට වැඩ කරයි!" (...සහ සංවර්ධකයින්ට නිෂ්පාදනයට අවසර නැත.)
  • ඔබ පැරණි (සංරක්ෂිත) අනුවාදයේ යමක් පරීක්ෂා කළ යුතුය.
  • ...

භාවිතා කරන පරිසරයන් (මෙන්ම මානව සාධකය නොමැතිකම) සම්පූර්ණ අනුකූලතාවය අවශ්ය බව ඔවුන්ගේ සාමාන්ය සාරය පහත වැටේ. අපට ප්‍රජනනය සහතික කළ හැක්කේ කෙසේද? ඩොකර් පින්තූර සාදන්න Git වෙතින් කේතය මත පදනම්ව, පසුව ඕනෑම කාර්යයක් සඳහා ඒවා භාවිතා කරන්න: පරීක්ෂණ අඩවිවල, නිෂ්පාදනයේදී, ක්‍රමලේඛකයන්ගේ දේශීය යන්ත්‍රවල ... ඒ සමඟම, සිදු කරන ක්‍රියාවන් අවම කිරීම වැදගත් වේ. после රූපය එකලස් කිරීම: එය සරල වන තරමට දෝෂ ඇතිවීමේ සම්භාවිතාව අඩුය.

යටිතල පහසුකම් යනු කේතයකි

යටිතල පහසුකම් අවශ්‍යතා (සේවාදායක මෘදුකාංග ලබා ගැනීම, එහි අනුවාදය, ආදිය) විධිමත් කර “වැඩසටහන්ගත” කර නොමැති නම්, ඕනෑම යෙදුම් යාවත්කාලීනයක් නිකුත් කිරීම විනාශකාරී ප්‍රතිවිපාකවලට හේතු විය හැක. උදාහරණයක් ලෙස, වේදිකාගත කිරීමේදී ඔබ දැනටමත් PHP 7.0 වෙත මාරු වී ඒ අනුව කේතය නැවත ලියා ඇත - එවිට සමහර පැරණි PHP (5.5) සමඟ නිෂ්පාදනයේ පෙනුම යමෙකු පුදුමයට පත් කරනු ඇත. පරිවර්තක අනුවාදයේ විශාල වෙනසක් ගැන ඔබට අමතක විය නොහැක, නමුත් "යක්ෂයා විස්තර වල සිටී": පුදුමය ඕනෑම යැපීමක සුළු යාවත්කාලීන කිරීමක් විය හැකිය.

මෙම ගැටළුව විසඳීම සඳහා ප්රවේශයක් ලෙස හැඳින්වේ IaC (යටිතල පහසුකම් කේතය ලෙස, "යටිතල පහසුකම් කේතය ලෙස") සහ යෙදුම් කේතය සමඟ යටිතල පහසුකම් අවශ්‍යතා ගබඩා කිරීම ඇතුළත් වේ. එය භාවිතා කිරීමෙන්, සංවර්ධකයින්ට සහ DevOps විශේෂඥයින්ට එකම Git යෙදුම් ගබඩාව සමඟ වැඩ කළ හැකිය, නමුත් එහි විවිධ කොටස් මත. මෙම කේතයෙන්, Git හි ඩොකර් රූපයක් නිර්මාණය කර ඇති අතර, යටිතල ව්‍යුහයේ සියලු විශේෂතා සැලකිල්ලට ගනිමින් යෙදුම යොදවා ඇත. සරලව කිවහොත්, පින්තූර එකලස් කිරීම සඳහා වන ස්ක්‍රිප්ට් (රීති) ප්‍රභව කේතය සමඟ එකම ගබඩාවක තිබිය යුතු අතර එකට ඒකාබද්ධ කළ යුතුය.

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)

බහු-ස්ථර යෙදුම් ගෘහ නිර්මාණ ශිල්පය සම්බන්ධයෙන් - උදාහරණයක් ලෙස, ඩොකර් බහාලුමක් තුළ දැනටමත් ක්‍රියාත්මක වන යෙදුමක් ඉදිරිපිට nginx ඇත - එක් එක් ස්ථරයක් සඳහා Git හි කේතයෙන් ඩොකර් රූප සෑදිය යුතුය. එවිට පළමු රූපයේ පරිවර්තකයක් සහ අනෙකුත් "සමීප" පරායත්තතා සහිත යෙදුමක් අඩංගු වන අතර, දෙවන රූපයේ upstream nginx අඩංගු වේ.

ඩොකර් පින්තූර, Git සමඟ සන්නිවේදනය

අපි Git වෙතින් එකතු කරන ලද සියලුම Docker පින්තූර කාණ්ඩ දෙකකට බෙදන්නෙමු: තාවකාලික සහ මුදා හැරීම. තාවකාලික රූප Git හි ශාඛාවේ නාමයෙන් ටැග් කර ඇති අතර, ඊළඟ කැපවීම මගින් නැවත ලිවිය හැකි අතර පෙරදසුන සඳහා පමණක් (නිෂ්පාදනය සඳහා නොවේ). මුදා හැරීමට වඩා ඔවුන්ගේ ප්‍රධාන වෙනස මෙයයි: ඔවුන් තුළ කුමන නිශ්චිත කැපවීමක් ඇත්දැයි ඔබ නොදනී.

තාවකාලික රූපවලට එකතු කිරීම අර්ථවත් කරයි: මාස්ටර් ශාඛාව (ඔබට ස්වාමියාගේ වත්මන් අනුවාදය නිරන්තරයෙන් බැලීමට එය වෙනම වෙබ් අඩවියකට ස්වයංක්‍රීයව රෝල් කළ හැකිය), නිකුතු සහිත ශාඛා, විශේෂිත නවෝත්පාදනවල ශාඛා.

ඩොකර් සමඟ අඛණ්ඩ බෙදාහැරීමේ පිළිවෙත් (සමාලෝචනය සහ වීඩියෝ)
තාවකාලික රූපවල පෙරදසුන නිෂ්පාදනයට පරිවර්තනය කිරීමේ අවශ්‍යතාවයට පැමිණි පසු, සංවර්ධකයින් යම් ටැගයක් තබයි. ටැග් මගින් ස්වයංක්‍රීයව එකතු කරනු ලැබේ රූපය මුදා හැරීම (එහි ටැගය Git වෙතින් ටැගයට අනුරූප වේ) සහ වේදිකාගත කිරීම වෙත පෙරළේ. එය ගුණාත්මක දෙපාර්තමේන්තුව විසින් සාර්ථකව තහවුරු කර ඇත්නම්, එය නිෂ්පාදනයට යයි.

ඩැප්

විස්තර කර ඇති සෑම දෙයක්ම (rollout, image එකලස් කිරීම, පසුව නඩත්තු කිරීම) Bash scripts සහ අනෙකුත් "improvised" මෙවලම් භාවිතයෙන් ස්වාධීනව ක්රියාත්මක කළ හැකිය. නමුත් ඔබ මෙය කරන්නේ නම්, යම් අවස්ථාවක දී ක්රියාත්මක කිරීම විශාල සංකීර්ණතාවයක් සහ දුර්වල පාලනයක් ඇති කරයි. මෙය අවබෝධ කර ගනිමින්, අපි CI/CD ගොඩනැගීම සඳහා අපගේම විශේෂිත කාර්ය ප්‍රවාහ උපයෝගීතාවයක් නිර්මාණය කිරීමට පැමිණියෙමු - ඩැප්.

එහි ප්‍රභව කේතය රූබි, විවෘත මූලාශ්‍රයෙන් ලියා පළ කර ඇත GitHub. අවාසනාවකට, ලේඛනගත කිරීම දැනට මෙවලමෙහි දුර්වලම ස්ථානයයි, නමුත් අපි එය මත වැඩ කරමින් සිටිමු. අපි ඩැප් එක ගැන කිහිප වතාවක්ම ලියන්නෙමු, කතා කරන්නෙමු, මන්ද ... සමස්ත උනන්දුවක් දක්වන ප්‍රජාව සමඟ එහි හැකියාවන් බෙදා ගැනීමට අපට අවංකවම බලා සිටිය නොහැක, නමුත් ඒ අතරතුර, ඔබේ ගැටළු යවන්න සහ ඉල්ලීම් අදින්න සහ/හෝ GitHub හි ව්‍යාපෘතියේ සංවර්ධනය අනුගමනය කරන්න.

13 අගෝස්තු 2019 යාවත්කාලීන කරන ලදී: දැනට ව්යාපෘතියක් ඩැප් ලෙස නැවත නම් කරන ලදී werf, එහි කේතය සම්පූර්ණයෙන්ම Go හි නැවත ලියා ඇති අතර, එහි ලේඛනගත කිරීම සැලකිය යුතු ලෙස වැඩිදියුණු කර ඇත.

කුබර්නෙට්ස්

වෘත්තීය පරිසරය තුළ දැනටමත් සැලකිය යුතු පිළිගැනීමක් ලැබී ඇති තවත් සූදානම් කළ විවෘත මූලාශ්ර මෙවලමකි කුබර්නෙට්ස්,Docker කළමනාකරණ පොකුරක්. ඩොකර් මත ගොඩනගා ඇති ව්‍යාපෘති ක්‍රියාත්මක කිරීමේදී එහි භාවිතය පිළිබඳ මාතෘකාව වාර්තාවේ විෂය පථයෙන් ඔබ්බට ය, එබැවින් ඉදිරිපත් කිරීම සිත්ගන්නාසුලු විශේෂාංග කිහිපයක් පිළිබඳ දළ විශ්ලේෂණයකට සීමා වේ.

නිකුත් කිරීම සඳහා, Kubernetes පිරිනමයි:

  • සූදානම පරීක්ෂණය - යෙදුමේ නව අනුවාදයක සූදානම පරීක්ෂා කිරීම (එයට ගමනාගමනය මාරු කිරීමට);
  • rolling update - බහාලුම් පොකුරක් තුළ අනුක්‍රමික රූප යාවත්කාලීන කිරීම (වසා දැමීම, යාවත්කාලීන කිරීම, දියත් කිරීම සඳහා සූදානම් වීම, රථවාහන මාරු කිරීම);
  • සමමුහුර්ත යාවත්කාලීන කිරීම - වෙනත් ප්‍රවේශයක් සහිත පොකුරක් තුළ රූපයක් යාවත්කාලීන කිරීම: පළමුව බහාලුම්වලින් අඩක්, පසුව ඉතිරි කොටස;
  • canary releases - විෂමතා නිරීක්ෂණය කිරීම සඳහා සීමිත (කුඩා) බහාලුම් සංඛ්‍යාවක් මත නව රූපයක් දියත් කිරීම.

අඛණ්ඩ බෙදාහැරීම නව අනුවාදයක් නිකුත් කිරීම පමණක් නොවන බැවින්, Kubernetes හට පසුකාලීන යටිතල පහසුකම් නඩත්තු කිරීම සඳහා හැකියාවන් ගණනාවක් ඇත: සියලු බහාලුම් සඳහා ගොඩනගා ඇති අධීක්ෂණය සහ ලොග් වීම, ස්වයංක්‍රීය පරිමාණය, යනාදිය. මේ සියල්ල දැනටමත් ක්‍රියාත්මක වන අතර නිසියාකාරව බලා සිටී. ඔබේ ක්‍රියාවලි තුළ ක්‍රියාත්මක කිරීම.

අවසාන නිර්දේශ

  1. Docker භාවිතා කරන්න.
  2. ඔබගේ සියලු අවශ්‍යතා සඳහා යෙදුම්වල ඩොකර් රූප සාදන්න.
  3. "යටිතල පහසුකම් යනු කේතයයි" යන මූලධර්මය අනුගමනය කරන්න.
  4. ඩොකර් වෙත Git සම්බන්ධ කරන්න.
  5. පෙරළීමේ අනුපිළිවෙල නියාමනය කරන්න.
  6. සූදානම් කළ වේදිකාවක් භාවිතා කරන්න (කුබර්නෙටස් හෝ වෙනත්).

වීඩියෝ සහ විනිවිදක

කාර්ය සාධනයෙන් වීඩියෝව (පැයක් පමණ) YouTube හි පළ කර ඇත (වාර්තාව 5 වන මිනිත්තුවේ සිට ආරම්භ වේ - මේ මොහොතේ සිට සෙල්ලම් කිරීමට සබැඳිය අනුගමනය කරන්න).

වාර්තාව ඉදිරිපත් කිරීම:

ප්රාදේශීය සභා

අපගේ බ්ලොග් අඩවියේ මාතෘකාව පිළිබඳ වෙනත් වාර්තා:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න