GitOps යනු කුමක්ද?

සටහන. පරිවර්තනය.: මෑත ප්රකාශනයකින් පසුව ද්රව්ය GitOps හි අදින්න සහ තල්ලු කිරීමේ ක්‍රම ගැන, අපි පොදුවේ මෙම ආකෘතිය කෙරෙහි උනන්දුවක් දුටුවෙමු, නමුත් මෙම මාතෘකාව පිළිබඳ රුසියානු භාෂා ප්‍රකාශන ඉතා ස්වල්පයක් තිබුණි (හබ්රේ හි කිසිවක් නොමැත). එමනිසා, තවත් ලිපියක පරිවර්තනයක් ඔබේ අවධානයට ඉදිරිපත් කිරීමට අපි සතුටු වෙමු - වසරකට පමණ පෙර වුවද! - Weaveworks වෙතින්, එහි ප්‍රධානියා "GitOps" යන යෙදුම නිර්මාණය කළේය. පාඨය ප්රවේශයේ සාරය සහ පවතින අයගෙන් ප්රධාන වෙනස්කම් පැහැදිලි කරයි.

වසරකට පෙර අප විසින් ප්රකාශයට පත් කරන ලදී GitOps සඳහා හැඳින්වීම. එදා, Weaveworks කණ්ඩායම සම්පූර්ණයෙන්ම Kubernetes මත පදනම් වූ SaaS දියත් කළ ආකාරය සහ ක්ලවුඩ් ස්වදේශීය පරිසරයක් තුළ යෙදවීම, කළමනාකරණය කිරීම සහ අධීක්ෂණය කිරීම සඳහා නිර්දේශිත හොඳම භාවිතයන් මාලාවක් සකස් කළ ආකාරය අපි බෙදා ගත්තෙමු.

ලිපිය ජනප්රිය විය. වෙනත් අය GitOps ගැන කතා කිරීමට පටන් ගත් අතර නව මෙවලම් ප්‍රකාශයට පත් කිරීමට පටන් ගත්හ git push, සංවර්ධනයක්, රහස්, කාර්යයන්, අඛණ්ඩ ඒකාබද්ධතාවය සහ යනාදි. අපගේ වෙබ් අඩවියේ පෙනී සිටියේය විශාල සංඛ්යාවක් ප්‍රකාශන සහ GitOps භාවිත අවස්ථා. නමුත් සමහර අයට තවමත් ප්රශ්න තිබේ. ආකෘතිය සම්ප්රදායික එකට වඩා වෙනස් වන්නේ කෙසේද? යටිතල පහසුකම් කේතය ලෙස සහ අඛණ්ඩ බෙදාහැරීම (අඛණ්ඩ භාරදීම)? Kubernetes භාවිතා කිරීම අවශ්යද?

ඉදිරිපත් කරමින් නව විස්තරයක් අවශ්‍ය බව අපි ඉක්මනින්ම තේරුම් ගත්තෙමු:

  1. උදාහරණ සහ කථා විශාල සංඛ්යාවක්;
  2. GitOps හි නිශ්චිත අර්ථ දැක්වීම;
  3. සාම්ප්රදායික අඛණ්ඩ බෙදාහැරීම සමඟ සැසඳීම.

මෙම ලිපියෙන් අපි මෙම සියලු මාතෘකා ආවරණය කිරීමට උත්සාහ කර ඇත. එය GitOps සඳහා යාවත්කාලීන හැඳින්වීමක් සහ සංවර්ධක සහ CI/CD ඉදිරිදර්ශනයක් සපයයි. ආකෘතිය සාමාන්‍යකරණය කළ හැකි වුවද, අපි මූලික වශයෙන් Kubernetes වෙත අවධානය යොමු කරමු.

GitOps හමුවන්න

ඇලිස් සිතන්න. ඇය පවුල් රක්‍ෂණය පවත්වාගෙන යන අතර, එය කොන්ත්‍රාත්තුවේ අභ්‍යන්තර සහ පිටස්‌තර සොයා ගැනීමට නොහැකි තරම් කාර්යබහුල පුද්ගලයන්ට සෞඛ්‍ය, වාහන, නිවාස සහ සංචාරක රක්‍ෂණ පිරිනමයි. ඇලිස් දත්ත විද්‍යාඥවරියක් ලෙස බැංකුවක සේවය කරන විට ඇයගේ ව්‍යාපාරය අතුරු ව්‍යාපෘතියක් ලෙස ආරම්භ විය. දිනක් ඇය තේරුම් ගත්තා දියුණු පරිගණක ඇල්ගොරිතම භාවිතා කරමින් දත්ත වඩාත් ඵලදායී ලෙස විශ්ලේෂණය කර රක්ෂණ පැකේජ සකස් කළ හැකි බව. ආයෝජකයින් මෙම ව්‍යාපෘතිය සඳහා මුදල් යෙදවූ අතර දැන් ඇගේ සමාගම වසරකට ඩොලර් මිලියන 20කට වඩා වැඩි ආදායමක් ගෙන එන අතර වේගයෙන් වර්ධනය වෙමින් පවතී. දැනට එහි විවිධ තනතුරුවල 180 දෙනෙකු සේවය කරයි. මෙයට වෙබ් අඩවිය, දත්ත සමුදාය, පාරිභෝගික පදනම සංවර්ධනය කිරීම, නඩත්තු කිරීම සහ විශ්ලේෂණය කරන තාක්ෂණික කණ්ඩායමක් ඇතුළත් වේ. 60 දෙනෙකුගෙන් යුත් කණ්ඩායම මෙහෙයවනු ලබන්නේ සමාගමේ තාක්ෂණික අධ්‍යක්ෂ බොබ් විසිනි.

බොබ්ගේ කණ්ඩායම වලාකුළෙහි නිෂ්පාදන පද්ධති යොදවයි. Google Cloud හි Kubernetes හි වාසිය ලබා ගනිමින් ඔවුන්ගේ මූලික යෙදුම් GKE මත ධාවනය වේ. මීට අමතරව, ඔවුන් ඔවුන්ගේ කාර්යයේදී විවිධ දත්ත සහ විශ්ලේෂණ මෙවලම් භාවිතා කරයි.

Family Insurance කන්ටේනර් භාවිතා කිරීමට පටන් ගත්තේ නැත, නමුත් Docker උද්යෝගයට හසු විය. GKE විසින් නව විශේෂාංග පරීක්ෂා කිරීම සඳහා පොකුරු යෙදවීම පහසු කර ඇති බව සමාගම ඉක්මනින්ම සොයා ගන්නා ලදී. කන්ටේනර් රෙජිස්ට්‍රිය සංවිධානය කිරීම සඳහා CI සහ Quay සඳහා Jenkins එකතු කරන ලදී, GKE වෙත නව බහාලුම් සහ වින්‍යාසයන් තල්ලු කරන ලද Jenkins සඳහා ස්ක්‍රිප්ට් ලියා ඇත.

යම් කාලයක් ගත වී ඇත. ඇලිස් සහ බොබ් ඔවුන් තෝරාගත් ප්‍රවේශයේ ක්‍රියාකාරිත්වය සහ ව්‍යාපාරයට එහි බලපෑම ගැන කලකිරීමට පත් වූහ. කන්ටේනර් හඳුන්වාදීමෙන් කණ්ඩායම බලාපොරොත්තු වූ තරම් ඵලදායිතාව ඉහළ ගියේ නැත. සමහර විට යෙදවීම් බිඳ වැටෙනු ඇති අතර, කේත වෙනස් කිරීම් දොස් පැවරිය යුතුද යන්න අපැහැදිලි විය. වින්‍යාස වෙනස් කිරීම් නිරීක්ෂණය කිරීම ද අපහසු විය. බොහෝ විට නව පොකුරක් නිර්මාණය කිරීම සහ එයට යෙදුම් ගෙනයාම අවශ්‍ය විය, මන්ද පද්ධතිය බවට පත්ව ඇති අවුල තුරන් කිරීමට ඇති පහසුම ක්‍රමය මෙයයි. යෙදුම වර්ධනය වන විට තත්වය වඩාත් නරක අතට හැරෙනු ඇතැයි ඇලිස් බිය විය (ඊට අමතරව, යන්ත්‍ර ඉගෙනීම මත පදනම් වූ නව ව්‍යාපෘතියක් බීරෙමින් පවතී). බොබ් බොහෝ වැඩ ස්වයංක්‍රීය කර ඇති අතර නල මාර්ගය තවමත් අස්ථායී, හොඳින් පරිමාණය නොකළ සහ වරින් වර අතින් මැදිහත්වීම් අවශ්‍ය වන්නේ මන්දැයි තේරුම් නොගත්තේද?

ඊට පස්සේ GitOps ගැන ඉගෙන ගත්තා. මෙම තීරණය ඔවුන්ට විශ්වාසයෙන් යුතුව ඉදිරියට යාමට අවශ්‍ය දේ බවට පත් විය.

ඇලිස් සහ බොබ් වසර ගණනාවක් තිස්සේ කේත කාර්ය ප්‍රවාහයන් ලෙස Git, DevOps සහ යටිතල පහසුකම් ගැන අසා ඇත. GitOps හි ඇති සුවිශේෂත්වය නම්, එය Kubernetes හි සන්දර්භය තුළ මෙම අදහස් ක්‍රියාත්මක කිරීම සඳහා නිශ්චිත සහ ප්‍රමිති යන දෙකම හොඳම භාවිතයන් මාලාවක් ගෙන ඒමයි. මෙම තේමාව නැවත නැවතත් නැග්ගා, ඇතුළුව Weweworks බ්ලොග්.

පවුල් රක්ෂණය GitOps ක්‍රියාත්මක කිරීමට තීරණය කරයි. සමාගමට දැන් ස්වයංක්‍රීය මෙහෙයුම් ආකෘතියක් ඇති අතර එය Kubernetes සමඟ අනුකූල වන අතර ඒකාබද්ධ වේ වේගය සමඟ ස්ථාවරත්වයමන්ද ඔවුන්:

  • කිසිවෙකු පිස්සු වට්ටන්නේ නැතිව කණ්ඩායමේ ඵලදායිතාව දෙගුණයක් වූ බව සොයා ගන්නා ලදී;
  • ස්ක්‍රිප්ට් සේවය කිරීම නැවැත්තුවා. ඒ වෙනුවට, ඔවුන්ට දැන් නව විශේෂාංග කෙරෙහි අවධානය යොමු කිරීමට සහ ඉංජිනේරු ක්‍රම වැඩිදියුණු කිරීමට හැකිය - නිදසුනක් ලෙස, කැනරි රෝල්අවුට් හඳුන්වාදීම සහ පරීක්ෂණ වැඩිදියුණු කිරීම;
  • අපි යෙදවීමේ ක්‍රියාවලිය වැඩි දියුණු කර ඇති අතර එමඟින් එය කලාතුරකින් කැඩී යයි;
  • අතින් මැදිහත් වීමකින් තොරව අර්ධ අසාර්ථක වීමෙන් පසු යෙදවීම් යථා තත්ත්වයට පත් කිරීමට අවස්ථාව ලැබුණි;
  • මිලදී ගත් භාවිතාоබෙදා හැරීමේ පද්ධති කෙරෙහි වැඩි විශ්වාසයක්. ඇලිස් සහ බොබ් විසින් කණ්ඩායම සමාන්තරව ක්‍රියා කරන ක්ෂුද්‍ර සේවා කණ්ඩායම්වලට බෙදිය හැකි බව සොයා ගත්හ.
  • සෑම කණ්ඩායමකම උත්සාහයන් හරහා සෑම දිනකම ව්යාපෘතියේ වෙනස්කම් 30-50 ක් සිදු කළ හැකි අතර නව තාක්ෂණික ක්රම අත්හදා බලන්න;
  • නව සංවර්ධකයින් ව්‍යාපෘතියට ආකර්ෂණය කර ගැනීම පහසුය, පැය කිහිපයක් ඇතුළත ඇදීමේ ඉල්ලීම් භාවිතයෙන් නිෂ්පාදනයට යාවත්කාලීන කිරීමට අවස්ථාව තිබේ;
  • SOC2 රාමුව තුළ පහසුවෙන් විගණනය සමත් වේ (ආරක්ෂිත දත්ත කළමනාකරණය සඳහා වන අවශ්‍යතා සමඟ සේවා සපයන්නන්ගේ අනුකූලතාවය සඳහා; වැඩිදුර කියවන්න, උදාහරණයක් ලෙස, මෙහි - ආසන්න වශයෙන්. පරිවර්තනය.).

මොකද වුණේ?

GitOps යනු කරුණු දෙකකි:

  1. Kubernetes සහ cloud native සඳහා මෙහෙයුම් ආකෘතිය. එය බහාලුම් පොකුරු සහ යෙදුම් යෙදවීම, කළමනාකරණය කිරීම සහ අධීක්ෂණය කිරීම සඳහා හොඳම භාවිතයන් මාලාවක් සපයයි. ආකෘතියේ අලංකාර අර්ථ දැක්වීම එක් විනිවිදකයක් от ලුයිස් ෆේසිරා:
  2. සංවර්ධක කේන්ද්‍රීය යෙදුම් කළමනාකරණ පරිසරයක් නිර්මාණය කිරීමේ මාර්ගය. අපි මෙහෙයුම් සහ සංවර්ධනය යන දෙකටම Git කාර්ය ප්‍රවාහය යොදන්නෙමු. මෙය Git push ගැන පමණක් නොව, CI/CD සහ UI/UX මෙවලම්වල සම්පූර්ණ කට්ටලයම සංවිධානය කිරීම බව කරුණාවෙන් සලකන්න.

Git ගැන වචන කිහිපයක්

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

Kubernetes ක්රියා කරන ආකාරය

අපේ කතාවේදී, ඇලිස් සහ බොබ් ටික කලක් Kubernetes සමඟ වැඩ කිරීමෙන් පසු GitOps වෙත යොමු විය. ඇත්ත වශයෙන්ම, GitOps Kubernetes සමඟ සමීපව සම්බන්ධ වේ - එය Kubernetes මත පදනම් වූ යටිතල පහසුකම් සහ යෙදුම් සඳහා මෙහෙයුම් ආකෘතියකි.

Kubernetes පරිශීලකයින්ට ලබා දෙන්නේ කුමක්ද?

මෙන්න ප්‍රධාන විශේෂාංග කිහිපයක්:

  1. Kubernetes ආකෘතියේ දී, සෑම දෙයක්ම ප්රකාශන ආකාරයෙන් විස්තර කළ හැකිය.
  2. Kubernetes API සේවාදායකය මෙම ප්‍රකාශය ආදානය ලෙස ගන්නා අතර පසුව ප්‍රකාශනයේ විස්තර කර ඇති තත්වයට පොකුර ගෙන ඒමට අඛණ්ඩව උත්සාහ කරයි.
  3. විවිධාකාර වැඩ බර විස්තර කිරීමට සහ කළමනාකරණය කිරීමට ප්රකාශන ප්රමාණවත් වේ - "යෙදුම්".
  4. එහි ප්‍රතිඵලයක් වශයෙන්, යෙදුමේ සහ පොකුරේ වෙනස්කම් සිදු වන්නේ:
    • බහාලුම් රූපවල වෙනස්කම්;
    • ප්රකාශන පිරිවිතරයේ වෙනස්කම්;
    • පරිසරයේ දෝෂ - උදාහරණයක් ලෙස, බහාලුම් කඩා වැටීම්.

කුබර්නෙට්ස්ගේ මහා අභිසාරී හැකියාවන්

පරිපාලකයෙකු වින්‍යාස වෙනස්කම් සිදු කරන විට, Kubernetes වාද්‍ය වෘන්දය එහි තත්වය පවතින තාක් කල් ඒවා පොකුරට යොදනු ඇත. නව වින්‍යාසයට සමීප නොවනු ඇත. මෙම ආකෘතිය ඕනෑම Kubernetes සම්පතක් සඳහා ක්‍රියා කරන අතර Custom Resource Definitions (CRDs) සමඟ විස්තීරණය වේ. එබැවින්, Kubernetes යෙදවීමට පහත පුදුමාකාර ගුණාංග ඇත:

  • ස්වයංක්‍රීයකරණය: Kubernetes යාවත්කාල කිරීම් මගින් වෙනස්කම් අලංකාර ලෙස සහ කාලෝචිත ලෙස යෙදීමේ ක්‍රියාවලිය ස්වයංක්‍රීය කිරීමට යාන්ත්‍රණයක් සපයයි.
  • අභිසාරී වීම: Kubernetes සාර්ථක වන තෙක් යාවත්කාලීන කිරීමට උත්සාහ කරනු ඇත.
  • නිර්ලජ්ජිතභාවය: අභිසාරීතාවයේ නැවත නැවත යෙදීම එකම ප්‍රතිඵලයට මග පාදයි.
  • නියතිවාදය: සම්පත් ප්‍රමාණවත් වන විට, යාවත්කාලීන කළ පොකුරේ තත්ත්වය රඳා පවතින්නේ අපේක්ෂිත තත්ත්වය මත පමණි.

GitOps ක්‍රියා කරන ආකාරය

GitOps ක්‍රියා කරන ආකාරය පැහැදිලි කිරීමට අපි Kubernetes ගැන ප්‍රමාණවත් තරම් ඉගෙන ගෙන ඇත්තෙමු.

අපි නැවතත් Family Insurance හි ක්ෂුද්‍ර සේවා කණ්ඩායම් වෙත යමු. ඔවුන් සාමාන්යයෙන් කළ යුත්තේ කුමක්ද? පහත ලැයිස්තුව බලන්න (එහි ඇති කිසියම් අයිතමයක් අමුතු හෝ නුහුරු බවක් පෙනේ නම්, කරුණාකර විවේචනය කිරීම නවතා අප සමඟ සිටින්න). මේවා ජෙන්කින්ස් පදනම් වූ වැඩ ප්‍රවාහයන් සඳහා උදාහරණ පමණි. වෙනත් මෙවලම් සමඟ වැඩ කරන විට තවත් බොහෝ ක්රියාවලීන් තිබේ.

ප්රධාන දෙය නම්, සෑම යාවත්කාලීනයක්ම වින්යාස ගොනු සහ Git ගබඩාවල වෙනස්කම් වලින් අවසන් වන බව අපට පෙනේ. Git වෙත මෙම වෙනස්කම් "GitOps ක්රියාකරු" පොකුර යාවත්කාලීන කිරීමට හේතු වේ:

1. වැඩ කිරීමේ ක්රියාවලිය: "ජෙන්කින්ස් ගොඩනැගීම - ප්රධාන ශාඛාව".
කාර්ය සාධක ලැයිස්තුව:

  • ජෙන්කින්ස් ටැග් කළ පින්තූර ක්වේ වෙත තල්ලු කරයි;
  • ජෙන්කින්ස් ප්‍රධාන ගබඩා බාල්දියට වින්‍යාස සහ හෙල්ම් ප්‍රස්ථාර තල්ලු කරයි;
  • වලාකුළු ශ්‍රිතය ප්‍රධාන ගබඩා බාල්දියේ සිට ප්‍රධාන Git ගබඩාව වෙත වින්‍යාස සහ ප්‍රස්ථාර පිටපත් කරයි;
  • GitOps ක්‍රියාකරු පොකුර යාවත්කාලීන කරයි.

2. ජෙන්කින්ස් ගොඩනැගීම - මුදා හැරීම හෝ හොට්ෆික්ස් ශාඛාව:

  • ජෙන්කින්ස් ටැග් නොකළ පින්තූර ක්වේ වෙත තල්ලු කරයි;
  • ජෙන්කින්ස් වින්‍යාස සහ හෙල්ම් ප්‍රස්ථාර වේදිකා ගබඩා බාල්දියට තල්ලු කරයි;
  • වලාකුළු ශ්‍රිතය මඟින් වින්‍යාසය සහ ප්‍රස්ථාර ස්ථාපන ගබඩා බාල්දියේ සිට ස්ටේජින් Git ගබඩාව වෙත පිටපත් කරයි;
  • GitOps ක්‍රියාකරු පොකුර යාවත්කාලීන කරයි.

3. ජෙන්කින්ස් ගොඩනැගීම - සංවර්ධනය කිරීම හෝ විශේෂාංග ශාඛාව:

  • ජෙන්කින්ස් ටැග් නොකළ පින්තූර ක්වේ වෙත තල්ලු කරයි;
  • ජෙන්කින්ස් වින්‍යාස සහ හෙල්ම් ප්‍රස්ථාර සංවර්ධන ගබඩා බාල්දියට තල්ලු කරයි;
  • ක්ලවුඩ් ශ්‍රිතය මගින් වින්‍යාසය සහ ප්‍රස්ථාර සංවර්ධක ගබඩා බාල්දියේ සිට develop Git ගබඩාව වෙත පිටපත් කරයි;
  • GitOps ක්‍රියාකරු පොකුර යාවත්කාලීන කරයි.

4. නව සේවාදායකයකු එකතු කිරීම:

  • කළමනාකරු හෝ පරිපාලක (LCM/ops) මුලින් ජාල පැටවුම් සමතුලිතයන් (NLBs) යෙදවීමට සහ වින්‍යාස කිරීමට Gradle අමතයි;
  • LCM/ops යාවත්කාලීන කිරීම් සඳහා යෙදවීම සකස් කිරීම සඳහා නව වින්‍යාසයක් සිදු කරයි;
  • GitOps ක්‍රියාකරු පොකුර යාවත්කාලීන කරයි.

GitOps පිළිබඳ කෙටි විස්තරයක්

  1. එක් එක් පරිසරය සඳහා ප්‍රකාශන පිරිවිතර භාවිතා කරමින් සමස්ත පද්ධතියේ අපේක්ෂිත තත්වය විස්තර කරන්න (අපගේ කතාවේ, Bob ගේ කණ්ඩායම Git හි සමස්ත පද්ධති වින්‍යාසය නිර්වචනය කරයි).
    • Git ගබඩාව යනු සමස්ත පද්ධතියේ අපේක්ෂිත තත්ත්වය සම්බන්ධයෙන් සත්‍යයේ තනි මූලාශ්‍රයයි.
    • Git හි ඇති කැපවීම් හරහා අපේක්ෂිත තත්වයට සියලුම වෙනස්කම් සිදු කෙරේ.
    • අවශ්‍ය සියලුම පොකුරු පරාමිතීන් ද පොකුරේම නිරීක්ෂණය කළ හැක. මේ ආකාරයෙන් අපට ඒවා සමපාත වේද යන්න තීරණය කළ හැකිය (අභිසාරී, අභිසාරී) හෝ වෙනස් (අපසරනය, අපසරනය) අපේක්ෂිත සහ නිරීක්ෂණය කළ තත්වයන්.
  2. අපේක්ෂිත සහ නිරීක්ෂණය කළ තත්වයන් වෙනස් නම්, එසේ නම්:
    • අභිසාරී යාන්ත්‍රණයක් ඇත, එය ඉක්මනින් හෝ පසුව ස්වයංක්‍රීයව ඉලක්කය සහ නිරීක්ෂිත තත්වයන් සමමුහුර්ත කරයි. පොකුර ඇතුළත, කුබර්නෙටස් මෙය කරයි.
    • මෙම ක්රියාවලිය "වෙනස් කිරීමට කැප වූ" අනතුරු ඇඟවීමකින් වහාම ආරම්භ වේ.
    • වින්‍යාසගත කළ හැකි කාලයකට පසුව, ප්‍රාන්ත වෙනස් නම් "වෙනස" ඇඟවීමක් යැවිය හැක.
  3. මේ ආකාරයට, Git හි ඇති සියලුම කැපවීම් පොකුරට සත්‍යාපනය කළ හැකි සහ බල රහිත යාවත්කාලීන කිරීම් ඇති කරයි.
    • ආපසු හැරීම යනු පෙර අපේක්ෂිත තත්වයකට අභිසාරී වීමයි.
  4. අභිසාරීත්වය අවසන් වේ. එහි සිදුවීම පෙන්නුම් කරන්නේ:
    • නිශ්චිත කාල සීමාවක් සඳහා වෙනස්කම් ඇඟවීම් නොමැත.
    • "අභිසාරී" ඇඟවීම් (උදා: webhook, Git ලිවීමේ සිදුවීම).

අපසරනය යනු කුමක්ද?

අපි නැවත නැවත කියමු: සියලුම අපේක්ෂිත පොකුරු ගුණාංග පොකුරේම නිරීක්ෂණය කළ යුතුය.

අපගමනය පිළිබඳ උදාහරණ කිහිපයක්:

  • Git හි ශාඛා ඒකාබද්ධ කිරීම හේතුවෙන් වින්‍යාස ගොනුවේ වෙනස් වීම.
  • GUI සේවාදායකයා විසින් කරන ලද Git කැපවීමක් හේතුවෙන් වින්‍යාස ගොනුවේ වෙනසක්.
  • Git හි PR හේතුවෙන් අපේක්ෂිත තත්වයට බහුවිධ වෙනස්කම් සිදු කිරීමෙන් අනතුරුව බහාලුම් රූපය ගොඩනැගීම සහ වින්‍යාස වෙනස් කිරීම.
  • දෝෂයක්, සම්පත් ගැටුමක් හේතුවෙන් "නරක හැසිරීම" හෝ හුදෙක් මුල් තත්වයෙන් අහඹු ලෙස අපගමනය වීම හේතුවෙන් පොකුරේ තත්වය වෙනස් වීම.

අභිසාරී යාන්ත්රණය කුමක්ද?

උදාහරණ කිහිපයක්:

  • බහාලුම් සහ පොකුරු සඳහා, අභිසාරී යාන්ත්‍රණය සපයනු ලබන්නේ Kubernetes විසිනි.
  • Kubernetes මත පදනම් වූ යෙදුම් සහ සැලසුම් (Istio සහ Kubeflow වැනි) කළමනාකරණය කිරීමට එම යාන්ත්‍රණයම භාවිතා කළ හැක.
  • Kubernetes, image repositories සහ Git අතර මෙහෙයුම් අන්තර්ක්‍රියා කළමනාකරණය සඳහා යාන්ත්‍රණයක් සපයයි GitOps ක්රියාකරු Weave Flux, කොටසකි වලාකුළු වියන්න.
  • පාදක යන්ත්‍ර සඳහා අභිසාරී යාන්ත්‍රණය ප්‍රකාශන සහ ස්වායත්ත විය යුතුය. අපගේම අත්දැකීමෙන් අපට එය පැවසිය හැකිය භූමිෂ් .ය මෙම නිර්වචනයට ආසන්නතම, නමුත් තවමත් මානව පාලනය අවශ්ය වේ. මෙම අර්ථයෙන්, GitOps යටිතල පහසුකම් සම්ප්‍රදාය කේතය ලෙස ව්‍යාප්ත කරයි.

GitOps සූරාකෑම සඳහා ආදර්ශයක් සැපයීම සඳහා Kubernetes හි විශිෂ්ට අභිසාරී එන්ජිම සමඟ Git ඒකාබද්ධ කරයි.

GitOps අපට පැවසීමට ඉඩ දෙයි: විස්තර කළ හැකි සහ නිරීක්ෂණය කළ හැකි පද්ධති පමණක් ස්වයංක්‍රීයව සහ පාලනය කළ හැකිය.

GitOps සමස්ත වලාකුළු ස්වදේශීය තොගය සඳහා අදහස් කෙරේ (උදාහරණයක් ලෙස, Terraform, ආදිය)

GitOps යනු Kubernetes පමණක් නොවේ. අපට අවශ්‍ය වන්නේ සමස්ත පද්ධතියම ප්‍රකාශනාත්මකව ධාවනය කර අභිසාරීතාව භාවිතා කිරීමයි. සමස්ත පද්ධතියෙන් අපි අදහස් කරන්නේ Kubernetes සමඟ වැඩ කරන පරිසර එකතුවකි - උදාහරණයක් ලෙස, "dev cluster 1", "production", ආදිය. සෑම පරිසරයකම යන්ත්‍ර, පොකුරු, යෙදුම්, මෙන්ම දත්ත සපයන බාහිර සේවා සඳහා අතුරු මුහුණත්, අධීක්ෂණය ඇතුළත් වේ. සහ ආදිය.

මෙම නඩුවේ bootstrapping ගැටලුව සඳහා Terraform කොතරම් වැදගත්ද යන්න සැලකිල්ලට ගන්න. Kubernetes කොතැනක හෝ යෙදවිය යුතු අතර Terraform භාවිතා කිරීමෙන් අදහස් වන්නේ Kubernetes සහ යෙදුම් වලට යටින් පවතින පාලන ස්තරය සෑදීමට අපට එම GitOps කාර්ය ප්‍රවාහයන් යෙදිය හැකි බවයි. මෙය ප්රයෝජනවත් හොඳම භාවිතයකි.

Kubernetes මත ඇති ස්ථරවලට GitOps සංකල්ප යෙදීම කෙරෙහි දැඩි අවධානයක් යොමු කර ඇත. මේ මොහොතේ, Istio, Helm, Ksonnet, OpenFaaS සහ Kubeflow සඳහා GitOps ආකාරයේ විසඳුම් මෙන්ම, උදාහරණයක් ලෙස, Pulumi සඳහා, වලාකුළු ස්වදේශීය සඳහා යෙදුම් සංවර්ධනය කිරීම සඳහා ස්ථරයක් නිර්මාණය කරයි.

Kubernetes CI/CD: GitOps වෙනත් ප්‍රවේශයන් සමඟ සංසන්දනය කිරීම

සඳහන් කර ඇති පරිදි, GitOps යනු කරුණු දෙකකි:

  1. ඉහත විස්තර කර ඇති Kubernetes සහ cloud native සඳහා මෙහෙයුම් ආකෘතිය.
  2. සංවර්ධක කේන්ද්‍රීය යෙදුම් කළමනාකරණ පරිසරයකට මාර්ගය.

බොහෝ දෙනෙකුට, GitOps යනු මූලික වශයෙන් Git තල්ලු මත පදනම් වූ කාර්ය ප්‍රවාහයකි. අපිත් එයාට කැමතියි. නමුත් එය සියල්ලම නොවේ: අපි දැන් CI/CD නල මාර්ග දෙස බලමු.

GitOps Kubernetes සඳහා අඛණ්ඩ යෙදවීම (CD) සක්‍රීය කරයි

GitOps විසින් වෙනම "යෙදීමේ කළමනාකරණ පද්ධති" සඳහා අවශ්‍යතාවය ඉවත් කරන අඛණ්ඩ යෙදවුම් යාන්ත්‍රණයක් ඉදිරිපත් කරයි. Kubernetes ඔබ වෙනුවෙන් සියලු වැඩ කරයි.

  • යෙදුම යාවත්කාලීන කිරීම සඳහා Git හි යාවත්කාලීන කිරීම අවශ්‍ය වේ. මෙය අපේක්ෂිත තත්වයට ගනුදෙනු යාවත්කාලීන කිරීමකි. පසුව යාවත්කාලීන විස්තරය මත පදනම්ව Kubernetes විසින්ම පොකුර තුළ " යෙදවීම" සිදු කරනු ලැබේ.
  • Kubernetes ක්‍රියා කරන ආකාරය අනුව, මෙම යාවත්කාලීන අභිසාරී වේ. සියලුම යාවත්කාලීන කිරීම් පරමාණුක වන අඛණ්ඩ යෙදවීම සඳහා මෙය යාන්ත්‍රණයක් සපයයි.
  • සටහන: වලාකුළු වියන්න Git සහ Kubernetes ඒකාබද්ධ කරන GitOps ක්‍රියාකරුවෙකු ඉදිරිපත් කරන අතර පොකුරේ අවශ්‍ය සහ වත්මන් තත්ත්වය ප්‍රතිසන්ධාන කිරීමෙන් CD කිරීමට ඉඩ සලසයි.

kubectl සහ scripts නොමැතිව

ඔබ ඔබේ පොකුර යාවත්කාලීන කිරීමට Kubectl භාවිතා කිරීමෙන් වැළකිය යුතු අතර, විශේෂයෙන්ම kubectl විධාන කණ්ඩායම් කිරීමට ස්ක්‍රිප්ට් භාවිතා කිරීමෙන් වළකින්න. ඒ වෙනුවට, GitOps නල මාර්ගය සමඟ, පරිශීලකයෙකුට Git හරහා ඔවුන්ගේ Kubernetes පොකුර යාවත්කාලීන කළ හැකිය.

ප්රතිලාභ ඇතුළත් වේ:

  1. හරි. යාවත්කාලීන සමූහයක් යෙදිය හැකි, අභිසාරී සහ අවසානයේ වලංගු කළ හැකි අතර, පරමාණුක යෙදවීමේ ඉලක්කය වෙත අපව සමීප කරයි. ඊට ප්‍රතිවිරුද්ධව, ස්ක්‍රිප්ට් භාවිතයෙන් අභිසාරීතාව පිළිබඳ කිසිදු සහතිකයක් ලබා නොදේ (මේ පිළිබඳ වැඩි විස්තර පහතින්).
  2. Безопасность. උපුටා ගැනීම Kelsey Hightower: "ඔබගේ Kubernetes පොකුරට ප්‍රවේශය සීමා කරන්න ස්වයංක්‍රීය මෙවලම් සහ එය නිදොස් කිරීම හෝ නඩත්තු කිරීම සඳහා වගකිව යුතු පරිපාලකයින්." ද බලන්න මගේ ප්රකාශනය ආරක්ෂාව සහ තාක්ෂණික පිරිවිතරයන්ට අනුකූල වීම ගැන මෙන්ම Homebrew හැක් කිරීම පිළිබඳ ලිපිය නොසැලකිලිමත් ලෙස ලියන ලද ජෙන්කින්ස් පිටපතකින් අක්තපත්‍ර සොරකම් කිරීමෙනි.
  3. පරිශීලක අත්දැකීම්. Kubectl ඉතා සංකීර්ණ වූ Kubernetes වස්තු ආකෘතියේ යාන්ත්‍ර විද්‍යාව හෙලිදරව් කරයි. ඉතා මැනවින්, පරිශීලකයන් වියුක්ත මට්ටමකින් පද්ධතිය සමඟ අන්තර් ක්‍රියා කළ යුතුය. මෙන්න මම නැවතත් Kelsey වෙත යොමු කර නැරඹීමට නිර්දේශ කරමි එවැනි නැවත ආරම්භයක්.

CI සහ CD අතර වෙනස

GitOps දැනට පවතින CI/CD මාදිලි වැඩි දියුණු කරයි.

නවීන CI සේවාදායකයක් යනු වාදක මෙවලමකි. විශේෂයෙන්ම, එය CI නල මාර්ග සංවිධානය කිරීම සඳහා මෙවලමකි. මේවාට තැනීම, පරීක්ෂා කිරීම, කඳට ඒකාබද්ධ කිරීම යනාදිය ඇතුළත් වේ. CI සේවාදායකයන් සංකීර්ණ බහු-පියවර නල මාර්ග කළමනාකරණය ස්වයංක්‍රීය කරයි. පොදු පෙළඹවීමක් වන්නේ Kubernetes යාවත්කාලීන කට්ටලයක් ස්ක්‍රිප්ට් කිරීම සහ පොකුරට වෙනස්කම් තල්ලු කිරීම සඳහා නල මාර්ගයක කොටසක් ලෙස ධාවනය කිරීමයි. ඇත්ත වශයෙන්ම, බොහෝ විශේෂඥයින් කරන්නේ මෙයයි. කෙසේ වෙතත්, මෙය ප්රශස්ත නොවේ, සහ මෙන්න ඇයි.

යාවත්කාලීනයන් කඳට තල්ලු කිරීමට CI භාවිතා කළ යුතු අතර, CD තැටිය අභ්‍යන්තරව කළමනාකරණය කිරීම සඳහා එම යාවත්කාලීන මත පදනම්ව Kubernetes පොකුර වෙනස් විය යුතුය. අපි ඒකට කියනවා CD සඳහා ආකෘතිය අදින්න, CI තල්ලු ආකෘතිය මෙන් නොව. CD යනු කොටසකි ධාවන කාල වාද්‍ය වෘන්දය.

CI සේවාදායකයන් Kubernetes හි සෘජු යාවත්කාලීන කිරීම් හරහා CD තැටි නොකළ යුත්තේ ඇයි?

CI රැකියා කට්ටලයක් ලෙස Kubernetes වෙත සෘජු යාවත්කාලීන කිරීම් සංවිධානය කිරීමට CI සේවාදායකයක් භාවිතා නොකරන්න. මේක තමයි අපි කතා කරන ප්‍රති-රටාව දැනටමත් පවසා ඇත ඔබේ බ්ලොග් අඩවියේ.

අපි නැවතත් ඇලිස් සහ බොබ් වෙත යමු.

ඔවුන් මුහුණ දුන් ගැටළු මොනවාද? Bob's CI සේවාදායකය පොකුරට වෙනස්කම් යොදයි, නමුත් එය ක්‍රියාවලියේදී බිඳ වැටුනහොත්, පොකුර කුමන තත්වයක (හෝ තිබිය යුතු) හෝ එය නිවැරදි කරන්නේ කෙසේද යන්න Bob නොදනී. සාර්ථකත්වය සම්බන්ධයෙන් ද එය එසේම වේ.

අපි හිතමු බොබ්ගේ කණ්ඩායම නව රූපයක් ගොඩනඟා, පසුව රූපය යෙදවීම සඳහා ඔවුන්ගේ යෙදවීම් සකස් කළ බව (සියල්ල CI නල මාර්ගයෙන්).

රූපය සාමාන්‍යයෙන් ගොඩනඟන්නේ නම්, නමුත් නල මාර්ගය අසමත් වුවහොත්, කණ්ඩායමට සොයා ගැනීමට සිදුවේ:

  • යාවත්කාලීනය නිකුත් වී තිබේද?
  • අපි නව ගොඩනැගීමක් දියත් කරනවාද? මෙය අනවශ්‍ය අතුරු ආබාධවලට තුඩු දෙයි - එකම වෙනස් කළ නොහැකි ප්‍රතිරූපයක් ගොඩනැගීමේ හැකියාව සමඟ?
  • ගොඩනැගීම ධාවනය කිරීමට පෙර අපි ඊළඟ යාවත්කාලීනය සඳහා රැඳී සිටිය යුතුද?
  • හරියටම වැරදුනේ කුමක්ද? නැවත නැවත කළ යුතු පියවර මොනවාද (සහ නැවත කිරීමට ආරක්ෂිත ඒවා මොනවාද)?

Git මත පදනම් වූ කාර්ය ප්‍රවාහයක් ස්ථාපනය කිරීමෙන් Bob ගේ කණ්ඩායමට මෙම ගැටළු වලට මුහුණ නොදෙන බවට සහතික නොවේ. ඔවුන් තවමත් කැපවීම තල්ලුව, ටැගය, හෝ වෙනත් පරාමිතිය සමඟ වැරැද්දක් කළ හැකිය; කෙසේ වෙතත්, මෙම ප්‍රවේශය තවමත් පැහැදිලි සියල්ල හෝ කිසිවක් නොමැති ප්‍රවේශයකට වඩා සමීප ය.

සාරාංශගත කිරීම සඳහා, CI සේවාදායකයන් CD සමඟ ගනුදෙනු නොකළ යුත්තේ මන්ද යන්නයි:

  • යාවත්කාලීන ස්ක්‍රිප්ට් සෑම විටම තීරණාත්මක නොවේ; ඔවුන් තුළ වැරදි කිරීම පහසුය.
  • CI සේවාදායකයන් ප්‍රකාශන පොකුරු ආකෘතියට අභිසාරී නොවේ.
  • දුර්වලකම සහතික කිරීම දුෂ්කර ය. පරිශීලකයන් පද්ධතියේ ගැඹුරු අර්ථකථනය තේරුම් ගත යුතුය.
  • අර්ධ අසාර්ථකත්වයකින් නැවත යථා තත්ත්වයට පත් කිරීම වඩා දුෂ්කර ය.

Helm පිළිබඳ සටහන: ඔබට Helm භාවිතා කිරීමට අවශ්‍ය නම්, අපි එය GitOps ක්‍රියාකරුවෙකු සමඟ ඒකාබද්ධ කිරීමට නිර්දේශ කරමු ෆ්ලක්ස්-හෙල්ම්. මෙය අභිසාරී බව සහතික කිරීමට උපකාරී වේ. හෙල්ම් යනු නියතිවාදී හෝ පරමාණුක නොවේ.

Kubernetes සඳහා අඛණ්ඩ බෙදාහැරීම ක්රියාත්මක කිරීමට හොඳම ක්රමය ලෙස GitOps

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

Kubernetes සඳහා මෙහෙයුම් ආකෘතිය

පහත රූප සටහන බලන්න. එය සංවිධානය කරන ලද ජීවන චක්‍ර දෙකක් සඳහා බෙදාගත් සම්පත් ලෙස Git සහ බහාලුම් රූප ගබඩාව ඉදිරිපත් කරයි:

  • Git වෙත ලිපිගොනු කියවන සහ ලියන සහ බහාලුම් රූප ගබඩාවක් යාවත්කාලීන කළ හැකි අඛණ්ඩ ඒකාබද්ධ කිරීමේ නල මාර්ගයකි.
  • කළමනාකරණය සහ නිරීක්ෂණ හැකියාව සමඟ යෙදවීම ඒකාබද්ධ කරන Runtime GitOps නල මාර්ගයකි. එය Git වෙත ලිපිගොනු කියවා ලියන අතර බහාලුම් පින්තූර බාගත කළ හැකිය.

ප්රධාන සොයාගැනීම් මොනවාද?

  1. උත්සුකයන් වෙන් කිරීම: නල මාර්ග දෙකටම සන්නිවේදනය කළ හැක්කේ Git හෝ රූප ගබඩාව යාවත්කාලීන කිරීමෙන් පමණක් බව කරුණාවෙන් සලකන්න. වෙනත් වචන වලින් කිවහොත්, CI සහ ධාවන කාල පරිසරය අතර ෆයර්වෝලයක් ඇත. අපි එය හඳුන්වන්නේ "වෙනස් නොවන ෆයර්වෝල්" ලෙසයි. (වෙනස් නොවන ගිනි පවුර), සියලුම ගබඩා යාවත්කාලීන නව අනුවාද නිර්මාණය කරන බැවින්. මෙම මාතෘකාව පිළිබඳ වැඩි විස්තර සඳහා, විනිවිදක 72-87 බලන්න මෙම ඉදිරිපත් කිරීම.
  2. ඔබට ඕනෑම CI සහ Git සේවාදායකයක් භාවිතා කළ හැකිය: GitOps ඕනෑම සංරචකයක් සමඟ ක්‍රියා කරයි. ඔබට ඔබේ ප්‍රියතම CI සහ Git සේවාදායකයන්, රූප ගබඩාවන් සහ පරීක්ෂණ කට්ටල දිගටම භාවිතා කළ හැක. වෙළඳපොලේ ඇති අනෙකුත් සියලුම අඛණ්ඩ බෙදාහැරීමේ මෙවලම් පාහේ ඔවුන්ගේම CI/Git සේවාදායකයක් හෝ රූප ගබඩාවක් අවශ්‍ය වේ. මෙය වලාකුළු ස්වදේශික සංවර්ධනයේ සීමාකාරී සාධකයක් බවට පත්විය හැක. GitOps සමඟින්, ඔබට හුරුපුරුදු මෙවලම් භාවිතා කළ හැකිය.
  3. සිදුවීම් ඒකාබද්ධ කිරීමේ මෙවලමක් ලෙස: Git හි දත්ත යාවත්කාලීන වූ වහාම, Weave Flux (හෝ Weave Cloud ක්‍රියාකරු) ධාවන කාලය දැනුම් දෙයි. Kubernetes වෙනස් කිරීමේ කට්ටලයක් පිළිගන්නා විට, Git යාවත්කාලීන වේ. පහත දැක්වෙන පරිදි GitOps සඳහා කාර්ය ප්‍රවාහයන් සංවිධානය කිරීම සඳහා මෙය සරල ඒකාබද්ධ කිරීමේ ආකෘතියක් සපයයි.

නිගමනය

GitOps ඕනෑම නවීන CI/CD මෙවලමකට අවශ්‍ය ශක්තිමත් යාවත්කාලීන සහතික සපයයි:

  • ස්වයංක්රීයකරණය;
  • අභිසාරී වීම;
  • දුර්වලකම;
  • නියතිවාදය.

වලාකුළු ස්වදේශික සංවර්ධකයින් සඳහා මෙහෙයුම් ආකෘතියක් ලබා දෙන නිසා මෙය වැදගත් වේ.

  • පද්ධති කළමනාකරණය සහ අධීක්ෂණ සඳහා සම්ප්‍රදායික මෙවලම් ධාවන පොතක් තුළ ක්‍රියාත්මක වන මෙහෙයුම් කණ්ඩායම් සමඟ සම්බන්ධ වේ (සාමාන්‍ය ක්‍රියා පටිපාටි සහ මෙහෙයුම් මාලාවක් - දළ වශයෙන් පරිවර්තනය.), නිශ්චිත යෙදවීමකට බැඳී ඇත.
  • වලාකුළු ස්වදේශීය කළමනාකරණයේදී, සංවර්ධන කණ්ඩායමට ඉක්මනින් ප්‍රතිචාර දැක්විය හැකි වන පරිදි යෙදවීම්වල ප්‍රතිඵල මැනීමට හොඳම ක්‍රමය නිරීක්ෂණ මෙවලම් වේ.

විවිධ වලාකුළු හරහා විසිරී ඇති බොහෝ පොකුරු සහ ඔවුන්ගේම කණ්ඩායම් සහ යෙදවීමේ සැලසුම් සහිත බොහෝ සේවාවන් සිතන්න. GitOps මෙම සියලු බහුලත්වය කළමනාකරණය කිරීම සඳහා පරිමාණ වෙනස් නොවන ආකෘතියක් ඉදිරිපත් කරයි.

පරිවර්තකගෙන් PS

අපගේ බ්ලොග් අඩවියේ ද කියවන්න:

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

මෙම පරිවර්තන දෙක Habré හි දර්ශනය වීමට පෙර ඔබ GitOps ගැන දැන සිටියාද?

  • ඔව්, මම සියල්ල දැන සිටියෙමි

  • මතුපිටින් පමණි

  • කිසිදු

පරිශීලකයින් 35 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 10 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

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

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