Kubernetes க்கு அனுப்புவதற்கான முதல் படி உங்கள் விண்ணப்பத்தை ஒரு கொள்கலனில் வைப்பதாகும். இந்தத் தொடரில், சிறிய, பாதுகாப்பான கொள்கலன் படத்தை எவ்வாறு உருவாக்குவது என்பதைப் பார்ப்போம்.
டோக்கருக்கு நன்றி, கொள்கலன் படங்களை உருவாக்குவது எப்போதும் எளிதாக இருந்ததில்லை. ஒரு அடிப்படை படத்தைக் குறிப்பிடவும், உங்கள் மாற்றங்களைச் சேர்த்து, ஒரு கொள்கலனை உருவாக்கவும்.
தொடங்குவதற்கு இந்த நுட்பம் சிறந்தது என்றாலும், இயல்புநிலை அடிப்படை படங்களைப் பயன்படுத்துவது, பாதிப்புகள் நிறைந்த பெரிய படங்களுடன் பாதுகாப்பற்ற வேலைக்கு வழிவகுக்கும்.
கூடுதலாக, டோக்கரில் உள்ள பெரும்பாலான படங்கள் அடிப்படை படத்திற்கு டெபியன் அல்லது உபுண்டுவைப் பயன்படுத்துகின்றன, மேலும் இது சிறந்த இணக்கத்தன்மை மற்றும் எளிதான தனிப்பயனாக்கத்தை வழங்கும் போது (ஒரு டோக்கர் கோப்பு இரண்டு கோடு குறியீடுகளை மட்டுமே எடுக்கும்), அடிப்படை படங்கள் உங்கள் கொள்கலனில் நூற்றுக்கணக்கான மெகாபைட் கூடுதல் சுமையை சேர்க்கலாம். எடுத்துக்காட்டாக, Go "hello-world" பயன்பாட்டிற்கான ஒரு எளிய node.js கோப்பு சுமார் 700 மெகாபைட்கள் ஆகும், அதே சமயம் உங்கள் உண்மையான பயன்பாடு சில மெகாபைட் அளவு மட்டுமே.
எனவே இந்த கூடுதல் பணிச்சுமை அனைத்தும் டிஜிட்டல் இடத்தை வீணடிக்கும் மற்றும் பாதுகாப்பு பாதிப்புகள் மற்றும் பிழைகளுக்கு ஒரு சிறந்த மறைவிடமாகும். எனவே ஒரு கொள்கலன் படத்தின் அளவைக் குறைக்க இரண்டு வழிகளைப் பார்ப்போம்.
முதலாவது சிறிய அடிப்படைப் படங்களைப் பயன்படுத்துவது, இரண்டாவது பில்டர் பேட்டர்னைப் பயன்படுத்துவது. சிறிய அடிப்படை படங்களைப் பயன்படுத்துவது உங்கள் கொள்கலனின் அளவைக் குறைக்க எளிதான வழியாகும். பெரும்பாலும், நீங்கள் பயன்படுத்தும் மொழி அல்லது அடுக்கு இயல்புநிலை படத்தை விட மிகச் சிறிய அசல் பயன்பாட்டு படத்தை வழங்குகிறது. எங்கள் node.js கொள்கலனைப் பார்ப்போம்.
டோக்கரில் இயல்பாக, முனை:8 அடிப்படை பட அளவு 670 எம்பி, மற்றும் முனை: 8-ஆல்பைன் படத்தின் அளவு 65 எம்பி மட்டுமே, அதாவது 10 மடங்கு சிறியது. சிறிய ஆல்பைன் அடிப்படை படத்தைப் பயன்படுத்துவதன் மூலம், உங்கள் கொள்கலனின் அளவைக் கணிசமாகக் குறைப்பீர்கள். ஆல்பைன் ஒரு சிறிய மற்றும் இலகுரக லினக்ஸ் விநியோகமாகும், இது டோக்கர் பயனர்களிடையே மிகவும் பிரபலமானது, ஏனெனில் இது சிறிய கொள்கலன்களை வைத்திருக்கும் போது பல பயன்பாடுகளுடன் இணக்கமாக உள்ளது. நிலையான டோக்கர் "நோட்" படத்தைப் போலல்லாமல், "நோட்:ஆல்பைன்" நிறைய சேவைக் கோப்புகள் மற்றும் நிரல்களை நீக்கி, உங்கள் பயன்பாட்டை இயக்க போதுமானவற்றை மட்டுமே விட்டுவிடுகிறது.
சிறிய அடிப்படைப் படத்திற்குச் செல்ல, புதிய அடிப்படைப் படத்துடன் பணிபுரியத் தொடங்க Dockerfileஐப் புதுப்பிக்கவும்:
இப்போது, பழைய ஆன்பில்ட் படத்தைப் போலன்றி, உங்கள் குறியீட்டை கொள்கலனில் நகலெடுத்து, சார்புகளை நிறுவ வேண்டும். ஒரு புதிய Dockerfile இல், கொள்கலன் ஒரு முனை:ஆல்பைன் படத்துடன் தொடங்குகிறது, பின்னர் குறியீட்டிற்கான ஒரு கோப்பகத்தை உருவாக்குகிறது, NPM தொகுப்பு மேலாளரைப் பயன்படுத்தி சார்புகளை நிறுவுகிறது மற்றும் இறுதியாக server.js ஐ இயக்குகிறது.
இந்த மேம்படுத்தல் 10 மடங்கு சிறிய அளவிலான கொள்கலனை உருவாக்குகிறது. உங்கள் நிரலாக்க மொழி அல்லது அடுக்கில் அடிப்படை படக் குறைப்பு செயல்பாடு இல்லை என்றால், Alpine Linux ஐப் பயன்படுத்தவும். கொள்கலனின் உள்ளடக்கங்களை முழுமையாக நிர்வகிக்கும் திறனையும் இது வழங்கும். சிறிய அடிப்படை படங்களைப் பயன்படுத்துவது சிறிய கொள்கலன்களை விரைவாக உருவாக்க ஒரு சிறந்த வழியாகும். ஆனால் பில்டர் பேட்டர்னைப் பயன்படுத்தி இன்னும் பெரிய குறைப்பை அடைய முடியும்.
விளக்கப்பட்ட மொழிகளில், மூல குறியீடு முதலில் மொழிபெயர்ப்பாளருக்கு அனுப்பப்பட்டு பின்னர் நேரடியாக செயல்படுத்தப்படுகிறது. தொகுக்கப்பட்ட மொழிகளில், மூலக் குறியீடு முதலில் தொகுக்கப்பட்ட குறியீடாக மாற்றப்படுகிறது. இருப்பினும், தொகுப்பானது குறியீட்டை இயக்குவதற்கு உண்மையில் தேவையில்லாத கருவிகளைப் பயன்படுத்துகிறது. இறுதி கொள்கலனில் இருந்து இந்த கருவிகளை நீங்கள் முழுமையாக அகற்றலாம் என்பதே இதன் பொருள். இதற்கு பில்டர் பேட்டர்னைப் பயன்படுத்தலாம்.
குறியீடு முதல் கொள்கலனில் உருவாக்கப்பட்டு தொகுக்கப்பட்டது. தொகுக்கப்பட்ட குறியீடு பின்னர் அந்த குறியீட்டை தொகுக்க தேவையான கம்பைலர்கள் மற்றும் கருவிகள் இல்லாமல் இறுதி கொள்கலனில் தொகுக்கப்படுகிறது. இந்த செயல்முறையின் மூலம் Go பயன்பாட்டை இயக்கலாம். முதலில், ஆன்பில்ட் படத்திலிருந்து ஆல்பைன் லினக்ஸுக்கு மாறுவோம்.
புதிய Dockerfile இல், கொள்கலன் கோலாங்:ஆல்பைன் படத்துடன் தொடங்குகிறது. இது குறியீட்டுக்கான கோப்பகத்தை உருவாக்கி, அதை மூலக் குறியீட்டில் நகலெடுத்து, அந்த மூலக் குறியீட்டை உருவாக்கி, பயன்பாட்டை இயக்குகிறது. இந்தக் கண்டெய்னர் ஆன்பில்ட் கண்டெய்னரை விட மிகச் சிறியது, ஆனால் அதில் நமக்குத் தேவையில்லாத கம்பைலர் மற்றும் பிற Go கருவிகள் இன்னும் உள்ளன. எனவே தொகுக்கப்பட்ட நிரலை பிரித்தெடுத்து அதன் சொந்த கொள்கலனில் வைப்போம்.
இந்த டோக்கர் கோப்பில் விசித்திரமான ஒன்றை நீங்கள் கவனிக்கலாம்: இதில் இரண்டு FROM வரிகள் உள்ளன. முதல் 4 வரிப் பகுதியானது முந்தைய Dockerfile போலவே தோற்றமளிக்கிறது. அடுத்த பகுதியில் ஒரு புதிய படத்தைத் தொடங்க புதிய FROM லைன் உள்ளது, இதில் கோலாங்:ஆல்பைன் படத்திற்குப் பதிலாக ரா ஆல்பைனை அடிப்படைப் படமாகப் பயன்படுத்துவோம்.
Raw Alpine Linux இல் SSL சான்றிதழ்கள் எதுவும் நிறுவப்படவில்லை, இதனால் HTTPS மூலம் பெரும்பாலான API அழைப்புகள் தோல்வியடையும், எனவே சில ரூட் CA சான்றிதழ்களை நிறுவுவோம்.
இப்போது வேடிக்கையான பகுதி வருகிறது: தொகுக்கப்பட்ட குறியீட்டை முதல் கொள்கலனில் இருந்து இரண்டாவதாக நகலெடுக்க, இரண்டாவது பிரிவின் வரி 5 இல் அமைந்துள்ள COPY கட்டளையைப் பயன்படுத்தலாம். இது ஒரு பயன்பாட்டுக் கோப்பை மட்டுமே நகலெடுக்கும் மற்றும் Go பயன்பாட்டுக் கருவிகளைப் பாதிக்காது. புதிய மல்டி-ஸ்டேஜ் டோக்கர் கோப்பில் 12 மெகாபைட்கள் இருந்த அசல் கண்டெய்னர் படத்துடன் ஒப்பிடும்போது, 700 மெகாபைட் அளவு மட்டுமே உள்ள கொள்கலன் படம் இருக்கும், இது பெரிய வித்தியாசம்!
எனவே சிறிய அடிப்படை படங்கள் மற்றும் பில்டர் பேட்டர்னைப் பயன்படுத்துவது அதிக வேலை இல்லாமல் சிறிய கொள்கலன்களை உருவாக்க சிறந்த வழிகள்.
பயன்பாட்டு அடுக்கைப் பொறுத்து, படம் மற்றும் கொள்கலன் அளவைக் குறைக்க கூடுதல் வழிகள் உள்ளன, ஆனால் சிறிய கொள்கலன்கள் உண்மையில் அளவிடக்கூடிய பலனைக் கொண்டிருக்கின்றனவா? சிறிய கொள்கலன்கள் மிகவும் பயனுள்ளதாக இருக்கும் இரண்டு பகுதிகளைப் பார்ப்போம் - செயல்திறன் மற்றும் பாதுகாப்பு.
செயல்திறன் அதிகரிப்பை மதிப்பிடுவதற்கு, ஒரு கொள்கலனை உருவாக்கும் செயல்முறையின் காலத்தை கருத்தில் கொள்ளுங்கள், அதை பதிவேட்டில் (தள்ளுதல்) செருகவும், பின்னர் அதை அங்கிருந்து மீட்டெடுக்கவும் (இழுக்க). ஒரு பெரிய கொள்கலனை விட சிறிய கொள்கலன் ஒரு தனித்துவமான நன்மையைக் கொண்டிருப்பதை நீங்கள் காணலாம்.
டோக்கர் லேயர்களை கேச் செய்யும், அதனால் அடுத்தடுத்த உருவாக்கம் மிக வேகமாக இருக்கும். இருப்பினும், கன்டெய்னர்களை உருவாக்க மற்றும் சோதிக்கப் பயன்படுத்தப்படும் பல CI அமைப்புகள் அடுக்குகளை கேச் செய்யாது, எனவே குறிப்பிடத்தக்க நேர சேமிப்புகள் உள்ளன. நீங்கள் பார்க்க முடியும் என, உங்கள் இயந்திரத்தின் சக்தியைப் பொறுத்து ஒரு பெரிய கொள்கலனை உருவாக்குவதற்கான நேரம் 34 முதல் 54 வினாடிகள் ஆகும், மேலும் பில்டர் பேட்டர்னைப் பயன்படுத்தி கொள்கலனைப் பயன்படுத்தும் போது குறைக்கப்பட்டது - 23 முதல் 28 வினாடிகள் வரை. இந்த வகையான செயல்பாடுகளுக்கு, உற்பத்தித்திறன் அதிகரிப்பு 40-50% ஆக இருக்கும். எனவே உங்கள் குறியீட்டை எத்தனை முறை உருவாக்கி சோதிக்கிறீர்கள் என்பதைப் பற்றி சிந்தியுங்கள்.
கொள்கலன் கட்டமைக்கப்பட்ட பிறகு, நீங்கள் அதன் படத்தை (புஷ் கன்டெய்னர் படத்தை) கொள்கலன் பதிவேட்டில் தள்ள வேண்டும், இதன் மூலம் நீங்கள் அதை உங்கள் குபெர்னெட்ஸ் கிளஸ்டரில் பயன்படுத்தலாம். Google Container Registry ஐப் பயன்படுத்த பரிந்துரைக்கிறேன்.
Google Container Registry (GCR) மூலம், நீங்கள் மூல சேமிப்பு மற்றும் நெட்வொர்க்கிங் ஆகியவற்றிற்கு மட்டுமே பணம் செலுத்துகிறீர்கள், மேலும் கூடுதல் கொள்கலன் நிர்வாகக் கட்டணங்கள் எதுவும் இல்லை. இது தனிப்பட்டது, பாதுகாப்பானது மற்றும் மிக விரைவானது. இழுக்கும் செயல்பாட்டை விரைவுபடுத்த GCR பல தந்திரங்களைப் பயன்படுத்துகிறது. நீங்கள் பார்க்கிறபடி, go:onbuild ஐப் பயன்படுத்தி ஒரு Docker Container Image கன்டெய்னரைச் செருகுவது கணினியின் செயல்திறனைப் பொறுத்து 15 முதல் 48 வினாடிகள் வரை எடுக்கும், மேலும் சிறிய கொள்கலனுடன் அதே செயல்பாடு 14 முதல் 16 வினாடிகள் வரை ஆகும், மேலும் குறைந்த உற்பத்தி இயந்திரங்களுக்கு செயல்பாட்டு வேகத்தில் நன்மை 3 மடங்கு அதிகரிக்கிறது. பெரிய இயந்திரங்களுக்கு, நேரம் ஏறக்குறைய ஒரே மாதிரியாக இருக்கும், ஏனெனில் GCR ஆனது படங்களின் பகிரப்பட்ட தரவுத்தளத்திற்கு உலகளாவிய தற்காலிக சேமிப்பைப் பயன்படுத்துகிறது, அதாவது நீங்கள் அவற்றை ஏற்ற வேண்டிய அவசியமில்லை. குறைந்த சக்தி கொண்ட கம்ப்யூட்டரில், CPU தான் இடையூறாக இருக்கிறது, எனவே சிறிய கொள்கலன்களைப் பயன்படுத்துவதன் நன்மை இங்கே அதிகம்.
நீங்கள் GCR ஐப் பயன்படுத்துகிறீர்கள் என்றால், உங்கள் உருவாக்க அமைப்பின் ஒரு பகுதியாக Google Container Builder (GCB) ஐப் பயன்படுத்த பரிந்துரைக்கிறேன்.
நீங்கள் பார்க்க முடியும் என, அதன் பயன்பாடு ஒரு உற்பத்தி இயந்திரத்தை விட பில்ட் + புஷ் செயல்பாட்டின் கால அளவைக் குறைப்பதில் மிகச் சிறந்த முடிவுகளை அடைய உங்களை அனுமதிக்கிறது - இந்த விஷயத்தில், ஹோஸ்டுக்கு கொள்கலன்களை உருவாக்கி அனுப்பும் செயல்முறை கிட்டத்தட்ட 2 மடங்கு துரிதப்படுத்தப்படுகிறது. . கூடுதலாக, ஒவ்வொரு நாளும் 120 இலவச உருவாக்க நிமிடங்களைப் பெறுவீர்கள், இது பெரும்பாலான சந்தர்ப்பங்களில் உங்கள் கொள்கலன் கட்டிடத் தேவைகளை உள்ளடக்கியது.
அடுத்து மிக முக்கியமான செயல்திறன் அளவீடு வருகிறது - கொள்கலன்களை மீட்டெடுக்கும் அல்லது பதிவிறக்கும் வேகம். புஷ் செயல்பாட்டில் செலவழித்த நேரத்தைப் பற்றி நீங்கள் அதிகம் கவலைப்படவில்லை என்றால், இழுக்கும் செயல்முறையின் நீளம் ஒட்டுமொத்த கணினி செயல்திறனில் கடுமையான தாக்கத்தை ஏற்படுத்துகிறது. உங்களிடம் மூன்று முனைகளின் தொகுப்பு உள்ளது மற்றும் அவற்றில் ஒன்று தோல்வியுற்றது என்று வைத்துக்கொள்வோம். நீங்கள் Google Kubernetes Engine போன்ற மேலாண்மை அமைப்பைப் பயன்படுத்தினால், அது தானாகவே இறந்த முனையை புதியதாக மாற்றும். இருப்பினும், இந்த புதிய முனை முற்றிலும் காலியாக இருக்கும், மேலும் அது வேலை செய்ய உங்கள் எல்லா கொள்கலன்களையும் இழுக்க வேண்டும். இழுத்தல் செயல்பாடு நீண்ட நேரம் எடுத்தால், உங்கள் கிளஸ்டர் குறைந்த செயல்திறனில் முழு நேரமும் இயங்கும்.
இது நிகழக்கூடிய பல நிகழ்வுகள் உள்ளன: ஒரு கிளஸ்டரில் ஒரு புதிய முனையைச் சேர்ப்பது, முனைகளை மேம்படுத்துவது அல்லது வரிசைப்படுத்துவதற்கு புதிய கொள்கலனுக்கு மாறுவது. எனவே, இழுத்தல் பிரித்தெடுக்கும் நேரத்தைக் குறைப்பது ஒரு முக்கிய காரணியாகிறது. ஒரு சிறிய கொள்கலன் பெரியதை விட மிக வேகமாக பதிவிறக்குகிறது என்பது மறுக்க முடியாதது. நீங்கள் குபெர்னெட்ஸ் கிளஸ்டரில் பல கொள்கலன்களை இயக்கினால், நேர சேமிப்பு குறிப்பிடத்தக்கதாக இருக்கும்.
இந்த ஒப்பீட்டைப் பாருங்கள்: சிறிய கொள்கலன்களில் இழுக்கும் செயல்பாடு, go:onbuild ஐப் பயன்படுத்தி அதே செயல்பாட்டை விட, இயந்திரத்தின் சக்தியைப் பொறுத்து 4-9 மடங்கு குறைவான நேரத்தை எடுக்கும். பகிரப்பட்ட, சிறிய கொள்கலன் அடிப்படைப் படங்களைப் பயன்படுத்துவது, புதிய குபெர்னெட்டஸ் முனைகளை வரிசைப்படுத்தி ஆன்லைனில் வரக்கூடிய நேரத்தையும் வேகத்தையும் கணிசமாக அதிகரிக்கிறது.
பாதுகாப்பு பிரச்சினையைப் பார்ப்போம். சிறிய கொள்கலன்கள் பெரியவற்றை விட மிகவும் பாதுகாப்பானதாகக் கருதப்படுகின்றன, ஏனெனில் அவை சிறிய தாக்குதல் மேற்பரப்பைக் கொண்டுள்ளன. அது உண்மையா? Google Container Registryயின் மிகவும் பயனுள்ள அம்சங்களில் ஒன்று, பாதிப்புகள் உள்ளதா என உங்கள் கண்டெய்னர்களை தானாக ஸ்கேன் செய்யும் திறன் ஆகும். சில மாதங்களுக்கு முன்பு நான் கட்டமைக்கப்பட்ட மற்றும் மல்டிஸ்டேஜ் கொள்கலன்களை உருவாக்கினேன், அதனால் ஏதேனும் பாதிப்புகள் உள்ளதா என்று பார்ப்போம்.
விளைவு ஆச்சரியமாக இருக்கிறது: ஒரு சிறிய கொள்கலனில் 3 நடுத்தர பாதிப்புகள் மட்டுமே கண்டறியப்பட்டன, மேலும் ஒரு பெரிய கொள்கலனில் 16 முக்கியமான மற்றும் 376 பிற பாதிப்புகள் கண்டறியப்பட்டன. ஒரு பெரிய கொள்கலனில் உள்ளவற்றைப் பார்த்தால், பெரும்பாலான பாதுகாப்புச் சிக்கல்களுக்கு நமது பயன்பாட்டிற்கும் எந்தத் தொடர்பும் இல்லை, ஆனால் நாம் பயன்படுத்தாத நிரல்களுடன் தொடர்புடையது என்பதைக் காணலாம். எனவே மக்கள் ஒரு பெரிய தாக்குதல் மேற்பரப்பைப் பற்றி பேசும்போது, அதுதான் அவர்கள் அர்த்தம்.
எடுத்துக்கொள்வது தெளிவாக உள்ளது: சிறிய கொள்கலன்களை உருவாக்குங்கள், ஏனெனில் அவை உங்கள் கணினிக்கு உண்மையான செயல்திறன் மற்றும் பாதுகாப்பு நன்மைகளை வழங்குகின்றன.
சில விளம்பரங்கள் 🙂
எங்களுடன் தங்கியதற்கு நன்றி. எங்கள் கட்டுரைகளை விரும்புகிறீர்களா? மேலும் சுவாரஸ்யமான உள்ளடக்கத்தைப் பார்க்க வேண்டுமா? ஒரு ஆர்டரை வைப்பதன் மூலம் அல்லது நண்பர்களுக்கு பரிந்துரை செய்வதன் மூலம் எங்களை ஆதரிக்கவும்,
ஆம்ஸ்டர்டாமில் உள்ள Equinix Tier IV தரவு மையத்தில் Dell R730xd 2 மடங்கு மலிவானதா? இங்கே மட்டும்
ஆதாரம்: www.habr.com