Kubernetes නිසි සංසන්දනය අයදුම් කරන්න, ප්රතිස්ථාපනය කරන්න සහ පැච් කරන්න

Kubernetes සම්පත් යාවත්කාලීන කිරීම සඳහා විකල්ප කිහිපයක් ඇත: අයදුම් කරන්න, සංස්කරණය කරන්න, පැච් කරන්න සහ ප්‍රතිස්ථාපනය කරන්න. එක එක්කෙනා කරන දේවල් සහ ඒවා පාවිච්චි කරන වෙලාව ගැන අවුල් තියෙනවා. අපි එය තේරුම් ගනිමු.

Kubernetes නිසි සංසන්දනය අයදුම් කරන්න, ප්රතිස්ථාපනය කරන්න සහ පැච් කරන්න

නම් Google මත සොයන්න "kubernetes apply vs replace" යන වාක්‍ය ඛණ්ඩය පිහිටා ඇත StackOverflow වෙත පිළිතුරු දෙන්න, එය නිවැරදි නොවේ. සොයන විට "kubernetes apply vs patch" පළමු සබැඳිය සඳහා ලියකියවිලි වේ kubectl patch, සැසඳීම ඇතුළත් නොවේ apply и patch. මෙම ලිපිය විවිධ විකල්ප මෙන්ම, එක් එක් නිසි භාවිතය දෙස බලනු ඇත.

Kubernetes සම්පතක ජීවන චක්‍රය තුළ (සේවාව, යෙදවීම, ඇතුල්වීම, ආදිය), සමහර විට ඔබට මෙම සම්පතේ සමහර ගුණාංග වෙනස් කිරීමට, එකතු කිරීමට හෝ ඉවත් කිරීමට අවශ්‍ය වේ. උදාහරණයක් ලෙස, සටහනක් එක් කරන්න, අනුරූ ගණන වැඩි කරන්න හෝ අඩු කරන්න.

Kubernetes CLI

ඔබ දැනටමත් CLI හරහා Kubernetes පොකුරු සමඟ වැඩ කරන්නේ නම්, ඔබ දැනටමත් හුරුපුරුදුය apply и edit. කණ්ඩායම apply ගොනුවේ ඇති සම්පත් පිරිවිතර කියවා Kubernetes පොකුරට "උඩු" කරයි, i.e. සම්පත් නොපවතියි නම් එය නිර්මාණය කරයි සහ එය පවතී නම් එය යාවත්කාලීන කරයි. කණ්ඩායම edit API හරහා සම්පතක් කියවයි, පසුව සම්පත් පිරිවිතර දේශීය ගොනුවකට ලියයි, එය පසුව පෙළ සංස්කාරකයක විවෘත වේ. ඔබ ගොනුව සංස්කරණය කර සුරැකීමෙන් පසුව, kubectl API හරහා සිදු කරන ලද වෙනස්කම් ආපසු යවනු ඇත, මෙම වෙනස්කම් සම්පතට ප්රවේශමෙන් යොදනු ඇත.

හැමෝම විධාන දන්නේ නැහැ patch и replace. කණ්ඩායම patch විධාන රේඛාවේ වෙනස් කළ කොටස පමණක් සපයන සම්පත් පිරිවිතරයක කොටසක් වෙනස් කිරීමට ඔබට ඉඩ සලසයි. කණ්ඩායම replace ලෙසම ක්‍රියා කරයි edit, නමුත් සෑම දෙයක්ම අතින් සිදු කළ යුතුය: ඔබ සම්පත් පිරිවිතරයේ වත්මන් අනුවාදය බාගත කළ යුතුය, උදාහරණයක් ලෙස, භාවිතා කිරීම kubectl get -o yaml, එය සංස්කරණය කරන්න, පසුව භාවිතා කරන්න replace වෙනස් කළ පිරිවිතරයන්ට අනුව සම්පතක් යාවත්කාලීන කිරීමට. කණ්ඩායම replace සම්පත් කියවීම සහ ප්‍රතිස්ථාපනය අතර යම් වෙනසක් සිදුවී ඇත්නම් ක්‍රියා නොකරනු ඇත.

Kubernetes API

ඔබ බොහෝ විට ක්රම ගැන හුරුපුරුදු විය හැකිය CoreV1().Pods().Update(), replaceNamespacedService හෝ patch_namespaced_deployment, ඔබ හරහා පොකුරු සමඟ වැඩ කරන්නේ නම් Kubernetes API සඳහා සේවාදායක පුස්තකාලය සමහර ක්‍රමලේඛන භාෂාව භාවිතා කරමින්. පුස්තකාලය මෙම ක්‍රම භාවිතා කරන්නේ HTTP ඉල්ලීම් හරහාය PUT и PATCH... එහි update и replace භාවිතා කරන්න PUTහා patch, එය කොතරම් සුළු දෙයක් වුවත්, භාවිතා කරයි PATCH.

එය සඳහන් කිරීම වටී kubectl API හරහා පොකුරු සමඟද ක්‍රියා කරයි. වෙනත් විදිහකින්, kubectlසම්මත API හැකියාවන්ට අමතරව වඩාත් සංයුක්ත සහ කියවිය හැකි ආකාරයෙන් උප විධාන සැපයීමේ හැකියාව බොහෝ දුරට සපයන Go භාෂාව සඳහා සේවාදායක පුස්තකාලය මත ඇති දවටනයකි. උදාහරණයක් ලෙස, ඔබ දැනටමත් දැක ඇති පරිදි, ක්රමය apply පෙර ඡේදයේ ඉහත සඳහන් කර නැත. දැනට (2020 මැයි, ආසන්න වශයෙන් පරිවර්තකයා) සියලු තර්ක kubectl apply, i.e. නොපවතින සම්පත් නිර්මාණය කිරීම සහ පවතින ඒවා යාවත්කාලීන කිරීම, සම්පූර්ණයෙන්ම කේත පැත්තේ ක්රියා කරයි kubectl. උත්සාහ දරනවා තර්ක මාරුව මත apply API පැත්තට, නමුත් එය තවමත් බීටා වේ. මම වඩාත් විස්තරාත්මකව පහත ලියන්නෙමි.

පෙරනිමියෙන් පැච් කරන්න

හොඳම භාවිතා කර ඇත patch, ඔබට සම්පත යාවත්කාලීන කිරීමට අවශ්‍ය නම්. සේවාදායක පුස්තකාල දෙකම Kubernetes API මත ක්‍රියා කරන ආකාරය සහ kubectl (පුදුමයක් නොවේ, එය සේවාදායක පුස්තකාලය සඳහා දවටනයක් බැවින්, ආසන්න වශයෙන් පරිවර්තකයා).

උපාය මාර්ගිකව වැඩ කරන්න

සියලුම කණ්ඩායම් kubectl apply, edit и patch ක්රමය භාවිතා කරන්න PATCH HTTP හි පවතින සම්පතක් යාවත්කාලීන කිරීමට ඉල්ලීම් කරයි. ඔබ විධාන ක්‍රියාත්මක කිරීම වඩාත් විස්තරාත්මකව සොයා බැලුවහොත්, ඒ සියල්ල ප්‍රවේශය භාවිතා කරයි උපායමාර්ගික ඒකාබද්ධ කිරීම විධානය වුවද සම්පත් යාවත්කාලීන කිරීමට patch වෙනත් ප්‍රවේශයන් භාවිතා කළ හැක (මේ පිළිබඳ වැඩි විස්තර පහතින්). උපායමාර්ගික-ඒකාබද්ධ පැච් කිරීමේ ප්‍රවේශය සපයන ලද පිරිවිතර පවතින පිරිවිතර සමඟ ඒකාබද්ධ කිරීමෙන් "එය නිවැරදිව ලබා ගැනීමට" උත්සාහ කරයි. වඩාත් නිශ්චිතව, එය වස්තු සහ අරා දෙකම ඒකාබද්ධ කිරීමට උත්සාහ කරයි, එයින් අදහස් වන්නේ වෙනස්කම් ආකලන බවට පත්වේ. උදාහරණයක් ලෙස, විධානය ක්රියාත්මක කිරීම patch පොඩ් කන්ටේනර් පිරිවිතරයේ නව පරිසර විචල්‍යයක් සමඟ, එම පරිසර විචල්‍යය නැවත ලිවීමට වඩා පවතින පරිසර විචල්‍යවලට එක් කිරීමට හේතු වේ. මෙම ප්‍රවේශය භාවිතයෙන් ඉවත් කිරීමට, සපයා ඇති පිරිවිතරයේ පරාමිති අගය ශුන්‍ය කිරීමට ඔබ බල කළ යුතුය. කුමන කණ්ඩායම් kubectl යාවත්කාලීන කිරීම සඳහා භාවිතා කිරීම වඩාත් සුදුසුද?

ඔබ භාවිතා කරමින් ඔබේ සම්පත් නිර්මාණය කර කළමනාකරණය කරන්නේ නම් kubectl apply, යාවත්කාලීන කිරීමේදී සෑම විටම භාවිතා කිරීම වඩා හොඳය kubectl applyවෙත kubectl වින්‍යාසය කළමනාකරණය කිරීමට සහ යෙදුමෙන් යෙදුමට ඉල්ලා ඇති වෙනස්කම් නිවැරදිව නිරීක්ෂණය කළ හැකිය. වාසි සෑම විටම භාවිතා කරයි apply එය කලින් යොදන ලද පිරිවිතරයක් නිරීක්ෂණය කරයි, පිරිවිතර ගුණාංග සහ අරා මූලද්‍රව්‍ය පැහැදිලිව ඉවත් කරන විට එය දැන ගැනීමට ඉඩ සලසයි. මෙය ඔබට භාවිතා කිරීමට ඉඩ සලසයි apply ගුණාංග සහ අරා මූලද්‍රව්‍ය ඉවත් කිරීමට, සාමාන්‍ය උපායමාර්ගික ඒකාබද්ධ කිරීමක් ක්‍රියා නොකරනු ඇත. කණ්ඩායම් edit и patch ඒ සටහන් යාවත්කාලීන කරන්න එපා kubectl apply එහි වෙනස්කම් නිරීක්ෂණය කිරීමට භාවිතා කරයි, එබැවින් Kubernetes API හරහා ලුහුබැඳීම සහ සිදු කරන ඕනෑම වෙනස්කමක්, නමුත් විධාන හරහා සිදු කෙරේ edit и patch, පසු විධාන වලට නොපෙනේ applyඑනම් apply සඳහා ආදාන පිරිවිතරයේ නොපෙන්වයි නම් පවා ඒවා ඉවත් නොකරයි apply (ලේඛනවල සඳහන් වේ edit и patch භාවිතා කරන සටහන් වලට යාවත්කාලීන කරන්න apply, නමුත් ප්රායෝගිකව - නැත).

ඔබ විධානය භාවිතා නොකරන්නේ නම් apply, ලෙස භාවිතා කළ හැක edit, සහ patch, සිදු කරන වෙනසට වඩාත් ගැලපෙන විධානය තෝරා ගැනීම. BOM ගුණාංග එකතු කිරීමේදී සහ වෙනස් කිරීමේදී, ප්‍රවේශයන් දෙකම දළ වශයෙන් සමාන වේ. පිරිවිතර ගුණාංග හෝ අරා මූලද්‍රව්‍ය මකා දැමීමේදී edit එක් වරක් දියත් කිරීමක් ලෙස හැසිරේ apply, එය සංස්කරණය කිරීමට පෙර සහ පසු පිරිවිතර කෙබඳුද යන්න පිළිබඳව සටහන් තබා ගැනීම ඇතුළුව, ඔබට සම්පතකින් ගුණාංග සහ අරා මූලද්‍රව්‍ය පැහැදිලිවම ඉවත් කළ හැකිය. සඳහා පිරිවිතරය තුළ ඔබ දේපල වටිනාකම ශුන්‍ය ලෙස පැහැදිලිව සැකසීමට අවශ්‍ය වේ patchඑය සම්පතෙන් ඉවත් කිරීමට. උපායමාර්ගික ඒකාබද්ධ පැච් කිරීම භාවිතයෙන් අරා මූලද්‍රව්‍යයක් ඉවත් කිරීම වඩාත් සංකීර්ණ වන්නේ එයට ඒකාබද්ධ විධාන භාවිතා කිරීම අවශ්‍ය වන බැවිනි. වඩාත් ශක්‍ය විකල්ප සඳහා පහත වෙනත් උත්ශ්‍රේණි කිරීමේ ප්‍රවේශයන් බලන්න.

ඉහත විධානයන්ට සමානව හැසිරෙන සේවාදායක පුස්තකාලයේ යාවත්කාලීන ක්‍රම ක්‍රියාත්මක කිරීමට kubectl, ඉල්ලීම්වල සැකසිය යුතුය content-type в application/strategic-merge-patch+json. ඔබට පිරිවිතරයක ඇති ගුණාංග ඉවත් කිරීමට අවශ්‍ය නම්, ඔබ පැහැදිලිවම ඒවායේ අගයන් ඒ හා සමාන ආකාරයකින් ශුන්‍ය කිරීමට සැකසිය යුතුය. kubectl patch. ඔබට අරා මූලද්‍රව්‍ය ඉවත් කිරීමට අවශ්‍ය නම්, ඔබ යාවත්කාලීන පිරිවිතර තුළ ඒකාබද්ධ විධාන ඇතුළත් කළ යුතුය හෝ යාවත්කාලීන සඳහා වෙනස් ප්‍රවේශයක් භාවිතා කළ යුතුය.

යාවත්කාලීන සඳහා වෙනත් ප්රවේශයන්

Kubernetes වෙනත් යාවත්කාලීන ප්‍රවේශයන් දෙකකට සහය දක්වයි: JSON ඒකාබද්ධ පැච් и JSON පැච්. JSON ඒකාබද්ධ පැච් ප්‍රවේශය ආදානය ලෙස අර්ධ Kubernetes පිරිවිතරයක් ගන්නා අතර උපායමාර්ගික-ඒකාබද්ධ පැච් කිරීමේ ප්‍රවේශයට සමාන වස්තු ඒකාබද්ධ කිරීමට සහය දක්වයි. දෙක අතර වෙනස වන්නේ එය පොඩ් පිරිවිතරයේ ඇති බහාලුම් අරාව ඇතුළුව අරාව ප්‍රතිස්ථාපනයට පමණක් සහාය වීමයි. මෙයින් අදහස් කරන්නේ JSON ඒකාබද්ධ පැච් එකක් භාවිතා කරන විට, ඕනෑම බහාලුම්වල යම් දේපලක් වෙනස් වුවහොත් ඔබ සියලු බහාලුම් සඳහා සම්පූර්ණ පිරිවිතර සැපයිය යුතු බවයි. එබැවින් මෙම ප්‍රවේශය BOM එකක අරාවකින් මූලද්‍රව්‍ය ඉවත් කිරීමට ප්‍රයෝජනවත් වේ. විධාන රේඛාවේදී ඔබට JSON merge patch තෝරාගත හැක kubectl patch --type=merge. Kubernetes API සමඟ වැඩ කරන විට, ඔබ ඉල්ලීම් ක්‍රමය භාවිතා කළ යුතුය PATCH සහ ස්ථාපනය content-type в application/merge-patch+json.

JSON පැච් ප්‍රවේශය, සම්පතක අර්ධ පිරිවිතරයක් ලබා දෙනවාට වඩා, ඔබට සම්පතට කිරීමට අවශ්‍ය වෙනස්කම් අරාවක් ලෙස සැපයීම භාවිතා කරයි, එහිදී අරාවේ සෑම මූලද්‍රව්‍යයක්ම සම්පතට සිදු කරන වෙනස පිළිබඳ විස්තරයක් නියෝජනය කරයි. මෙම ප්‍රවේශය සිදු කරනු ලබන වෙනස්කම් ප්‍රකාශ කිරීමට වඩාත් නම්‍යශීලී සහ ප්‍රබල ක්‍රමයකි, නමුත් අර්ධ සම්පත් පිරිවිතර යැවීමට වඩා වෙනම, කුබර්නෙට් නොවන ආකෘතියකින් සිදු කරන වෙනස්කම් ලැයිස්තුගත කිරීමේ වියදමින්. තුල kubectl ඔබට භාවිතා කර JSON පැච් තෝරාගත හැක kubectl patch --type=json. Kubernetes API භාවිතා කරන විට, මෙම ප්‍රවේශය ඉල්ලීම් ක්‍රමය භාවිතයෙන් ක්‍රියා කරයි PATCH සහ ස්ථාපනය content-type в application/json-patch+json.

අපට විශ්වාසය අවශ්‍යයි - ප්‍රතිස්ථාපනය භාවිතා කරන්න

සමහර අවස්ථා වලදී, සම්පත කියවන වේලාව සහ එය යාවත්කාලීන කරන විට අතර සම්පතක කිසිදු වෙනසක් සිදු නොවන බවට ඔබ සහතික විය යුතුය. වෙනත් වචන වලින් කිවහොත්, සියලු වෙනස්කම් සිදුවනු ඇති බවට ඔබ සහතික විය යුතුය පරමාණුක. මෙම අවස්ථාවේදී, ඔබ භාවිතා කළ යුතු සම්පත් යාවත්කාලීන කිරීමට replace. උදාහරණයක් ලෙස, ඔබට බහු මූලාශ්‍ර මගින් යාවත්කාලීන කරන ලද කවුන්ටරයක් ​​සහිත වින්‍යාස සිතියමක් තිබේ නම්, මූලාශ්‍ර දෙකක් එකවර කවුන්ටරය යාවත්කාලීන නොකරන බවට සහතික විය යුතුය, එමඟින් යාවත්කාලීනය නැති වී යයි. ප්‍රදර්ශනය කිරීම සඳහා, ප්‍රවේශය භාවිතා කරමින් සිදුවීම් අනුපිළිවෙලක් සිතන්න patch:

  • A සහ B සම්පත් වල වත්මන් තත්වය API වෙතින් ලබා ගනී
  • සෑම එකක්ම දේශීයව පිරිවිතර යාවත්කාලීන කරන්නේ කවුන්ටරය එකකින් වැඩි කිරීමෙන් සහ "යාවත්කාලීන කරන ලද" සටහනට පිළිවෙලින් "A" හෝ "B" එකතු කිරීමෙනි.
  • තවද එය සම්පත් ටිකක් වේගයෙන් යාවත්කාලීන කරයි
  • B සම්පත යාවත්කාලීන කරයි

ප්රතිඵලයක් වශයෙන්, යාවත්කාලීන A නැති වී යයි. අවසාන මෙහෙයුම patch ජයග්‍රහණ, කවුන්ටරය දෙකක් වෙනුවට එකකින් වැඩි වන අතර, "යාවත්කාලීන කරන ලද" නෝට්ටුවේ අගය "B" වලින් අවසන් වන අතර "A" අඩංගු නොවේ. ප්‍රවේශය භාවිතයෙන් යාවත්කාලීන කිරීම් සිදු කරන විට සිදුවන දේ සමඟ ඉහත සඳහන් දේ සසඳා බලමු replace:

  • A සහ B සම්පත් වල වත්මන් තත්වය API වෙතින් ලබා ගනී
  • සෑම එකක්ම දේශීයව පිරිවිතර යාවත්කාලීන කරන්නේ කවුන්ටරය එකකින් වැඩි කිරීමෙන් සහ "යාවත්කාලීන කරන ලද" සටහනට පිළිවෙලින් "A" හෝ "B" එකතු කිරීමෙනි.
  • තවද එය සම්පත් ටිකක් වේගයෙන් යාවත්කාලීන කරයි
  • B සම්පත යාවත්කාලීන කිරීමට උත්සාහ කරයි, නමුත් සම්පත් අනුවාදය පිරිවිතරයේ ඇති බැවින් යාවත්කාලීනය API විසින් ප්‍රතික්ෂේප කරනු ලැබේ. replace A හි ප්‍රතිස්ථාපන ක්‍රියාවෙන් සම්පතේ අනුවාදය වැඩි කර ඇති නිසා Kubernetes හි සම්පත් වල වත්මන් අනුවාදයට නොගැලපේ.

ඉහත අවස්ථාවෙහිදී, B හට සම්පත නැවත ලබා ගැනීමට සිදු වනු ඇත, නව තත්වයට වෙනස්කම් සිදු කර නැවත උත්සාහ කරන්න replace. මෙමගින් කවුන්ටරය දෙකකින් වැඩි වන අතර "යාවත්කාලීන කරන ලද" සටහන අවසානයේ "AB" ඇතුළත් වේ.

ඉහත උදාහරණයෙන් ඇඟවෙන්නේ ක්‍රියාත්මක කරන විට බවයි replace සම්පූර්ණ සම්පත සම්පූර්ණයෙන්ම ප්රතිස්ථාපනය වේ. සඳහා භාවිතා කරන පිරිවිතර replace, කොටස් වශයෙන් හෝ කොටස් වශයෙන් නොවිය යුතුය apply, නමුත් එකතු කිරීම ඇතුළුව සම්පූර්ණයි resourceVersion පිරිවිතර පාරදත්ත තුළට. ඔබ සක්රිය කර නොමැති නම් resourceVersion හෝ ඔබ සපයන අනුවාදය වත්මන් නොවේ, ආදේශනය ප්රතික්ෂේප කරනු ලැබේ. එබැවින් භාවිතා කිරීමට හොඳම ප්රවේශය වේ replace - සම්පත කියවන්න, එය යාවත්කාලීන කර එය වහාම ප්රතිස්ථාපනය කරන්න. භාවිතා කරමින් kubectl, එය මේ වගේ විය හැක:

$ kubectl get deployment my-deployment -o json 
    | jq '.spec.template.spec.containers[0].env[1].value = "new value"' 
    | kubectl replace -f -

අනුක්‍රමිකව ක්‍රියාත්මක වන පහත විධාන දෙක සාර්ථකව ක්‍රියාත්මක වන බව සඳහන් කිරීම වටී. deployment.yaml දේපල අඩංගු නොවේ .metadata.resourceVersion

$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml

මෙය ඉහත කී දෙයට පටහැනි බව පෙනේ, i.e. "එකතු කිරීම resourceVersion පිරිවිතර පාරදත්ත තුලට." එසේ පැවසීම වැරදිද? නැත, එසේ නොවේ, මන්ද එසේ නම් kubectl ඔබ සඳහන් නොකළ බව දැනුම් දෙයි resourceVersion, එය එය සම්පතෙන් කියවා ඔබ සඳහන් කළ පිරිවිතරයට එය එකතු කරනු ඇත, පසුව පමණක් එය ක්‍රියාත්මක කරන්න replace. ඔබ පරමාණුකත්වය මත රඳා සිටින්නේ නම් මෙය අනතුරුදායක විය හැකි නිසා, මැජික් එක සම්පූර්ණයෙන්ම පැත්තේ ක්රියා කරයි kubectl, API සමඟ වැඩ කරන සේවාදායක පුස්තකාල භාවිතා කරන විට ඔබ එය මත විශ්වාසය නොතැබිය යුතුය. මෙම අවස්ථාවේදී, ඔබට වත්මන් සම්පත් පිරිවිතර කියවා එය යාවත්කාලීන කර ක්‍රියාත්මක කිරීමට සිදුවේ PUT ඉල්ලීම.

ඔබට පැච් එකක් කළ නොහැක - අපි ප්රතිස්ථාපනය කරන්නෙමු

සමහර විට ඔබට API මඟින් හැසිරවිය නොහැකි වෙනස්කම් කිහිපයක් සිදු කිරීමට සිදු වේ. මෙම අවස්ථා වලදී, සම්පත් මකා දැමීමෙන් සහ නැවත නිර්මාණය කිරීමෙන් ඔබට එය ප්‍රතිස්ථාපනය කිරීමට බල කළ හැක. මෙය භාවිතයෙන් සිදු කෙරේ kubectl replace --force. විධානය ක්‍රියාත්මක කිරීමෙන් වහාම සම්පත් ඉවත් කර පසුව සපයන ලද පිරිවිතරයෙන් ඒවා ප්‍රතිනිර්මාණය කරයි. API හි "බලයෙන් ප්‍රතිස්ථාපනය" හසුරුවන්නක් නොමැති අතර, API හරහා එය සිදු කිරීම සඳහා, ඔබ මෙහෙයුම් දෙකක් සිදු කළ යුතුය. පළමුව ඔබ එය සැකසීමෙන් සම්පත් මකා දැමිය යුතුය gracePeriodSeconds බිංදුවට (0) සහ propagationPolicy "පසුබිම" තුළ සහ පසුව අපේක්ෂිත පිරිවිතර සමඟ මෙම සම්පත නැවත නිර්මාණය කරන්න.

අවවාදයයි: මෙම ප්‍රවේශය අනතුරුදායක විය හැකි අතර එය නිර්වචනය නොකළ තත්වයකට ගෙන යා හැකිය.

සේවාදායකයේ පැත්තෙන් අයදුම් කරන්න

ඉහත සඳහන් කළ පරිදි, Kubernetes සංවර්ධකයින් තර්කනය ක්රියාත්මක කිරීමට කටයුතු කරයි apply සිට kubectl Kubernetes API හි. තාර්කික apply Kubernetes 1.18 හරහා ලබා ගත හැක kubectl apply --server-side හෝ ක්‍රමය භාවිතා කරමින් API හරහා PATCH с content-type application/apply-patch+YAML.

සටහන: JSON ද වලංගු YAML වේ, එබැවින් ඔබට පිරිවිතර JSON ලෙස යැවිය හැක content-type වනු ඇත application/apply-patch+yaml.

ඒ තර්කයට අමතරව kubectl API හරහා සෑම කෙනෙකුටම ලබා ගත හැකිය, apply සේවාදායකයේ පැත්තෙන්, පිරිවිතරයේ ඇති ක්ෂේත්‍ර සඳහා වගකිව යුත්තේ කවුරුන්ද යන්න නිරීක්ෂණය කරයි, එමඟින් එහි ගැටුම් රහිත සංස්කරණය සඳහා ආරක්ෂිත බහුවිධ ප්‍රවේශයට ඉඩ සලසයි. වෙනත් වචන වලින් කිවහොත්, නම් apply සේවාදායකයේ පැත්තෙන් වඩාත් පුළුල් වනු ඇත, විවිධ සේවාදායකයින් සඳහා විශ්වීය ආරක්ෂිත සම්පත් කළමනාකරණ අතුරු මුහුණතක් දිස්වනු ඇත, උදාහරණයක් ලෙස, kubectl, Pulumi හෝ Terraform, GitOps, මෙන්ම සේවාදායක පුස්තකාල භාවිතා කරන ස්වයං-ලිඛිත ස්ක්‍රිප්ට්.

ප්රතිඵල

පොකුරු තුළ සම්පත් යාවත්කාලීන කිරීමට විවිධ ක්‍රම පිළිබඳ මෙම කෙටි දළ විශ්ලේෂණය ඔබට ප්‍රයෝජනවත් වනු ඇතැයි මම බලාපොරොත්තු වෙමි. එය ප්‍රතිස්ථාපනයට එරෙහිව යෙදීම පමණක් නොවන බව දැන ගැනීම හොඳය; අයදුම් කිරීම, සංස්කරණය කිරීම, පැච් කිරීම හෝ ප්‍රතිස්ථාපනය කිරීම භාවිතයෙන් සම්පතක් යාවත්කාලීන කළ හැකිය. සියල්ලට පසු, ප්‍රතිපත්තිමය වශයෙන්, සෑම ප්‍රවේශයකටම තමන්ගේම යෙදුම් ක්ෂේත්‍රයක් ඇත. පරමාණුක වෙනස්කම් සඳහා, ප්‍රතිස්ථාපනය වඩාත් සුදුසුය; එසේ නොමැතිනම්, ඔබ අයදුම් කිරීම හරහා උපායමාර්ගික ඒකාබද්ධ පැච් භාවිතා කළ යුතුය. අවම වශයෙන්, "kubernetes apply vs replace" සෙවීමේදී ඔබට Google හෝ StackOerflow විශ්වාස කළ නොහැකි බව ඔබ තේරුම් ගනු ඇතැයි මම බලාපොරොත්තු වෙමි. අවම වශයෙන් මෙම ලිපිය වත්මන් පිළිතුර ප්‍රතිස්ථාපනය කරන තුරු.

Kubernetes නිසි සංසන්දනය අයදුම් කරන්න, ප්රතිස්ථාපනය කරන්න සහ පැච් කරන්න

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

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