Hacker News

பில்ட்கிட்: கிட்டத்தட்ட எதையும் உருவாக்கக்கூடிய டாக்கரின் மறைக்கப்பட்ட ரத்தினம்

கருத்துகள்

2 min read Via tuananh.net

Mewayz Team

Editorial Team

Hacker News

BuildKit: கிட்டத்தட்ட எதையும் உருவாக்கக்கூடிய டாக்கரின் மறைக்கப்பட்ட ரத்தினம்

பெரும்பாலான டெவலப்பர்கள் டோக்கரை கன்டெய்னர் இயக்க நேரமாக அறிந்திருக்கிறார்கள், இது மென்பொருள் அனுப்பப்படும் விதத்தை மாற்றியது. ஒவ்வொரு நவீன டோக்கர் கட்டமைப்பின் மேற்பரப்பிற்கு அடியிலும் அமைதியாக ஒலிக்கும் எஞ்சினைப் பற்றி வெகு சிலருக்குத் தெரியும் - பில்ட்கிட், அடுத்த தலைமுறை உருவாக்க அமைப்பு, இது பதிப்பு 18.09 முதல் டோக்கருடன் அனுப்பப்பட்டு டோக்கர் 23.0 இல் இயல்புநிலை பின்தளமாக மாறியது. பொறியாளர்கள் Kubernetes கட்டமைப்புகள் மற்றும் மைக்ரோ சர்வீஸ் முறைகள் பற்றி முடிவில்லாமல் வாதிடுகின்றனர், BuildKit DevOps சுற்றுச்சூழல் அமைப்பில் மிகவும் சக்திவாய்ந்த, நெகிழ்வான உருவாக்க அமைப்புகளில் ஒன்றாக படிப்படியாக உருவாகி வருகிறது. நீங்கள் அதை ஒரு வேகமான docker build என்று கருதினால், நீங்கள் மகத்தான திறனை மேசையில் விட்டுவிடுகிறீர்கள். உயர்-செயல்திறன் கொண்ட CI/CD பைப்லைன்களை இயக்கும் நிறுவனங்கள், BuildKit உண்மையில் என்ன வழங்குகிறது என்பதைப் புரிந்துகொள்வதன் மூலம் உருவாக்க நேரத்தை 50-70% வரை குறைத்துள்ளன - இது ஆரம்பம்தான்.

கிளாசிக் பில்டரிலிருந்து பில்ட்கிட்டை அடிப்படையில் வேறுபடுத்துவது எது

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

இந்த கட்டிடக்கலை மாற்றம் வேகத்திற்கு அப்பாற்பட்ட நடைமுறை விளைவுகளைக் கொண்டுள்ளது. பல-நிலை Dockerfile ஒரு கட்டத்தில் Go பைனரியை தொகுத்து, மற்றொரு கட்டத்தில் Node.js சார்புகளை பதிவிறக்கம் செய்து, மூன்றில் ஒரு தயாரிப்பு படத்தை அசெம்பிள் செய்யும் போது, ​​BuildKit முதல் இரண்டு நிலைகளை ஒரே நேரத்தில் இயக்க முடியும். ஒரு சக்திவாய்ந்த CI ரன்னர் மீது முன்பு நான்கு நிமிடங்கள் எடுத்த ஒரு உருவாக்கம் இப்போது தொண்ணூறு வினாடிகளுக்குள் முடிவடைகிறது. ஸ்ட்ரைப், ஷாப்பிஃபை மற்றும் பிற உயர்-அளவிலான பொறியியல் குழுக்களின் மதிப்பெண்கள் தங்கள் உள் கருவிகளின் பின்னோக்கிகளில் இதே போன்ற ஆதாயங்களை ஆவணப்படுத்தியுள்ளன. DAG மாதிரியானது, BuildKit மிகவும் துல்லியமான உருவாக்க மெட்டாடேட்டாவை உருவாக்க முடியும் என்பதும் பொருள் — ஆதாரச் சான்றளிப்புகள் மற்றும் சப்ளை செயின் பாதுகாப்பிற்கு மிகவும் முக்கியத்துவம் வாய்ந்த மென்பொருள் பில் (SBOM) உருவாக்கம் போன்ற அம்சங்களுக்கான அடித்தளமாகும்.

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

மல்டி-பிளாட்ஃபார்ம் உருவாக்கங்கள்: ஒரு கட்டளை, ஒவ்வொரு கட்டிடக்கலை

BuildKit இன் --பிளாட்ஃபார்ம் கொடி மற்றும் QEMU ஒருங்கிணைப்பு ஒரு காலத்தில் வலிமிகுந்த பல அமைப்பு ஒருங்கிணைப்பு பிரச்சனையாக இருந்ததை ஒரே கட்டளையாக மாற்றுகிறது. docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 .ஐ இயக்குவது, ஒரு ஒற்றை உருவாக்க அழைப்பிலிருந்து இணையாக மூன்று தயாரிப்பு-தயாரான படங்களை உருவாக்குகிறது. தொழில்துறை ARM-ஐ நோக்கி நகர்வதால் இந்தத் திறன் முக்கியமானதாக மாறியுள்ளது — AWS Graviton3 நிகழ்வுகள் வலை சேவை மற்றும் தரவு செயலாக்கம் போன்ற பணிச்சுமைகளில் 40% சிறந்த விலை-செயல்திறனை வழங்குகின்றன, மேலும் Apple Silicon ARM ஐ மில்லியன் கணக்கான பொறியாளர்களுக்கு இயல்புநிலை மேம்பாட்டு இயந்திரமாக மாற்றியுள்ளது.

BuildKit இன் மல்டி-பிளாட்ஃபார்ம் ஆதரவு முதிர்ச்சியடைவதற்கு முன்பு, வெவ்வேறு கட்டமைப்புகளுக்கு தனித்தனியான பைப்லைன்களை பராமரிப்பது உண்மையான செலவு மையமாக இருந்தது. குழுக்கள் பல டாக்கர்ஃபைல்களைப் பராமரித்து, வித்தியாசமாக-கட்டமைக்கப்பட்ட ரன்னர்களில் தனித்தனி CI பைப்லைன்களை இயக்கியது அல்லது x86 படங்களை எல்லா இடங்களிலும் அனுப்பியது மற்றும் ARM உள்கட்டமைப்பில் செயல்திறன் அபராதம் செலுத்தியது. BuildKit மூலம், உங்கள் கட்டமைப்பை ஒருமுறை வரையறுத்து, கட்டமைப்பு-குறிப்பிட்ட தொகுப்பை வெளிப்படையாகக் கையாள கணினியை அனுமதிக்கவும். குறுக்கு-தொகுப்பு தேவைப்படும் ரஸ்ட் திட்டங்கள், CGO சார்புகள் கொண்ட Go ப்ராஜெக்டுகள், C நீட்டிப்புகளுடன் கூடிய பைதான் தொகுப்புகள் — BuildKit ஒவ்வொரு இலக்கு தளத்தின் விவரங்களையும் நீங்கள் புரிந்து கொள்ளத் தேவையில்லாமல் எமுலேஷன் லேயரைக் கையாளுகிறது.

இங்கே நடைமுறை வணிக மதிப்பு அளவிடக்கூடியது. AWS Graviton நிகழ்வுகளில் 200 கன்டெய்னர்களை ஒரு vCPU-மணிநேரத்திற்கு $0.04 மற்றும் vCPU-மணி நேரத்திற்கு $0.056 க்கு சமமான x86 நிகழ்வை இயக்கும் குழு, 100 vCPU-களுக்கு ஆண்டுக்கு $11,520 சேமிக்கிறது - முற்றிலும் சரியான கட்டமைப்பைத் தேர்ந்தெடுப்பதன் மூலம். மறு-பொறியியல் முயற்சியின்றி அந்தத் தேர்வை அணுகக்கூடியதாக மாற்றுவது, உடனடியாகத் தானே செலுத்தும் உள்கட்டமைப்பு மேம்படுத்துதலாகும்.

பட அடுக்குகளில் கசியாமல் ரகசிய மேலாண்மை

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

BuildKit இன் --secret கொடியானது முக்கியமான தரவை உருவாக்க சூழலில் ஒரு தற்காலிக கோப்பு முறைமை பாதையாக ஏற்றுகிறது, இது குறிப்பிட்ட RUN அறிவுறுத்தலின் காலத்திற்கு மட்டுமே இருக்கும் மற்றும் எந்த பட அடுக்கையும் தொடாது. RUN --mount=type=secret,id=npmrc cat /run/secrets/npmrc > ~/.npmrc && npm install போன்ற Dockerfile அறிவுறுத்தலானது, தனிப்பட்ட npm நற்சான்றிதழ்களை உருவாக்க செயல்முறைக்கு அணுகலை வழங்குகிறது. PyPI நற்சான்றிதழ்கள், மேவன் அமைப்புகள், தனிப்பட்ட Git களஞ்சியங்களுக்கான SSH விசைகள் மற்றும் உங்கள் உருவாக்கச் செயல்முறைக்குத் தேவைப்படும் வேறு எந்த முக்கியப் பொருட்களுக்கும் இதே மாதிரி வேலை செய்யும்.

ஒழுங்குபடுத்தப்பட்ட தொழில்களைத் தொடும் மென்பொருளை உருவாக்கும் குழுக்களுக்கு - ஹெல்த்கேர் பிளாட்பார்ம்கள், ஃபின்டெக் தயாரிப்புகள், மனிதவள மென்பொருள் - "நற்சான்றிதழ்கள் படத்தில் இருக்கலாம்" மற்றும் "நற்சான்றிதழ்கள் படத்தில் இருக்க முடியாது" என்பதற்கும் இடையே உள்ள வித்தியாசம், பாதுகாப்பு தணிக்கையில் தேர்ச்சி பெறுவதற்கும் கண்டுபிடிப்புகளை சரிசெய்வதற்கு மூன்று வாரங்கள் செலவிடுவதற்கும் உள்ள வித்தியாசமாகும். Mewayz போன்ற தளங்கள், ஊதியம், HR மற்றும் விலைப்பட்டியல் போன்ற தொழில்களில் 138,000 க்கும் மேற்பட்ட பயனர்களுக்கு வணிகச் செயல்பாடுகளை வழங்குகின்றன, வாடிக்கையாளர்கள் தங்கள் முக்கியமான நிதி மற்றும் பணியாளர்கள் தரவுகளில் நம்பிக்கையைப் பேணுவதற்கு, அவர்களின் உருவாக்கம் மற்றும் வரிசைப்படுத்தல் குழாய்களில் இதுபோன்ற நிரூபிக்கக்கூடிய பாதுகாப்பு நிலையைச் சார்ந்துள்ளது.

Cache Exports: CI பைப்லைன்களை உண்மையில் வேகமாக உருவாக்குதல்

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

BuildKit இன் கேச் ஏற்றுமதி அம்சம், ஏற்றுமதி செய்யக்கூடிய கேச் மேனிஃபெஸ்டுகள் மூலம் இதை தீர்க்கிறது. --cache-to type=registry,ref=myregistry/myapp:cache மற்றும் --cache-from type=registry,ref=myregistry/myapp:cache ஆகியவற்றைப் பயன்படுத்தி, BuildKit ஒரு விரிவான கேச் ஸ்னாப்ஷாட்டை ஒவ்வொரு பதிவின் தொடக்கத்திலும் இழுத்து, அடுத்த கட்டத்திற்கு இழுக்கிறது. கேச் உள்ளடக்கம்-குறிப்பிடப்பட்டுள்ளது, எனவே உண்மையாக மாற்றப்பட்ட அடுக்குகள் மட்டுமே மீண்டும் பெறப்படும். GitHub Actions, GitLab CI மற்றும் CircleCI ஆகியவற்றில் இந்த முறையைப் பயன்படுத்தும் குழுக்கள், அடுத்தடுத்த ரன்களில் பைப்லைன் நேரத்தை பதினைந்து நிமிடங்களிலிருந்து மூன்றிற்குள் குறைக்கின்றன. மேம்பட்ட டோக்கர் உருவாக்கப் பணிப்பாய்வுகள் குறித்த கிட்ஹப்பின் சொந்த ஆவணங்கள் இந்தக் காரணத்திற்காகவே இந்த முறையைப் பெரிதும் பரிந்துரைக்கின்றன.

வேகமான உருவாக்கம், நீங்கள் மீண்டும் இயக்க வேண்டியதில்லை. BuildKit இன் அடுக்கு, உள்ளடக்கம்-முகவரியிடப்பட்ட தற்காலிக சேமிப்பு அமைப்பு உருவாக்கங்களை விரைவுபடுத்துவதில்லை - இது ஒரு "கட்டமைப்பின்" முழு கருத்தையும் சிறந்ததாக்குகிறது, மீண்டும் மீண்டும் தொகுக்கப்படுவதை சரியாக மாற்றியமைக்கும் வித்தியாசமாக மாற்றுகிறது.

கேச் ஏற்றுமதிகளும் கிளை அடிப்படையிலான மேம்பாட்டு பணிப்பாய்வுகளுடன் சுத்தமாக ஒருங்கிணைக்கப்படுகின்றன. கிளைக் கேச் இல்லாதபோது, ​​உங்கள் CI பைப்லைனை கிளை-குறிப்பிட்ட தற்காலிக சேமிப்பிலிருந்து பிரதான கிளை தற்காலிகச் சேமிப்பிற்குத் திரும்பும்படி நீங்கள் கட்டமைக்கலாம், அதாவது புதிய கிளைகள் உங்கள் முக்கிய மேம்பாட்டு வரியால் திரட்டப்பட்ட சூடான தற்காலிக சேமிப்பிலிருந்து உடனடியாக பயனடைகின்றன. பொறியாளர்கள் குளிர் தொடக்க பெனால்டி மூலம் காத்திருப்பதற்குப் பதிலாக, புதிய கிளைக்கான முதல் உறுதிப்பாட்டிலிருந்து விரைவான கருத்தைப் பெறுகிறார்கள்.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

BuildKit Frontends: Dockerfilesக்கு அப்பால் கட்டிடம்

ஒருவேளை BuildKit இன் மிகக் குறைவாக அறியப்பட்ட திறன் என்னவெனில், Dockerfiles ஒரு சாத்தியமான உள்ளீட்டு வடிவமாகும் - அது மட்டும் அல்ல. BuildKit ஆனது சொருகக்கூடிய முன்பகுதி கட்டமைப்பைக் கொண்டுள்ளது, இது முற்றிலும் தனிப்பயன் உருவாக்க வரையறை மொழிகள் மற்றும் வடிவங்களை அனுமதிக்கிறது. உங்கள் உருவாக்கக் கோப்பின் மேற்புறத்தில் உள்ள # syntax= கட்டளையால் முன்பகுதி குறிப்பிடப்படுகிறது, இது BuildKit ஐ ஒரு குறிப்பிட்ட முன்பக்க படத்தை இழுத்து, மீதமுள்ள கோப்பை அலசவும் இயக்கவும் பயன்படுத்தச் சொல்கிறது.

இந்த கட்டிடக்கலை பல கட்டாய திட்டங்களை செயல்படுத்தியுள்ளது. Buildpacks ஒருங்கிணைப்பு, BuildKit ஐ எந்த Dockerfile இல்லாமலும் பயன்பாட்டு மூலக் குறியீட்டிலிருந்து கொள்கலன் படங்களை உருவாக்க அனுமதிக்கிறது - இது மொழியைக் கண்டறிந்து, பொருத்தமான அடிப்படைப் படங்களைத் தேர்ந்தெடுத்து, உற்பத்திக்குத் தயாராக இருக்கும் கொள்கலனைத் தானாகச் சேகரிக்கிறது. பில்ட்கிட்டின் உள் எல்எல்பி (லோ-லெவல் பில்ட்) பிரதிநிதித்துவத்துடன் தொகுக்கப்படும் டொமைன்-குறிப்பிட்ட மொழிகளில் உருவாக்கங்களை விவரிக்க HPC மற்றும் அறிவியல் கணினி சமூகங்கள் தனிப்பயன் முன்முனைகளைப் பயன்படுத்துகின்றன. docker/dockerfile:labs சின்டாக்ஸ் ஃப்ரண்ட்எண்ட் ஹெர்டோக் சப்போர்ட், ஒரு அறிவுறுத்தலுக்கு --நெட்வொர்க் கட்டுப்பாடு மற்றும் நிலையான Dockerfile தொடரியலில் இறங்கும் முன் மேம்படுத்தப்பட்ட கேச் குறிப்புகள் போன்ற அம்சங்களுடன் சோதனை செய்கிறது.

உங்கள் சொந்த முன்பகுதியை வரையறுக்கும் திறன் என்பது, வழக்கத்திற்கு மாறான உருவாக்கத் தேவைகளைக் கொண்ட நிறுவனங்கள், "அனைத்தையும் டோக்கர்ஃபைல் தொடரியலில் ஷூஹார்ன்" மற்றும் "கண்டெய்னர்களை முழுவதுமாக கைவிடுதல்" ஆகியவற்றிற்கு இடையே தேர்வு செய்ய வேண்டியதில்லை. FPGA ஃபார்ம்வேர், உட்பொதிக்கப்பட்ட அமைப்புகள் படங்கள் அல்லது பிரத்யேக ML மாடல் கண்டெய்னர்களை உருவாக்கும் குழு, கன்டெய்னர்கள் இயங்கும் எல்லா இடங்களிலும் நிலையான OCI-இணக்கமான கொள்கலன் படங்களை உருவாக்கும் அதே வேளையில், தங்கள் டொமைனுக்கு அர்த்தமுள்ள வகையில் அவற்றின் உருவாக்கத்தை விவரிக்க முடியும். இந்த நீட்டிப்பு என்பது அவற்றின் உள்ளீட்டு வடிவமைப்பை நிலையானதாகக் கருதும் உருவாக்க அமைப்புகளை விட ஒரு உண்மையான கட்டடக்கலை நன்மையாகும்.

உதாரணம் மற்றும் SBOM: பிந்தைய சோலார் விண்ட்ஸ் உலகத்திற்கான கட்டிடம்

2020 இல் SolarWinds மீறல் மற்றும் 2021 இல் Log4Shell பாதிப்பிற்குப் பிறகு மென்பொருள் விநியோகச் சங்கிலி பாதுகாப்பு கோட்பாட்டுக் கவலையிலிருந்து போர்டு-நிலை முன்னுரிமைக்கு மாற்றப்பட்டது. மே 2021 இல் வழங்கப்பட்ட சாஃப்ட்வேர் பில்டர்களுக்கான சாஃப்ட்வேர் பில்டர்களுக்கான இணையப் பாதுகாப்பு குறித்த அமெரிக்க அரசாங்கத்தின் நிர்வாக ஆணை 14028. BuildKit இன் ஆதாரச் சான்றுகள் மற்றும் SBOM தலைமுறை அம்சங்கள் ஆகியவை இந்த ஒழுங்குமுறை மற்றும் பாதுகாப்பு நிலப்பரப்புக்கு நேரடியான பிரதிபலிப்பாகும்.

--provenance=true மற்றும் --sbom=true கொடிகளுடன், BuildKit க்ரிப்டோகிராஃபிக் கையொப்பமிடப்பட்ட சான்றொப்பங்களை உருவாக்குகிறது, இது ஒரு கண்டெய்னர் படத்திற்குச் சென்றதை சரியாக விவரிக்கிறது - எந்த அடிப்படை படங்கள் பயன்படுத்தப்பட்டன, எந்த டாக்கர்ஃபைல் வழிமுறைகள் செயல்படுத்தப்பட்டன, எந்த மூலக் கோப்புகள் உள்ளன, எந்தெந்த மூலக் கோப்புகள் உள்ளன. இந்தச் சான்றொப்பங்கள் SLSA (மென்பொருள் கலைப்பொருட்களுக்கான சப்ளை-செயின் நிலைகள்) கட்டமைப்பையும் முழுவதுமாக சான்றளிக்கும் வடிவமைப்பையும் பின்பற்றுகின்றன, சிக்ஸ்டோர்ஸ் Cosign மற்றும் OPA (Open Policy Agent) போன்ற பாலிசி எஞ்சின்களால் இயந்திர-சரிபார்க்கக்கூடியதாக ஆக்குகிறது.

இது செயல்படுத்தும் நடைமுறை பணிப்பாய்வு இதுபோல் தெரிகிறது:

  1. டெவலப்பர் குறியீட்டை அழுத்துகிறார்; CI பைப்லைன் ஆதாரம் இயக்கப்பட்ட BuildKit உருவாக்கத்தை தூண்டுகிறது.
  2. BuildKit அனைத்து கூறுகளையும் அவற்றின் பதிப்புகளையும் பட்டியலிட்டு கையொப்பமிடப்பட்ட SBOM ஐ உருவாக்குகிறது.
  3. பட மேனிஃபெஸ்டுடன் SBOM கண்டெய்னர் பதிவேட்டில் வெளியிடப்பட்டது.
  4. குபெர்னெட்ஸ் கிளஸ்டரில் உள்ள சேர்க்கை கட்டுப்பாட்டாளர்கள் வரிசைப்படுத்தலை அனுமதிக்கும் முன் ஆதாரத்தை சரிபார்க்கிறார்கள்.
  5. புதிய CVEகள் வெளிப்படுத்தப்படும் போது பாதிக்கப்பட்ட படங்களை அடையாளம் காண, பாதிப்பு ஸ்கேனர்கள் SBOM ஐ வினவுகின்றன.

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

தொடங்குதல்: இயல்புநிலை உருவாக்கங்கள் முதல் மேம்பட்ட பைப்லைன்கள் வரை

நீங்கள் சமீபத்திய பதிப்பைப் பயன்படுத்தினால் - Docker 23.0 ஐப் பயன்படுத்தினால், BuildKit ஏற்கனவே உங்கள் டோக்கர் சூழலில் இயங்குகிறது. பெரும்பாலான அணிகளுக்கான முதல் நடைமுறை படியானது Docker Buildx செருகுநிரலை இயக்குவதாகும், இது docker buildx துணைக் கட்டளை மூலம் BuildKit இன் முழு அம்சத்தையும் வெளிப்படுத்துகிறது. docker buildx create --use ஐ இயக்குவது இயல்பு இயக்கியை விட அதிக திறன் கொண்ட BuildKit பில்டர் நிகழ்வை அமைக்கிறது. அங்கிருந்து, அனைத்தையும் ஒரே நேரத்தில் ஏற்றுக்கொள்ள முயற்சிப்பதை விட மேம்பட்ட அம்சங்களை ஏற்றுக்கொள்வது அர்த்தமுள்ளதாக இருக்கிறது.

தற்போது அடிப்படை docker build அழைப்பிதழ்களைச் செய்யும் ஒரு குழுவிற்கான நியாயமான தத்தெடுப்பு பாதையானது, முதலில் CIக்கு கேச் ஏற்றுமதிகளைச் சேர்ப்பது போல் தெரிகிறது - இது குறைந்தபட்ச உள்ளமைவு மாற்றத்துடன் உடனடி, அளவிடக்கூடிய வேக மேம்பாடுகளை வழங்குகிறது. குழு ARM உள்கட்டமைப்பைக் குறிவைக்கத் தொடங்கும் போது பல தள உருவாக்கங்கள் மதிப்புமிக்கதாக மாறும். தனிப்பட்ட தொகுப்பு பதிவுகள் அல்லது SSH விசைகள் உருவாக்க சூழலில் தோன்றும் எந்த நேரத்திலும் இரகசிய மவுண்டிங் ஏற்றுக்கொள்ளத்தக்கது. இணக்கத் தேவைகள் அல்லது நிறுவன வாடிக்கையாளர் கோரிக்கைகள் விநியோகச் சங்கிலி ஆவணங்களை அவசியமாக்கும்போது ஆதாரச் சான்றளிப்புகளை இயக்குவது அர்த்தமுள்ளதாக இருக்கும்.

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

அடிக்கடி கேட்கப்படும் கேள்விகள்

BuildKit என்றால் என்ன, கிளாசிக் டோக்கர் பில்ட் சிஸ்டத்தில் இருந்து இது எவ்வாறு வேறுபடுகிறது?

BuildKit என்பது டோக்கரின் அடுத்த தலைமுறை பில்ட் எஞ்சின் ஆகும், இது டோக்கர் 18.09 இல் அறிமுகப்படுத்தப்பட்டது மற்றும் டோக்கர் 23.0 இல் இயல்புநிலையை உருவாக்கியது. கிளாசிக் பில்டரைப் போலல்லாமல், BuildKit இணையான அடுக்கு செயலாக்கம், மேம்பட்ட கேச்சிங் உத்திகள், ரகசியங்கள் மவுண்டிங் மற்றும் கிராஸ்-பிளாட்ஃபார்ம் உருவாக்கங்களை ஆதரிக்கிறது. இது உருவாக்க செயல்முறையை ஒரு இயக்கப்பட்ட அசைக்ளிக் வரைபடமாக (DAG) கருதுகிறது, இது சிக்கலான, பல-நிலை டாக்கர்ஃபைல்களுக்கான சிறந்த சார்புத் தீர்மானம் மற்றும் வியத்தகு வேகமான உருவாக்க நேரங்களை செயல்படுத்துகிறது.

Docker உடன் BuildKit ஐப் பயன்படுத்தத் தொடங்க, நான் கூடுதலாக எதையும் நிறுவ வேண்டுமா?

நீங்கள் Docker 23.0 அல்லது அதற்குப் பிறகு இயங்கினால் கூடுதல் நிறுவல் தேவையில்லை - BuildKit இயல்பாகவே இயக்கப்படும். பழைய பதிப்புகளில், உங்கள் உருவாக்க கட்டளைகளை இயக்கும் முன் சூழல் மாறி DOCKER_BUILDKIT=1 அமைப்பதன் மூலம் அதைச் செயல்படுத்தலாம். ரிமோட் பில்ட் கேச்கள் அல்லது மல்டி-பிளாட்ஃபார்ம் பில்ட்கள் போன்ற மேம்பட்ட பயன்பாட்டு நிகழ்வுகளுக்கு, நீங்கள் docker buildx create ஐப் பயன்படுத்தி பிரத்யேக Buildx பில்டர் நிகழ்வை உள்ளமைக்க விரும்பலாம்.

நிலையான கொள்கலன் படங்களைத் தாண்டி கலைப்பொருட்களை உருவாக்க BuildKit பயன்படுத்த முடியுமா?

ஆம், இது BuildKit இன் மிகவும் குறைவாக மதிப்பிடப்பட்ட திறன்களில் ஒன்றாகும். தனிப்பயன் முன்முனைகள் மற்றும் --அவுட்புட் கொடியைப் பயன்படுத்தி, BuildKit மூல பைனரிகள், டார்பால்கள், நிலையான வலைத்தளங்கள் மற்றும் பிற தன்னிச்சையான கோப்பு கலைப்பொருட்களை உருவாக்க முடியும் - OCI படங்கள் மட்டுமல்ல. இது பாலிகிளாட் மோனோரெபோஸ் மற்றும் சிக்கலான CI பைப்லைன்களில் இயற்கையாகப் பொருந்தக்கூடிய ஒரு பொது-நோக்க உருவாக்க இயந்திரமாக மாற்றுகிறது, அங்கு வெவ்வேறு அணிகளுக்கு ஒரு ஒருங்கிணைந்த கருவித்தொகுப்பிலிருந்து வெவ்வேறு வெளியீட்டு வடிவங்கள் தேவைப்படுகின்றன.

Mwayz போன்ற கருவிகளுடன் ஒரு பரந்த DevOps இயங்குதளத்தில் BuildKit எவ்வாறு பொருந்துகிறது?

BuildKit குறைந்த-நிலை உருவாக்க லேயரைக் கையாளுகிறது, ஆனால் நவீன மேம்பாட்டுக் குழுக்கள் வணிகப் பணிப்பாய்வு, கிளையன்ட் டெலிவரி மற்றும் செயல்பாட்டு செயல்முறைகளையும் நிர்வகிக்க வேண்டும். Mewayz போன்ற இயங்குதளங்கள் — $19/mo இல் தொடங்கும் 207-தொகுதி வணிக OS — மென்பொருள் வணிகங்களின் செயல்பாட்டுப் பக்கத்தை உள்ளடக்கியதன் மூலம் உள்கட்டமைப்புக் கருவியை நிறைவு செய்கிறது. Mewayz போன்ற ஆல்-இன்-ஒன் பிளாட்ஃபார்ம் மூலம் BuildKit மூலம் இயக்கப்படும் திறமையான கட்டுமான பைப்லைன்களை இணைப்பது, குறியீடு கலைப்பொருள் முதல் வாடிக்கையாளர் விநியோகம் வரை முழுமையான அடுக்கை அணிகளுக்கு வழங்குகிறது.