සටහන. පරිවර්තනය.: ලිපිය ලියා ඇත්තේ මුද්රිත පොත් හතක (ප්රධාන වශයෙන් VMware vSphere හි) කර්තෘ/සම කර්තෘ වන තොරතුරු තාක්ෂණ පිළිබඳ පුළුල් අත්දැකීම් ඇති ඉංජිනේරුවෙකු වන Scott Lowe විසිනි. ඔහු දැන් එහි VMware අනුබද්ධ ආයතනයක් වන Heptio (2016 දී අත්පත් කර ගන්නා ලද) සඳහා ක්ලවුඩ් කම්පියුටින් සහ Kubernetes පිළිබඳ විශේෂඥයෙකු ලෙස කටයුතු කරයි. තාක්ෂණය භාවිතා කරමින් Kubernetes සඳහා වින්යාස කළමනාකරණය පිළිබඳ සංක්ෂිප්ත සහ තේරුම් ගැනීමට පහසු හැඳින්වීමක් ලෙස පෙළම ක්රියා කරයි.
Kustomize යනු පරිශීලකයින්ට "විවිධ අරමුණු සඳහා සරල, සැකිලි රහිත YAML ගොනු අභිරුචිකරණය කිරීමට ඉඩ සලසන මෙවලමකි, මුල් YAML නොවෙනස්ව භාවිතා කළ හැකි" (විස්තරය සෘජුවම ණයට ගෙන ඇත. kubectl -k
එහි ක්රියාකාරීත්වයට ප්රවේශ වීමට (කුබර්නෙටස් 1.15 ට අනුව, වෙනම ද්විමය kubectl තුළ ගොඩනගා ඇති හැකියාවන්ට වඩා අලුත් ය). (සටහන. පරිවර්තනය.: සහ මෑත නිකුතුව සමඟ
එහි සරලම ආකාරයෙන්/යෙදුමේදී, kustomize යනු හුදෙක් සම්පත් එකතුවකි (Kubernetes වස්තු නිර්වචනය කරන YAML ගොනු: යෙදවීම්, සේවා, ආදිය) සහ එම සම්පත් වෙත සිදු කළ යුතු වෙනස්කම් සඳහා උපදෙස් ලැයිස්තුවකි. කරන්නා සේම එහි අඩංගු උපදෙස් මාලාව භාවිතා කරයි Makefile
, සහ Docker වෙතින් උපදෙස් මත පදනම්ව කන්ටේනරය ගොඩනඟයි Dockerfile
, භාවිතය අභිරුචිකරණය කරන්න kustomization.yaml
සම්පත් සමූහයකට පරිශීලකයාට කිරීමට අවශ්ය වෙනස්කම් මොනවාද යන්න පිළිබඳ උපදෙස් ගබඩා කිරීමට.
මෙන්න උදාහරණ ගොනුවක් kustomization.yaml
:
resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
environment: development
ගොනුවේ ඇති සියලුම ක්ෂේත්ර ගැන කතා කිරීමට මම උත්සාහ නොකරමි. kustomization.yaml
(මේ ගැන හොඳින් ලියා ඇත
- ක්ෂේත්රයේ
resources
kustomize වෙනස් වන්නේ කුමක්ද යන්න (කුමන සම්පත්) දක්වයි. මෙම අවස්ථාවේදී, එය ගොනු වල සම්පත් සොයනු ඇතdeployment.yaml
иservice.yaml
ඔබගේ නාමාවලියෙහි (අවශ්ය නම් ඔබට සම්පූර්ණ හෝ සාපේක්ෂ මාර්ග නියම කළ හැක). - ක්ෂේත්රයේ
namePrefix
යම් උපසර්ගයක් එක් කිරීමට kustomize උපදෙස් දෙයි (මෙම අවස්ථාවේදී -dev-
) ආරෝපණය කිරීමටname
ක්ෂේත්රයේ අර්ථ දක්වා ඇති සියලුම සම්පත්resources
. මේ අනුව, යෙදවීම තිබේ නම්name
තේරුමක් ඇතුවnginx-deployment
, අභිරුචිකරණය එය සාදනු ඇතdev-nginx-deployment
. - ක්ෂේත්රයේ
namespace
සියලු සම්පත් වෙත ලබා දී ඇති නාම අවකාශය එක් කිරීමට kustomize උපදෙස් දෙයි. මෙම අවස්ථාවේදී, යෙදවීම සහ සේවාව නාම අවකාශයට වැටේdevelopment
. - අවසාන වශයෙන්, ක්ෂේත්රය
commonLabels
සියලු සම්පත් වලට එකතු කරන ලේබල් කට්ටලයක් අඩංගු වේ. අපගේ උදාහරණයේ, kustomize නම සහිත සම්පත් සඳහා ලේබලයක් පවරයිenvironment
සහ අර්ථයdevelopment
.
පරිශීලකයා කරන්නේ නම් kustomize build .
ගොනුව සමඟ නාමාවලියෙහි kustomization.yaml
සහ අවශ්ය සම්පත් (එනම් ගොනු deployment.yaml
и service.yaml
), එවිට ප්රතිදානයේදී එයට නිශ්චිතව දක්වා ඇති වෙනස්කම් සහිත පෙළක් ලැබෙනු ඇත kustomization.yaml
.
සටහන. පරිවර්තනය.: kustomize හි "සරල" භාවිතය පිළිබඳ ව්යාපෘති ලියකියවිලි වලින් නිදර්ශනය
වෙනස්කම් සිදු කිරීමට අවශ්ය නම් ප්රතිදානය යළි හරවා යැවිය හැක:
kustomize build . > custom-config.yaml
ප්රතිදාන දත්ත තීරණාත්මක වේ (එකම ආදාන දත්ත එකම ප්රතිදාන ප්රතිඵල නිපදවනු ඇත), එබැවින් ඔබට ප්රතිඵලය ගොනුවකට සුරැකීමට අවශ්ය නොවේ. ඒ වෙනුවට, එය වෙනත් විධානයකට කෙලින්ම යැවිය හැක:
kustomize build . | kubectl apply -f -
kustomize විශේෂාංග හරහා ද ප්රවේශ විය හැක kubectl -k
(Kubernetes අනුවාදය 1.14 සිට). කෙසේ වෙතත්, ස්වාධීන kustomize පැකේජය ඒකාබද්ධ kubectl පැකේජයට වඩා වේගයෙන් යාවත්කාලීන වන බව මතක තබා ගන්න (අවම වශයෙන් මෙය Kubernetes 1.15 නිකුතුවේදී සිදු වේ).
පාඨකයන් අසනු ඇත: "ඔබට ලිපිගොනු කෙලින්ම සංස්කරණය කළ හැකි නම් මෙම සංකීර්ණත්වය ඇයි?" නියම ප්රශ්නය. අපගේ උදාහරණයේ, ඇත්ත වශයෙන්ම හැකි ගොනු වෙනස් කරන්න deployment.yaml
и service.yaml
කෙලින්ම, නමුත් ඔවුන් වෙනත් කෙනෙකුගේ ව්යාපෘතියක දෙබලක් නම් කුමක් කළ යුතුද? ලිපිගොනු සෘජුවම වෙනස් කිරීම මඟින් මූලාරම්භය/මූලාශ්රය වෙත වෙනස්කම් සිදු කරන විට දෙබලක නැවත සකස් කිරීම අපහසු වේ (නොහැකි නම්). kustomize භාවිතා කිරීමෙන් ඔබට ගොනුවක් තුළ මෙම වෙනස්කම් මධ්යගත කිරීමට ඉඩ සලසයි kustomization.yaml
, මුල් ගොනු නොවෙනස්ව තබා අවශ්ය නම් මුල් ගොනු නැවත සකස් කිරීම පහසු කරයි.
kustomize හි ප්රතිලාභ වඩාත් සංකීර්ණ භාවිත අවස්ථා වලදී පැහැදිලි වේ. ඉහත උදාහරණයේ kustomization.yaml
සහ සම්පත් එකම නාමාවලියෙහි ඇත. කෙසේ වෙතත්, kustomize ආධාරක පාදක වින්යාසයක් සහ එහි බොහෝ ප්රභේද ඇති අවස්ථා භාවිතා කරයි, ඒවා ලෙසද හැඳින්වේ. ආවරණ. උදාහරණයක් ලෙස, පරිශීලකයාට අවශ්ය වූයේ nginx සඳහා යෙදවීම සහ සේවාව ලබා ගැනීමයි, එය මා උදාහරණයක් ලෙස භාවිතා කර, එම ගොනු වල සංවර්ධන, වේදිකාගත සහ නිෂ්පාදන අනුවාද (හෝ ප්රභේද) නිර්මාණය කිරීම. මෙය සිදු කිරීම සඳහා, ඔහු ඉහත සඳහන් කරන ලද ආවරණ සහ ඇත්ත වශයෙන්ම මූලික සම්පත් අවශ්ය වනු ඇත.
ආවරණ සහ යටින් පවතින සම්පත් පිළිබඳ අදහස නිදර්ශනය කිරීමට (මූලික සම්පත්), නාමාවලි වල පහත ව්යුහය ඇතැයි උපකල්පනය කරමු:
- base
- deployment.yaml
- service.yaml
- kustomization.yaml
- overlays
- dev
- kustomization.yaml
- staging
- kustomization.yaml
- prod
- kustomization.yaml
ගොනුවේ base/kustomization.yaml
ක්ෂේත්රය භාවිතා කරන පරිශීලකයින් resources
kustomize ඇතුළත් විය යුතු සම්පත් සරලව ප්රකාශ කරන්න.
එක් එක් ගොනු වල overlays/{dev,staging,prod}/kustomization.yaml
පරිශීලකයන් ක්ෂේත්රයේ මූලික වින්යාසය වෙත යොමු කරයි resources
, සහ පසුව සඳහා නිශ්චිත වෙනස්කම් දක්වන්න ලබා දී ඇති පරිසරය. උදාහරණයක් ලෙස, ගොනුව overlays/dev/kustomization.yaml
කලින් දුන් උදාහරණය වගේ වෙන්න පුළුවන්:
resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
environment: development
මෙම නඩුවේ ගොනුව overlays/prod/kustomization.yaml
සම්පූර්ණයෙන්ම වෙනස් විය හැකිය:
resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
environment: production
sre-team: blue
පරිශීලකයා ක්රියාත්මක වන විට kustomize build .
නාමාවලියෙහි overlays/dev
, kustomize සංවර්ධන විකල්පය උත්පාදනය කරනු ඇත. දුවනවා නම් kustomize build .
නාමාවලියෙහි overlays/prod
- ඔබට නිෂ්පාදන විකල්පය ලැබේ. සහ මේ සියල්ල - මුල් පිටපතට කිසිදු වෙනසක් නොකර (පදනම) ලිපිගොනු, සියල්ල ප්රකාශන සහ නියතිවාදී ආකාරයෙන්. ඔබට මූලික වින්යාසය සහ බහලුම් සෘජුවම අනුවාද පාලනයට යොමු කළ හැකිය, මෙම ගොනු මත පදනම්ව ඔබට ඕනෑම වේලාවක අවශ්ය වින්යාසය ප්රතිනිෂ්පාදනය කළ හැකි බව දැනගෙන.
සටහන. පරිවර්තනය.: kustomize හි උඩැතිරි භාවිතා කිරීම පිළිබඳ ව්යාපෘති ලියකියවිලි වලින් නිදර්ශනය
අභිරුචිකරණය කළ හැකිය බොහෝ මෙම ලිපියේ ආවරණය කර ඇති දේට වඩා. කෙසේ වෙතත්, එය හොඳ හැඳින්වීමක් ලෙස සේවය කරනු ඇතැයි මම බලාපොරොත්තු වෙමි.
අතිරේක සම්පත්
kustomize ගැන බොහෝ හොඳ ලිපි සහ ප්රකාශන තිබේ. මට විශේෂයෙන් ප්රයෝජනවත් යැයි හැඟුණු කිහිපයක් මෙන්න:
-
Kustomize භාවිතයෙන් විවිධ පරිසරයන් නිෂ්පාදනය/පරීක්ෂණය සඳහා YAML වින්යාසය වෙනස් කරන්න ; -
Kustomize — Kubernetes හි සැකිලි කිරීම සඳහා නිවැරදි මාර්ගය ; -
අභිරුචිකරණය භාවිතා කරමින් Kubernetes වස්තූන් ප්රකාශන කළමනාකරණය ; -
අභිරුචිකරණය සමඟ Upstream Helm ප්රස්ථාර අභිරුචිකරණය කිරීම .
සටහන. පරිවර්තනය.: ලෙස ප්රකාශිත සබැඳි බ්ලොක් එකක් ද ඔබට නිර්දේශ කළ හැක
ඔබට මෙම ද්රව්ය වැඩිදියුණු කිරීම සඳහා ප්රශ්න හෝ යෝජනා තිබේ නම්, මම ප්රතිපෝෂණ සඳහා සැමවිටම විවෘතව සිටිමි. ඔබට මාව සම්බන්ධ කර ගත හැක
පරිවර්තකගෙන් PS
අපගේ බ්ලොග් අඩවියේ ද කියවන්න:
- «
Kubernetes මත ධාවනය වන යෙදුම් සංවර්ධකයින් සඳහා මෙවලම් »; - «
කුබර්නෙටෙස් 1.14: අලුත් දේ පිළිබඳ විශේෂ අවස්ථා »; - «
ඇම්ස්ටර්ඩෑම් හි 2019 හෙල්ම් සමුළුවේ ප්රධාන ප්රතිඵල පහක් »; - «
Kubernetes - Helm සඳහා පැකේජ කළමනාකරු වෙත ප්රායෝගික හැඳින්වීම ".
මූලාශ්රය: www.habr.com