අපගේ තාක්ෂණික අධ්යක්ෂවරයාගේ නවතම කථා පදනම් කරගත් ප්රකාශන සමඟ අපි අපගේ බ්ලොග් අඩවිය ආරම්භ කරමු
මැයි 31 සමුළුවේදී
ඔබට පැයක් ගත කිරීමට අවස්ථාවක් තිබේ නම්
ඩොකර් සමඟ අඛණ්ඩ බෙදා හැරීම
යටතේ අඛණ්ඩ භාරදීම Git ගබඩාවෙන් යෙදුම් කේතය මුලින්ම නිෂ්පාදනයට පැමිණ පසුව ලේඛනාගාරයේ අවසන් වන ප්රතිඵලයක් ලෙස සිදුවීම් දාමය අපි තේරුම් ගනිමු. එය මෙසේ පෙනේ: Git → Build → Test → Release → Operate.
වාර්තාවේ වැඩි කොටසක් ගොඩනැගීමේ අදියර (යෙදුම් එකලස් කිරීම) සඳහා කැප කර ඇති අතර, මාතෘකා මුදා හැරීම සහ ක්රියාත්මක කිරීම කෙටියෙන් ස්පර්ශ කරනු ලැබේ. ඒවා විසඳීමට ඔබට ඉඩ සලසන ගැටළු සහ රටා ගැන අපි කතා කරන්නෙමු, මෙම රටා වල නිශ්චිත ක්රියාත්මක කිරීම් වෙනස් විය හැකිය.
මෙහි ඩොකර් අවශ්ය වන්නේ ඇයි? මෙම විවෘත මූලාශ්ර මෙවලමෙහි සන්දර්භය තුළ අඛණ්ඩ බෙදා හැරීමේ පිළිවෙත් ගැන කතා කිරීමට අපි තීරණය කළේ නිකම්ම නොවේ. සම්පූර්ණ වාර්තාවම එහි භාවිතය සඳහා කැප කර ඇතත්, යෙදුම් කේත ප්රවාහයේ ප්රධාන රටාව සලකා බැලීමේදී බොහෝ හේතු අනාවරණය වේ.
ප්රධාන පෙරළීමේ රටාව
එබැවින්, අපි යෙදුමේ නව අනුවාද නිකුත් කරන විට, අපි නිසැකවම මුහුණ දෙන්නෙමු අක්රීය කාල ගැටලුව, නිෂ්පාදන සේවාදායකය මාරු කිරීමේදී ජනනය වේ. යෙදුමේ පැරණි අනුවාදයේ සිට නව එක වෙත ගමනාගමනය ක්ෂණිකව මාරු විය නොහැක: පළමුව අපි නව අනුවාදය සාර්ථකව බාගත කර ඇති බව පමණක් නොව, “උණුසුම්” (එනම්, ඉල්ලීම් සැපයීමට සම්පූර්ණයෙන්ම සූදානම්) බවට වග බලා ගත යුතුය.
මේ අනුව, යම් කාලයක් සඳහා යෙදුමේ අනුවාද දෙකම (පැරණි සහ නව) එකවර ක්රියා කරයි. ස්වයංක්රීයව මඟ පෙන්වන හවුල් සම්පත් ගැටුම: ජාලය, ගොනු පද්ධතිය, IPC, ආදිය. Docker සමඟින්, මෙම ගැටළුව පහසුවෙන් විසඳා ගත හැක්කේ යෙදුමේ විවිධ අනුවාද වෙනම බහාලුම්වල ධාවනය කිරීමෙන් වන අතර, ඒ සඳහා එකම ධාරක (සේවාදායක/අථත්ය යන්ත්රය) තුළ සම්පත් හුදකලා වීම සහතික කෙරේ. ඇත්ත වශයෙන්ම, ඔබට පරිවරණය නොමැතිව සමහර උපක්රම භාවිතා කළ හැකිය, නමුත් සූදානම් කළ සහ පහසු මෙවලමක් තිබේ නම්, ප්රතිවිරුද්ධ හේතුවක් තිබේ - එය නොසලකා හරින්න එපා.
බහාලුම් යෙදවීමේදී වෙනත් බොහෝ ප්රතිලාභ ලබා දේ. ඕනෑම යෙදුමක් රඳා පවතී නිශ්චිත අනුවාදය (හෝ අනුවාද පරාසය) පරිවර්තකයා, මොඩියුල / දිගු, ආදිය, මෙන්ම ඒවායේ අනුවාද ලබා ගත හැකිය. තවද මෙය ක්ෂණිකව ක්රියාත්මක කළ හැකි පරිසරයට පමණක් නොව, ඇතුළුව සමස්ත පරිසරයටම අදාළ වේ පද්ධති මෘදුකාංග සහ එහි අනුවාදය (භාවිතා කරන ලද ලිනක්ස් බෙදාහැරීම දක්වා). බහාලුම්වල යෙදුම් කේතය පමණක් නොව, අවශ්ය අනුවාදවල පෙර ස්ථාපනය කර ඇති පද්ධතිය සහ යෙදුම් මෘදුකාංග ද අඩංගු වන නිසා, ඔබට පරායත්තතා සමඟ ඇති ගැටළු අමතක කළ හැකිය.
අපි සාරාංශ කරමු ප්රධාන පෙරළීමේ රටාව පහත සඳහන් සාධක සැලකිල්ලට ගනිමින් නව අනුවාදයන්:
- මුලදී, යෙදුමේ පැරණි අනුවාදය පළමු කන්ටේනරය තුළ ක්රියාත්මක වේ.
- නව අනුවාදය පසුව රෝල් කර දෙවන කන්ටේනරය තුළ "උණුසුම්" කර ඇත. මෙම නව අනුවාදයම යාවත්කාලීන යෙදුම් කේතය පමණක් නොව, එහි ඕනෑම පරායත්තතාවයක් මෙන්ම පද්ධති සංරචක ද රැගෙන යා හැකි බව සැලකිය යුතු කරුණකි (උදාහරණයක් ලෙස, OpenSSL හි නව අනුවාදයක් හෝ සම්පූර්ණ බෙදා හැරීම).
- නව අනුවාදය ඉල්ලීම් සැපයීමට සම්පූර්ණයෙන්ම සූදානම් වූ විට, රථවාහන පළමු බහාලුමේ සිට දෙවැන්නට මාරු වේ.
- පැරණි අනුවාදය දැන් නතර කළ හැකිය.
යෙදුමේ විවිධ අනුවාද වෙනම බහාලුම්වල යෙදවීමේ මෙම ප්රවේශය තවත් පහසුවක් සපයයි - ඉක්මන් ආපසු හැරීම පැරණි අනුවාදයට (සියල්ලට පසු, එය අවශ්ය බහාලුම් වෙත ගමනාගමනය මාරු කිරීමට ප්රමාණවත් වේ).
අවසාන පළමු නිර්දේශය කපිතාන්ට පවා වරදක් සොයාගත නොහැකි දෙයක් ලෙස පෙනේ: "[ඩොකර් සමඟ අඛණ්ඩ බෙදා හැරීම සංවිධානය කරන විට] 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 ගොඩනැගීම සඳහා අපගේම විශේෂිත කාර්ය ප්රවාහ උපයෝගීතාවයක් නිර්මාණය කිරීමට පැමිණියෙමු - ඩැප්.
එහි ප්රභව කේතය රූබි, විවෘත මූලාශ්රයෙන් ලියා පළ කර ඇත
13 අගෝස්තු 2019 යාවත්කාලීන කරන ලදී: දැනට ව්යාපෘතියක් ඩැප් ලෙස නැවත නම් කරන ලදී
කුබර්නෙට්ස්
වෘත්තීය පරිසරය තුළ දැනටමත් සැලකිය යුතු පිළිගැනීමක් ලැබී ඇති තවත් සූදානම් කළ විවෘත මූලාශ්ර මෙවලමකි කුබර්නෙට්ස්,Docker කළමනාකරණ පොකුරක්. ඩොකර් මත ගොඩනගා ඇති ව්යාපෘති ක්රියාත්මක කිරීමේදී එහි භාවිතය පිළිබඳ මාතෘකාව වාර්තාවේ විෂය පථයෙන් ඔබ්බට ය, එබැවින් ඉදිරිපත් කිරීම සිත්ගන්නාසුලු විශේෂාංග කිහිපයක් පිළිබඳ දළ විශ්ලේෂණයකට සීමා වේ.
නිකුත් කිරීම සඳහා, Kubernetes පිරිනමයි:
- සූදානම පරීක්ෂණය - යෙදුමේ නව අනුවාදයක සූදානම පරීක්ෂා කිරීම (එයට ගමනාගමනය මාරු කිරීමට);
- rolling update - බහාලුම් පොකුරක් තුළ අනුක්රමික රූප යාවත්කාලීන කිරීම (වසා දැමීම, යාවත්කාලීන කිරීම, දියත් කිරීම සඳහා සූදානම් වීම, රථවාහන මාරු කිරීම);
- සමමුහුර්ත යාවත්කාලීන කිරීම - වෙනත් ප්රවේශයක් සහිත පොකුරක් තුළ රූපයක් යාවත්කාලීන කිරීම: පළමුව බහාලුම්වලින් අඩක්, පසුව ඉතිරි කොටස;
- canary releases - විෂමතා නිරීක්ෂණය කිරීම සඳහා සීමිත (කුඩා) බහාලුම් සංඛ්යාවක් මත නව රූපයක් දියත් කිරීම.
අඛණ්ඩ බෙදාහැරීම නව අනුවාදයක් නිකුත් කිරීම පමණක් නොවන බැවින්, Kubernetes හට පසුකාලීන යටිතල පහසුකම් නඩත්තු කිරීම සඳහා හැකියාවන් ගණනාවක් ඇත: සියලු බහාලුම් සඳහා ගොඩනගා ඇති අධීක්ෂණය සහ ලොග් වීම, ස්වයංක්රීය පරිමාණය, යනාදිය. මේ සියල්ල දැනටමත් ක්රියාත්මක වන අතර නිසියාකාරව බලා සිටී. ඔබේ ක්රියාවලි තුළ ක්රියාත්මක කිරීම.
අවසාන නිර්දේශ
- Docker භාවිතා කරන්න.
- ඔබගේ සියලු අවශ්යතා සඳහා යෙදුම්වල ඩොකර් රූප සාදන්න.
- "යටිතල පහසුකම් යනු කේතයයි" යන මූලධර්මය අනුගමනය කරන්න.
- ඩොකර් වෙත Git සම්බන්ධ කරන්න.
- පෙරළීමේ අනුපිළිවෙල නියාමනය කරන්න.
- සූදානම් කළ වේදිකාවක් භාවිතා කරන්න (කුබර්නෙටස් හෝ වෙනත්).
වීඩියෝ සහ විනිවිදක
කාර්ය සාධනයෙන් වීඩියෝව (පැයක් පමණ)
වාර්තාව ඉදිරිපත් කිරීම:
ප්රාදේශීය සභා
අපගේ බ්ලොග් අඩවියේ මාතෘකාව පිළිබඳ වෙනත් වාර්තා:
- «
werf - Kubernetes හි CI / CD සඳහා අපගේ මෙවලම (දළ විශ්ලේෂණය සහ වීඩියෝ වාර්තාව) » (Dmitry Stolyarov; 27 මැයි 2019 DevOpsConf හිදී); - «
දත්ත සමුදායන් සහ Kubernetes » (Dmitry Stolyarov; නොවැම්බර් 8, 2018 HighLoad++ මත); - «
Kubernetes සහ GitLab සමඟ CI/CD හොඳම භාවිතයන් » (Dmitry Stolyarov; නොවැම්බර් 7, 2017 HighLoad++ මත); - «
කුඩා ව්යාපෘති වල Kubernetes සමඟ අපගේ අත්දැකීම් » (Dmitry Stolyarov; ජූනි 6, 2017 RootConf හිදී).
මූලාශ්රය: www.habr.com