குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

ஏப்ரல் 8 மாநாட்டில் செயிண்ட் ஹைலோட்++ 2019, "DevOps மற்றும் செயல்பாடுகள்" பிரிவின் ஒரு பகுதியாக, "குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் பூர்த்தி செய்தல்" என்ற அறிக்கை வழங்கப்பட்டது, இதில் Flant நிறுவனத்தின் மூன்று ஊழியர்கள் பங்கேற்றனர். அதில், குபெர்னெட்டஸின் திறன்களை விரிவுபடுத்தவும் பூர்த்தி செய்யவும் நாங்கள் விரும்பிய பல சூழ்நிலைகளைப் பற்றி பேசுகிறோம், ஆனால் அதற்கான ஆயத்த மற்றும் எளிமையான தீர்வை நாங்கள் கண்டுபிடிக்கவில்லை. திறந்த மூல திட்டங்களின் வடிவத்தில் தேவையான தீர்வுகள் எங்களிடம் உள்ளன, மேலும் இந்த உரை அவர்களுக்கு அர்ப்பணிக்கப்பட்டுள்ளது.

பாரம்பரியமாக, நாங்கள் வழங்குவதில் மகிழ்ச்சி அடைகிறோம் அறிக்கையின் வீடியோ (50 நிமிடங்கள், கட்டுரையை விட அதிக தகவல்) மற்றும் உரை வடிவத்தில் முக்கிய சுருக்கம். போ!

K8s இல் கோர் மற்றும் சேர்த்தல்கள்

குபெர்னெட்ஸ் நீண்ட காலமாக நிறுவப்பட்ட நிர்வாகத்திற்கான தொழில் மற்றும் அணுகுமுறைகளை மாற்றுகிறார்:

  • அவருக்கு நன்றி சுருக்கங்கள், ஒரு கட்டமைப்பை அமைப்பது அல்லது கட்டளையை இயக்குவது (Chef, Ansible...) போன்ற கருத்துகளுடன் நாங்கள் இனி செயல்பட மாட்டோம், ஆனால் கொள்கலன்கள், சேவைகள் போன்றவற்றைக் குழுவாகப் பயன்படுத்துகிறோம்.
  • என்ற நுணுக்கங்களைப் பற்றி சிந்திக்காமல் நாம் விண்ணப்பங்களைத் தயாரிக்கலாம் குறிப்பிட்ட தளம், இது தொடங்கப்படும்: வெற்று உலோகம், வழங்குநர்களில் ஒருவரின் மேகம் போன்றவை.
  • K8s மூலம் நீங்கள் ஒருபோதும் அணுகக்கூடியதாக இருந்ததில்லை சிறந்த நடைமுறைகள் உள்கட்டமைப்பை ஒழுங்கமைத்தல்: அளவிடுதல் நுட்பங்கள், சுய-குணப்படுத்துதல், தவறு சகிப்புத்தன்மை போன்றவை.

இருப்பினும், நிச்சயமாக, எல்லாம் அவ்வளவு சீராக இல்லை: குபெர்னெட்டஸ் அதன் சொந்த புதிய சவால்களைக் கொண்டு வந்தார்.

Kubernetes இல்லை அனைத்து பயனர்களின் அனைத்து பிரச்சனைகளையும் தீர்க்கும் கலவையாகும். மைய குபெர்னெட்டெஸ் என்பது தேவையான குறைந்தபட்ச செயல்பாடுகளின் தொகுப்பிற்கு மட்டுமே பொறுப்பாகும் ஒவ்வொரு கொத்து:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

குபெர்னெட்டஸ் கோர், கொள்கலன்களை தொகுத்தல், போக்குவரத்தை நிர்வகித்தல் மற்றும் பலவற்றிற்கான அடிப்படைகளின் அடிப்படைகளை வரையறுக்கிறது. அவற்றைப் பற்றி இன்னும் விரிவாகப் பேசினோம் 2 ஆண்டுகளுக்கு முன்பு அறிக்கை.

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

மறுபுறம், K8s கிடைக்கக்கூடிய செயல்பாடுகளை விரிவாக்க சிறந்த வாய்ப்புகளை வழங்குகிறது, இது மற்றவர்களை மூட உதவுகிறது - குறிப்பிட்ட - பயனர் தேவைகள். குபெர்னெட்டஸில் சேர்ப்பது கிளஸ்டர் நிர்வாகிகளின் பொறுப்பாகும், அவர்கள் தங்கள் கிளஸ்டரை "சரியான வடிவத்தில்" பெறுவதற்குத் தேவையான அனைத்தையும் நிறுவி உள்ளமைக்க வேண்டும் [அவர்களின் குறிப்பிட்ட சிக்கல்களைத் தீர்க்க]. இவை என்ன வகையான சேர்த்தல்கள்? சில உதாரணங்களைப் பார்ப்போம்.

துணை நிரல்களின் எடுத்துக்காட்டுகள்

குபெர்னெட்ஸை நிறுவிய பிறகு, ஒரு முனைக்குள் மற்றும் முனைகளுக்கு இடையில் காய்களின் தொடர்புக்கு மிகவும் அவசியமான நெட்வொர்க்கிங் தானாகவே இயங்கவில்லை என்பது நமக்கு ஆச்சரியமாக இருக்கலாம். குபெர்னெட்ஸ் கர்னல் தேவையான இணைப்புகளுக்கு உத்தரவாதம் அளிக்காது; மாறாக, அது பிணையத்தை தீர்மானிக்கிறது இடைமுகம் (CNI) மூன்றாம் தரப்பு துணை நிரல்களுக்கு. இந்த துணை நிரல்களில் ஒன்றை நாம் நிறுவ வேண்டும், இது பிணைய உள்ளமைவுக்கு பொறுப்பாகும்.

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

ஒரு நெருக்கமான உதாரணம் தரவு சேமிப்பக தீர்வுகள் (உள்ளூர் வட்டு, பிணைய தொகுதி சாதனம், Ceph...). ஆரம்பத்தில் அவர்கள் மையத்தில் இருந்தனர், ஆனால் வருகையுடன் சிஎஸ்ஐ நிலைமை ஏற்கனவே விவரிக்கப்பட்டதைப் போலவே மாறுகிறது: இடைமுகம் குபெர்னெட்டஸில் உள்ளது, மேலும் அதன் செயலாக்கம் மூன்றாம் தரப்பு தொகுதிகளில் உள்ளது.

பிற எடுத்துக்காட்டுகள் பின்வருமாறு:

  • உட்செல்வதை- கட்டுப்படுத்திகள் (அவர்களின் மதிப்பாய்வில் பார்க்கவும் எங்கள் சமீபத்திய கட்டுரை).
  • சான்றிதழ் மேலாளர்:

    குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

  • ஆபரேட்டர்கள் துணை நிரல்களின் முழு வகுப்பாகும் (குறிப்பிடப்பட்ட சான்றிதழ் மேலாளரையும் உள்ளடக்கியது), அவை பழமையான(கள்) மற்றும் கட்டுப்படுத்தி(களை) வரையறுக்கின்றன. அவர்களின் வேலையின் தர்க்கம் எங்கள் கற்பனையால் மட்டுமே வரையறுக்கப்பட்டுள்ளது மற்றும் ஆயத்த உள்கட்டமைப்பு கூறுகளை (எடுத்துக்காட்டாக, ஒரு DBMS) பழமையானதாக மாற்ற அனுமதிக்கிறது, அவை வேலை செய்வது மிகவும் எளிதானது (ஒரு கொள்கலன்கள் மற்றும் அவற்றின் அமைப்புகளை விட). ஒரு பெரிய எண்ணிக்கையிலான ஆபரேட்டர்கள் எழுதப்பட்டுள்ளனர் - அவர்களில் பலர் இன்னும் உற்பத்திக்கு தயாராக இல்லையென்றாலும், அது நேரத்தின் விஷயம் மட்டுமே:

    குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

  • அளவீடுகள் - குபெர்னெட்டஸ் எவ்வாறு இடைமுகத்தை (மெட்ரிக்ஸ் ஏபிஐ) செயலாக்கத்தில் இருந்து பிரித்தார் என்பதற்கான மற்றொரு விளக்கம் (ப்ரோமிதியஸ் அடாப்டர், டேட்டாடாக் கிளஸ்டர் ஏஜென்ட்... போன்ற மூன்றாம் தரப்பு ஆட்-ஆன்கள்).
  • செய்ய கண்காணிப்பு மற்றும் புள்ளிவிவரங்கள், நடைமுறையில் மட்டும் தேவை இல்லை ப்ரோமிதியஸ் மற்றும் கிராஃபானா, ஆனால் kube-state-metrics, node-exporter போன்றவை.

மேலும் இது சேர்த்தல்களின் முழுமையான பட்டியல் அல்ல... எடுத்துக்காட்டாக, நாங்கள் Flant நிறுவனத்தில் தற்போது நிறுவுகிறோம் 29 சேர்த்தல் (இவை அனைத்தும் மொத்தம் 249 குபெர்னெட்ஸ் பொருள்களை உருவாக்குகின்றன). எளிமையாகச் சொன்னால், கூட்டல் இல்லாமல் ஒரு கிளஸ்டரின் வாழ்க்கையை நம்மால் பார்க்க முடியாது.

ஆட்டோமேஷன்

ஒவ்வொரு நாளும் நாம் சந்திக்கும் வழக்கமான செயல்பாடுகளை தானியங்குபடுத்துவதற்காக ஆபரேட்டர்கள் வடிவமைக்கப்பட்டுள்ளனர். ஆபரேட்டரை எழுதுவது ஒரு சிறந்த தீர்வாக இருக்கும் நிஜ வாழ்க்கை எடுத்துக்காட்டுகள் இங்கே:

  1. பயன்பாட்டிற்கான படங்களுடன் ஒரு தனிப்பட்ட (அதாவது உள்நுழைவு தேவை) பதிவு உள்ளது. பதிவேட்டில் அங்கீகாரத்தை அனுமதிக்கும் ஒரு சிறப்பு ரகசியம் ஒவ்வொரு காய்க்கும் ஒதுக்கப்பட்டுள்ளது என்று கருதப்படுகிறது. இந்த ரகசியம் பெயர்வெளியில் இருப்பதை உறுதி செய்வதே எங்கள் பணியாகும், இதனால் காய்கள் படங்களை பதிவிறக்கம் செய்யலாம். நிறைய பயன்பாடுகள் இருக்கலாம் (ஒவ்வொருவருக்கும் ஒரு ரகசியம் தேவை), மேலும் ரகசியங்களைத் தொடர்ந்து புதுப்பித்துக்கொள்வது பயனுள்ளதாக இருக்கும், எனவே கையால் இரகசியங்களை இடுவதற்கான விருப்பம் அகற்றப்படுகிறது. இங்குதான் ஆபரேட்டர் மீட்புக்கு வருகிறார்: பெயர்வெளி தோன்றும் வரை காத்திருக்கும் ஒரு கட்டுப்படுத்தியை நாங்கள் உருவாக்குகிறோம், இந்த நிகழ்வின் அடிப்படையில், பெயர்வெளியில் ஒரு ரகசியத்தைச் சேர்ப்போம்.
  2. காய்களிலிருந்து இணையத்தை இயல்பாக அணுகுவது தடைசெய்யப்பட்டுள்ளது. ஆனால் சில நேரங்களில் இது தேவைப்படலாம்: அணுகல் அனுமதி பொறிமுறையானது குறிப்பிட்ட திறன்கள் தேவையில்லாமல் எளிமையாக வேலை செய்வது தர்க்கரீதியானது, எடுத்துக்காட்டாக, பெயர்வெளியில் ஒரு குறிப்பிட்ட லேபிள் இருப்பதால். இங்கே ஆபரேட்டர் எங்களுக்கு எப்படி உதவ முடியும்? பெயர்வெளியில் லேபிள் தோன்றும் வரை காத்திருந்து, இணைய அணுகலுக்கான பொருத்தமான கொள்கையைச் சேர்க்கும் ஒரு கட்டுப்படுத்தி உருவாக்கப்பட்டுள்ளது.
  3. இதேபோன்ற சூழ்நிலை: நாம் ஒரு குறிப்பிட்டதைச் சேர்க்க வேண்டும் என்று வைத்துக்கொள்வோம் களங்கம், அது ஒத்த லேபிளைக் கொண்டிருந்தால் (ஒருவித முன்னொட்டுடன்). ஆபரேட்டரின் செயல்கள் வெளிப்படையானவை...

எந்தவொரு கிளஸ்டரிலும், வழக்கமான பணிகள் தீர்க்கப்பட வேண்டும், மற்றும் சரியாக ஆபரேட்டர்களைப் பயன்படுத்தி இதைச் செய்யலாம்.

விவரிக்கப்பட்ட அனைத்து கதைகளையும் சுருக்கமாக, நாங்கள் ஒரு முடிவுக்கு வந்தோம் குபெர்னெட்ஸில் வசதியான வேலைக்கு உங்களுக்குத் தேவை: ஏ) துணை நிரல்களை நிறுவவும், b) ஆபரேட்டர்களை உருவாக்குங்கள் (தினசரி நிர்வாகப் பணிகளைத் தீர்ப்பதற்கு).

குபர்னெட்டஸுக்கு ஒரு அறிக்கையை எழுதுவது எப்படி?

பொதுவாக, திட்டம் எளிமையானது:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

... ஆனால் பின்னர் அது மாறிவிடும்:

  • குபெர்னெட்டஸ் ஏபிஐ என்பது அற்பமானதல்ல, இது தேர்ச்சி பெற அதிக நேரம் எடுக்கும்;
  • நிரலாக்கமும் அனைவருக்கும் இல்லை (கோ மொழி விருப்பமான மொழியாக தேர்ந்தெடுக்கப்பட்டது, ஏனெனில் அதற்கென்று ஒரு சிறப்பு கட்டமைப்பு உள்ளது - ஆபரேட்டர் SDK);
  • கட்டமைப்பிலும் நிலைமை ஒத்திருக்கிறது.

கீழே வரி: ஒரு கட்டுப்படுத்தி எழுத (ஆபரேட்டர்) வேண்டும் குறிப்பிடத்தக்க வளங்களை செலவிடுங்கள் பொருள் படிக்க. இது "பெரிய" ஆபரேட்டர்களுக்கு நியாயப்படுத்தப்படும் - MySQL DBMS க்கு. ஆனால் மேலே விவரிக்கப்பட்ட எடுத்துக்காட்டுகளை நாம் நினைவில் வைத்துக் கொண்டால் (இரகசியங்களை வெளிப்படுத்துவது, இணையத்தில் காய்களை அணுகுவது...), அதை நாமும் சரியாகச் செய்ய விரும்புகிறோம், செலவழித்த முயற்சி இப்போது நமக்குத் தேவையான முடிவை விட அதிகமாக இருக்கும் என்பதை நாம் புரிந்துகொள்வோம்:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

பொதுவாக, ஒரு குழப்பம் எழுகிறது: நிறைய வளங்களைச் செலவழித்து, அறிக்கைகளை எழுதுவதற்கான சரியான கருவியைக் கண்டறியவும் அல்லது பழைய பாணியில் (ஆனால் விரைவாக) செய்யவும். அதைத் தீர்க்க - இந்த உச்சநிலைகளுக்கு இடையில் ஒரு சமரசத்தைக் கண்டறிய - நாங்கள் எங்கள் சொந்த திட்டத்தை உருவாக்கினோம்: ஷெல்-ஆபரேட்டர் (அவருடையதையும் பார்க்கவும் சமீபத்திய அறிவிப்பு மையத்தில்).

ஷெல்-ஆபரேட்டர்

அவர் எப்படி வேலை செய்கிறார்? கிளஸ்டரில் ஷெல்-ஆபரேட்டருடன் Go பைனரியைக் கொண்ட பாட் உள்ளது. அதன் அருகில் ஒரு தொகுப்பு உள்ளது கொக்கிகள் (அவற்றைப் பற்றிய கூடுதல் விவரங்கள் - கீழே காண்க). ஷெல்-ஆபரேட்டரே சிலவற்றிற்கு சந்தா செலுத்துகிறார் நிகழ்வுகள் குபெர்னெட்டஸ் API இல், அது நிகழ்ந்தவுடன் தொடர்புடைய கொக்கிகளை துவக்குகிறது.

எந்த நிகழ்வுகளில் எந்த கொக்கிகளை அழைக்க வேண்டும் என்பதை ஷெல்-ஆபரேட்டருக்கு எப்படி தெரியும்? இந்த தகவல் ஷெல்-ஆபரேட்டருக்கு கொக்கிகள் மூலம் அனுப்பப்படுகிறது, மேலும் அவர்கள் அதை மிகவும் எளிமையாக செய்கிறார்கள்.

ஹூக் என்பது ஒரு பாஷ் ஸ்கிரிப்ட் அல்லது ஒரு வாதத்தை ஏற்கும் மற்ற இயங்கக்கூடிய கோப்பு --config மற்றும் JSON உடன் பதிலளிக்கிறது. பிந்தையது எந்தெந்த பொருள்களுக்கு ஆர்வமாக உள்ளது மற்றும் எந்த நிகழ்வுகளுக்கு (இந்த பொருட்களுக்கு) பதிலளிக்க வேண்டும் என்பதை தீர்மானிக்கிறது:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

எங்கள் எடுத்துக்காட்டுகளில் ஒன்றின் ஷெல்-ஆபரேட்டரில் செயல்படுத்தப்படுவதை நான் விளக்குகிறேன் - பயன்பாட்டு படங்களுடன் தனிப்பட்ட பதிவேட்டை அணுகுவதற்கான ரகசியங்களை சிதைப்பது. இது இரண்டு நிலைகளைக் கொண்டுள்ளது.

பயிற்சி: 1. ஒரு கொக்கி எழுதுங்கள்

முதலில், கொக்கியில் நாம் செயலாக்குவோம் --config, பெயர்வெளிகளில் நாங்கள் ஆர்வமாக உள்ளோம் என்பதைக் குறிக்கிறது, குறிப்பாக, அவை உருவாக்கப்பட்ட தருணம்:

[[ $1 == "--config" ]] ; then
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF
…

லாஜிக் எப்படி இருக்கும்? மேலும் மிகவும் எளிமையானது:

…
else
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi

முதல் படி, எந்த பெயர்வெளி உருவாக்கப்பட்டது என்பதைக் கண்டுபிடிப்பது, இரண்டாவது அதைப் பயன்படுத்தி உருவாக்குவது kubectl இந்த பெயர்வெளிக்கான ரகசியம்.

பயிற்சி: 2. படத்தை அசெம்பிள் செய்தல்

உருவாக்கப்பட்ட கொக்கியை ஷெல்-ஆபரேட்டருக்கு அனுப்புவது மட்டுமே மீதமுள்ளது - இதை எப்படி செய்வது? ஷெல்-ஆபரேட்டரே டோக்கர் படமாக வருகிறது, எனவே இந்த படத்தில் உள்ள சிறப்பு கோப்பகத்தில் ஹூக்கை சேர்ப்பதே எங்கள் பணி:

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

எஞ்சியிருப்பது அதைச் சேகரித்து தள்ளுவதுதான்:

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

படத்தை கிளஸ்டருக்கு வரிசைப்படுத்துவதே இறுதித் தொடுதல். இதைச் செய்ய, எழுதுவோம் பயன்படுத்தல்:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

கவனம் செலுத்த இரண்டு புள்ளிகள் உள்ளன:

  1. புதிதாக உருவாக்கப்பட்ட படத்தின் அறிகுறி;
  2. இது (குறைந்தபட்சம்) குபெர்னெட்டஸில் உள்ள நிகழ்வுகளுக்கு குழுசேரவும், பெயர்வெளிகளுக்கு ரகசியங்களை ஒதுக்கவும் உரிமைகள் தேவைப்படும் ஒரு கணினி கூறு ஆகும், எனவே நாங்கள் ஹூக்கிற்கான சேவைக் கணக்கை (மற்றும் விதிகளின் தொகுப்பை) உருவாக்குகிறோம்.

முடிவு - நாங்கள் எங்கள் பிரச்சினையை தீர்த்தோம் உறவினர்கள் குபெர்னெட்டஸுக்கு இரகசியங்களை சிதைப்பதற்கான ஒரு ஆபரேட்டரை உருவாக்கும் விதத்தில்.

மற்ற ஷெல்-ஆபரேட்டர் அம்சங்கள்

ஹூக் வேலை செய்யும் நீங்கள் தேர்ந்தெடுத்த வகையின் பொருட்களைக் கட்டுப்படுத்த, அவை வடிகட்டப்படலாம், குறிப்பிட்ட லேபிள்களின்படி தேர்ந்தெடுப்பது (அல்லது பயன்படுத்துதல் matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     …
  }
]

வழங்கப்பட்டது இரட்டிப்பு பொறிமுறை, இது - jq வடிப்பானைப் பயன்படுத்தி - பெரிய JSON பொருள்களை சிறியதாக மாற்ற உங்களை அனுமதிக்கிறது, மாற்றங்களை நாங்கள் கண்காணிக்க விரும்பும் அளவுருக்கள் மட்டுமே இருக்கும்.

ஒரு கொக்கி அழைக்கப்படும் போது, ​​ஷெல்-ஆபரேட்டர் அதை கடந்து செல்கிறது பொருள் தரவு, எந்த தேவைக்கும் பயன்படுத்தக்கூடியது.

கொக்கிகளைத் தூண்டும் நிகழ்வுகள் குபெர்னெட்டஸ் நிகழ்வுகளுக்கு மட்டுப்படுத்தப்படவில்லை: ஷெல்-ஆபரேட்டர் இதற்கான ஆதரவை வழங்குகிறது நேரம் கொக்கிகள் அழைப்பு (பாரம்பரிய திட்டமிடலில் உள்ள க்ரான்டாப்பைப் போன்றது), அத்துடன் ஒரு சிறப்பு நிகழ்வு தொடக்கத்தில். இந்த நிகழ்வுகள் அனைத்தையும் ஒன்றிணைத்து ஒரே கொக்கிக்கு ஒதுக்கலாம்.

ஷெல்-ஆபரேட்டரின் மேலும் இரண்டு அம்சங்கள்:

  1. இது வேலை செய்கிறது ஒத்திசைவற்ற முறையில். ஒரு குபெர்னெட்டஸ் நிகழ்வு (உருவாக்கப்பட்ட ஒரு பொருள் போன்றவை) பெறப்பட்டதால், பிற நிகழ்வுகள் (அதே பொருள் நீக்கப்படுவது போன்றவை) கிளஸ்டரில் நிகழ்ந்திருக்கலாம், மேலும் கொக்கிகள் இதைக் கணக்கிட வேண்டும். கொக்கி ஒரு பிழையுடன் செயல்படுத்தப்பட்டிருந்தால், இயல்பாக அது இருக்கும் மறு அழைப்பு வெற்றிகரமாக முடியும் வரை (இந்த நடத்தை மாற்றப்படலாம்).
  2. அது ஏற்றுமதி செய்கிறது அளவீடுகள் ப்ரோமிதியஸுக்கு, ஷெல்-ஆபரேட்டர் செயல்படுகிறதா என்பதை நீங்கள் புரிந்து கொள்ள முடியும், ஒவ்வொரு கொக்கிக்கும் உள்ள பிழைகளின் எண்ணிக்கை மற்றும் தற்போதைய வரிசை அளவைக் கண்டறியவும்.

அறிக்கையின் இந்த பகுதியை சுருக்கமாக:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

துணை நிரல்களை நிறுவுகிறது

Kubernetes உடன் வசதியான வேலைக்காக, துணை நிரல்களை நிறுவ வேண்டியதன் அவசியமும் குறிப்பிடப்பட்டுள்ளது. நாங்கள் இப்போது அதை எவ்வாறு செய்கிறோம் என்பதற்கான எங்கள் நிறுவனத்தின் பாதையின் உதாரணத்தைப் பயன்படுத்தி அதைப் பற்றி நான் உங்களுக்குச் சொல்கிறேன்.

நாங்கள் குபெர்னெட்டஸுடன் பல கிளஸ்டர்களுடன் வேலை செய்யத் தொடங்கினோம், அதில் இன்க்ரஸ் மட்டுமே கூடுதலாக இருந்தது. இது ஒவ்வொரு கிளஸ்டரிலும் வித்தியாசமாக நிறுவப்பட வேண்டும், மேலும் வெவ்வேறு சூழல்களுக்கு பல YAML உள்ளமைவுகளைச் செய்துள்ளோம்: வெற்று உலோகம், AWS...

அதிக கொத்துகள் இருந்ததால், அதிக கட்டமைப்புகள் இருந்தன. கூடுதலாக, இந்த உள்ளமைவுகளை நாங்கள் மேம்படுத்தினோம், இதன் விளைவாக அவை மிகவும் பன்முகத்தன்மை கொண்டவை:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

எல்லாவற்றையும் ஒழுங்காக வைக்க, நாங்கள் ஒரு ஸ்கிரிப்டுடன் தொடங்கினோம் (install-ingress.sh), நாங்கள் எந்த வகையான கிளஸ்டரைப் பயன்படுத்துவோம் என்பதை ஒரு வாதமாக எடுத்துக் கொண்டு, தேவையான YAML உள்ளமைவை உருவாக்கி அதை குபெர்னெட்டஸுக்கு அனுப்பியது.

சுருக்கமாக, எங்கள் மேலும் பாதை மற்றும் அதனுடன் தொடர்புடைய பகுத்தறிவு பின்வருமாறு:

  • YAML உள்ளமைவுகளுடன் வேலை செய்ய, ஒரு டெம்ப்ளேட் இயந்திரம் தேவை (முதல் கட்டங்களில் இது எளிமையானது);
  • க்ளஸ்டர்களின் எண்ணிக்கையில் அதிகரிப்புடன், தானியங்கி புதுப்பித்தல் தேவை வந்தது (ஆரம்ப தீர்வாக ஸ்கிரிப்டை கிட்டில் வைத்து, கிரானைப் பயன்படுத்தி புதுப்பித்து இயக்குவது);
  • ப்ரோமிதியஸுக்கும் இதே போன்ற ஸ்கிரிப்ட் தேவைப்பட்டது (install-prometheus.sh), இருப்பினும், இதற்கு அதிக உள்ளீட்டுத் தரவு தேவைப்படுகிறது, அத்துடன் அவற்றின் சேமிப்பகம் (நல்ல முறையில் - மையப்படுத்தப்பட்ட மற்றும் ஒரு கிளஸ்டரில்) மற்றும் சில தரவு (கடவுச்சொற்கள்) தானாக உருவாக்கப்படலாம் என்பது குறிப்பிடத்தக்கது:

    குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

  • வளர்ந்து வரும் எண்ணிக்கையிலான க்ளஸ்டர்களுக்கு ஏதேனும் தவறு செய்யும் அபாயம் தொடர்ந்து அதிகரித்து வருகிறது, எனவே நிறுவிகள் என்பதை நாங்கள் உணர்ந்தோம் (அதாவது இரண்டு ஸ்கிரிப்டுகள்: இங்க்ரெஸ் மற்றும் ப்ரோமிதியஸுக்கு) ஸ்டேஜிங் தேவைப்பட்டது (Git இல் உள்ள பல கிளைகள், அவற்றைப் புதுப்பிக்க பல கிரான்கள்: நிலையான அல்லது சோதனை கிளஸ்டர்கள்);
  • с kubectl apply அதனுடன் பணிபுரிவது கடினமாகிவிட்டது, ஏனெனில் இது அறிவிப்பு அல்ல, மேலும் பொருட்களை மட்டுமே உருவாக்க முடியும், ஆனால் அவற்றின் நிலை குறித்த முடிவுகளை எடுக்கவோ/அவற்றை நீக்கவோ முடியாது;
  • அந்த நேரத்தில் நாங்கள் செயல்படுத்தாத சில செயல்பாடுகளை நாங்கள் காணவில்லை:
    • கிளஸ்டர் புதுப்பிப்புகளின் முடிவின் மீது முழு கட்டுப்பாடு,
    • கிளஸ்டரிலிருந்து (கண்டுபிடிப்பு) பெறக்கூடிய தரவின் அடிப்படையில் சில அளவுருக்கள் (நிறுவல் ஸ்கிரிப்ட்களுக்கான உள்ளீடு) தானாக தீர்மானித்தல்,
    • தொடர்ச்சியான கண்டுபிடிப்பு வடிவத்தில் அதன் தர்க்கரீதியான வளர்ச்சி.

எங்கள் மற்ற திட்டத்தின் கட்டமைப்பிற்குள் இந்த திரட்டப்பட்ட அனுபவத்தை நாங்கள் செயல்படுத்தினோம் - addon-operator.

Addon-operator

இது ஏற்கனவே குறிப்பிட்ட ஷெல்-ஆபரேட்டரை அடிப்படையாகக் கொண்டது. முழு அமைப்பும் இதுபோல் தெரிகிறது:

ஷெல்-ஆபரேட்டர் கொக்கிகளில் பின்வருபவை சேர்க்கப்பட்டுள்ளன:

  • மதிப்புகள் சேமிப்பு,
  • ஹெல்ம் விளக்கப்படம்,
  • கூறு என்று மதிப்புகள் கடையை கண்காணிக்கிறது மற்றும் - ஏதேனும் மாற்றங்கள் ஏற்பட்டால் - விளக்கப்படத்தை மீண்டும் உருட்டுமாறு ஹெல்மிடம் கேட்கிறது.

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

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

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

பல தொகுதிகள் இருக்கலாம், அவற்றில் உலகளாவிய கொக்கிகள், உலகளாவிய மதிப்புகள் கடை மற்றும் இந்த உலகளாவிய அங்காடியைக் கண்காணிக்கும் ஒரு கூறு ஆகியவற்றைச் சேர்க்கிறோம்.

இப்போது, ​​குபெர்னெட்டஸில் ஏதாவது நடந்தால், உலகளாவிய ஹூக்கைப் பயன்படுத்தி அதற்கு எதிர்வினையாற்றலாம் மற்றும் குளோபல் ஸ்டோரில் ஏதாவது மாற்றலாம். இந்த மாற்றம் கவனிக்கப்பட்டு, கிளஸ்டரில் உள்ள அனைத்து மாட்யூல்களும் உருட்டப்படும்:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

இந்த திட்டம் மேலே கூறப்பட்ட துணை நிரல்களை நிறுவுவதற்கான அனைத்து தேவைகளையும் பூர்த்தி செய்கிறது:

  • வார்ப்புரு மற்றும் அறிவிப்புக்கு ஹெல்ம் பொறுப்பு.
  • உலகளாவிய ஹூக்கைப் பயன்படுத்தி தானியங்கு புதுப்பித்தலின் சிக்கல் தீர்க்கப்பட்டது, இது ஒரு அட்டவணையில் பதிவேட்டிற்குச் சென்று, அங்கு ஒரு புதிய கணினி படத்தைக் கண்டால், அதை உருட்டுகிறது (அதாவது "தானே").
  • கிளஸ்டரில் உள்ள சேமிப்பு அமைப்புகளைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது கட்டமைப்பு வரைபடம், இது சேமிப்பகங்களுக்கான முதன்மைத் தரவைக் கொண்டுள்ளது (தொடக்கத்தில் அவை சேமிப்பகங்களில் ஏற்றப்படும்).
  • கடவுச்சொல் உருவாக்கம், கண்டுபிடிப்பு மற்றும் தொடர்ச்சியான கண்டுபிடிப்பு ஆகியவற்றில் உள்ள சிக்கல்கள் கொக்கிகளைப் பயன்படுத்தி தீர்க்கப்பட்டன.
  • குறிச்சொற்களால் ஸ்டேஜிங் அடையப்படுகிறது, இது பெட்டிக்கு வெளியே டோக்கர் ஆதரிக்கிறது.
  • அளவீடுகளைப் பயன்படுத்தி முடிவு கண்காணிக்கப்படுகிறது, இதன் மூலம் நாம் நிலையைப் புரிந்துகொள்ள முடியும்.

இந்த முழு அமைப்பும் கோவில் ஒற்றை பைனரி வடிவத்தில் செயல்படுத்தப்படுகிறது, இது addon-operator என்று அழைக்கப்படுகிறது. இது வரைபடத்தை எளிதாக்குகிறது:

குபெர்னெட்ஸை விரிவுபடுத்துதல் மற்றும் நிரப்புதல் (மதிப்பாய்வு மற்றும் வீடியோ அறிக்கை)

இந்த வரைபடத்தில் உள்ள முக்கிய கூறு தொகுதிகளின் தொகுப்பாகும் (கீழே சாம்பல் நிறத்தில் சிறப்பிக்கப்பட்டுள்ளது). இப்போது நாம் ஒரு சிறிய முயற்சியுடன் தேவையான ஆட்-ஆனுக்கு ஒரு தொகுதியை எழுதலாம் மற்றும் ஒவ்வொரு கிளஸ்டரிலும் அது நிறுவப்பட்டு, புதுப்பிக்கப்பட்டு, கிளஸ்டரில் தேவைப்படும் நிகழ்வுகளுக்கு பதிலளிக்கும்.

"Flant" பயன்படுத்துகிறது addon-operator 70+ குபெர்னெட்ஸ் கிளஸ்டர்களில். தற்போதைய நிலை - ஆல்பா பதிப்பு. இப்போது பீட்டாவை வெளியிடுவதற்கான ஆவணங்களை நாங்கள் தயார் செய்கிறோம், ஆனால் தற்போது களஞ்சியத்தில் உள்ளோம் உதாரணங்கள் கிடைக்கும், அதன் அடிப்படையில் நீங்கள் உங்கள் சொந்த addon ஐ உருவாக்கலாம்.

addon-operatorக்கான தொகுதிகளை நான் எங்கே பெறுவது? எங்கள் நூலகத்தை வெளியிடுவது எங்களுக்கு அடுத்த கட்டமாகும்; கோடையில் இதைச் செய்ய திட்டமிட்டுள்ளோம்.

வீடியோக்கள் மற்றும் ஸ்லைடுகள்

செயல்திறன் வீடியோ (~50 நிமிடங்கள்):

அறிக்கையின் விளக்கக்காட்சி:

சோசலிஸ்ட் கட்சி

எங்கள் வலைப்பதிவில் உள்ள மற்ற அறிக்கைகள்:

பின்வரும் வெளியீடுகளிலும் நீங்கள் ஆர்வமாக இருக்கலாம்:

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

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