தனிப்பயனாக்க ஒரு சுருக்கமான அறிமுகம்

குறிப்பு. மொழிபெயர்: கட்டுரை ஸ்காட் லோவ் என்பவரால் எழுதப்பட்டது, IT இல் விரிவான அனுபவமுள்ள ஒரு பொறியியலாளர், அவர் ஏழு அச்சிடப்பட்ட புத்தகங்களின் ஆசிரியர்/இணை ஆசிரியர் ஆவார் (முக்கியமாக VMware vSphere இல்). அவர் இப்போது அதன் VMware துணை நிறுவனமான ஹெப்டியோவில் (2016 இல் வாங்கியது), கிளவுட் கம்ப்யூட்டிங் மற்றும் குபெர்னெட்டஸில் நிபுணத்துவம் பெற்றவர். தொழில்நுட்பத்தைப் பயன்படுத்தி குபெர்னெட்டிற்கான உள்ளமைவு நிர்வாகத்திற்கான சுருக்கமான மற்றும் எளிதில் புரிந்துகொள்ளக்கூடிய அறிமுகமாக இந்த உரை செயல்படுகிறது. தனிப்பயனாக்கலாம், இது சமீபத்தில் K8s இன் பகுதியாக மாறியது.

தனிப்பயனாக்க ஒரு சுருக்கமான அறிமுகம்

கஸ்டமைஸ் என்பது ஒரு கருவியாகும் கிட்ஹப்பில் கஸ்டமைஸ் களஞ்சியத்தை) Kustomize நேரடியாக இயக்கப்படலாம் அல்லது Kubernetes 1.14 இல் பயன்படுத்தப்பட்டது kubectl -k அதன் செயல்பாட்டை அணுக (குபெர்னெட்டஸ் 1.15 இன் படி, தனி பைனரி kubectl இல் கட்டமைக்கப்பட்ட திறன்களை விட புதியது). (குறிப்பு. மொழிபெயர்: மற்றும் சமீபத்திய வெளியீடு குபர்னெட்டஸ் 1.16 தனிப்பயனாக்கலாம் உதவியவா் kubeadm பயன்பாட்டில் உள்ளது.) இந்த இடுகையில், கஸ்டமைஸின் அடிப்படைகளை வாசகர்களுக்கு அறிமுகப்படுத்த விரும்புகிறேன்.

அதன் எளிய வடிவம்/பயன்பாடுகளில், kustomize என்பது ஆதாரங்களின் தொகுப்பாகும் (குபெர்னெட்ஸ் பொருள்களை வரையறுக்கும் 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 -

கஸ்டமைஸ் அம்சங்களையும் அணுகலாம் kubectl -k (குபெர்னெட்டஸ் பதிப்பு 1.14 முதல்). எவ்வாறாயினும், ஒருங்கிணைந்த kubectl தொகுப்பை விட தனித்தனியான kustomize தொகுப்பு வேகமாக புதுப்பிக்கப்படுகிறது என்பதை நினைவில் கொள்ளவும் (குபர்னெட்டஸ் 1.15 வெளியீட்டில் குறைந்தபட்சம் இதுவாகும்).

வாசகர்கள் கேட்கலாம்: "உங்களால் கோப்புகளை நேரடியாகத் திருத்த முடிந்தால் ஏன் இந்த சிக்கலானது?" அருமையான கேள்வி. எங்கள் உதாரணத்தில், உண்மையில் முடியும் கோப்புகளை மாற்றவும் deployment.yaml и service.yaml நேரடியாக, ஆனால் அவர்கள் வேறொருவரின் திட்டத்தின் ஒரு முட்கரண்டியாக இருந்தால் என்ன செய்வது? கோப்புகளை நேரடியாக மாற்றுவது, தோற்றம்/மூலத்தில் மாற்றங்கள் செய்யப்படும்போது, ​​ஃபோர்க்கை மறுபரிசீலனை செய்வதை கடினமாக்குகிறது (சாத்தியமற்றது என்றால்). kustomize ஐப் பயன்படுத்துவது, ஒரு கோப்பில் இந்த மாற்றங்களை மையப்படுத்த உங்களை அனுமதிக்கிறது kustomization.yaml, அசல் கோப்புகளை அப்படியே விட்டுவிட்டு, தேவைப்பட்டால் அசல் கோப்புகளை மறுதளம் செய்வதை எளிதாக்குகிறது.

கஸ்டமைஸின் நன்மைகள் மிகவும் சிக்கலான பயன்பாட்டு நிகழ்வுகளில் தெளிவாகத் தெரியும். மேலே உள்ள எடுத்துக்காட்டில் 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 கஸ்டமைஸ் சேர்க்க வேண்டிய ஆதாரங்களை வெறுமனே அறிவிக்கவும்.

ஒவ்வொரு கோப்புகளிலும் 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 பற்றிய சமீபத்திய அறிக்கைகளுடன் கூடிய வீடியோக்களின் தொகுப்பு.

இந்த விஷயத்தை மேம்படுத்த உங்களுக்கு கேள்விகள் அல்லது பரிந்துரைகள் இருந்தால், நான் எப்போதும் கருத்து தெரிவிக்க தயாராக இருக்கிறேன். நீங்கள் என்னை தொடர்பு கொள்ளலாம் ட்விட்டர் அல்லது குபெர்னெட்ஸ் ஸ்லாக் சேனல். கஸ்டமைஸ் மூலம் உங்கள் மேனிஃபெஸ்ட்டை மாற்றி மகிழுங்கள்!

மொழிபெயர்ப்பாளரிடமிருந்து பி.எஸ்

எங்கள் வலைப்பதிவிலும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்