Hacker News

БуилдКит: Доцкеров скривени драгуљ који може да изгради скоро све

Коментари

1 min read Via tuananh.net

Mewayz Team

Editorial Team

Hacker News
<х2>БуилдКит: Доцкеров скривени драгуљ који може да изгради скоро све <п>Већина програмера познаје Доцкер као окружење за извршавање контејнера које је променило начин на који се софтвер испоручује. Далеко мање зна о мотору који тихо бруји испод површине сваке модерне Доцкер-ове верзије — БуилдКит-а, система изградње следеће генерације који се испоручује са Доцкер-ом од верзије 18.09 и који је постао подразумевани позадински део у Доцкер-у 23.0. Док се инжењери бескрајно расправљају о Кубернетес конфигурацијама и обрасцима микросервиса, БуилдКит се стално развија у један од најмоћнијих, флексибилнијих система за изградњу у ДевОпс екосистему. Ако сте га третирали само као бржу <цоде>доцкер буилд, остављате огромне могућности на столу. Компаније које покрећу ЦИ/ЦД цевоводе велике пропусне моћи су скратиле време израде за 50–70% једноставним разумевањем шта БуилдКит заправо нуди — а то је само почетак. <х2>По чему се БуилдКит суштински разликује од класичног Буилдер-а <п>Оригинални Доцкер буилд енгине је извршавао Доцкерфиле инструкције узастопно, један по један слој, без свести о томе који посао би могао безбедно да се одвија паралелно. БуилдКит замењује тај линеарни модел извршавања усмереним ацикличним графом (ДАГ) — графом зависности који разуме који се кораци изградње ослањају једни на друге, а који не. Независне фазе се извршавају истовремено, неискоришћене фазе се у потпуности прескачу, а цела конструкција постаје декларативни опис онога што желите, а не императивна секвенца корака које морате да рецитујете у правом редоследу. <п>Ова архитектонска промена има практичне последице које превазилазе брзину. Када вишестепени Доцкерфиле компајлира Го бинарни фајл у једној фази, преузима зависности Ноде.јс у другој и саставља производну слику у трећој, БуилдКит може истовремено да покрене прве две фазе. Изградња која је раније трајала четири минута на моћном ЦИ руннеру сада се завршава за мање од деведесет секунди. Стрипе, Схопифи и бројни други врхунски инжењерски тимови су документовали сличне добитке у својим интерним ретроспективама алата. ДАГ модел такође значи да БуилдКит може да генерише веома прецизне метаподатке о изградњи — основу за функције као што су потврде о пореклу и генерисање софтверског листа материјала (СБОМ) које су од огромног значаја за безбедност ланца снабдевања. <п>Постоји и концептуална промена у томе како функционише поништавање кеша. Класични градитељ је поништио сваки слој испод било које промењене инструкције. БуилдКит прати хешове садржаја на сваком улазу, тако да промена коментара у Доцкерфиле-у не одбацује унос у кеш који представља тридесет минута компилације. Када ваш кеш за изградњу представља разлику између петоминутне и четрдесетоминутне повратне информације за ваш инжењерски тим, ова прецизност је много важнија него што се у почетку може чинити. <х2>Изградња на више платформи: једна команда, свака архитектура <п>БуилдКит-ова <цоде>--платформ ознака и КЕМУ интеграција трансформишу оно што је некада био болан проблем координације више система у једну команду. Покретање <цоде>доцкер буилдк буилд --платформ линук/амд64,линук/арм64,линук/арм/в7 . производи три слике спремне за производњу паралелно из једног позивања изградње. Ова могућност је постала критична како се индустрија помера ка АРМ-у — АВС Гравитон3 инстанце доследно испоручују 40% боље цене и перформансе на радним оптерећењима као што су веб сервисирање и обрада података, а Аппле Силицон је АРМ учинио подразумеваном машином за развој за милионе инжењера. <п>Пре него што је БуилдКит-ова подршка за више платформи сазрела, одржавање одвојених цевовода за изградњу за различите архитектуре представљало је прави центар трошкова. Тимови су или одржавали више Доцкер фајлова, покретали одвојене ЦИ цевоводе на различито дизајнираним тркачима или су једноставно слали к86 слике свуда и плаћали казну за перформансе на АРМ инфраструктури. Са БуилдКит-ом дефинишете своју верзију једном и пустите систему да транспарентно управља компилацијом специфичне за архитектуру. Руст пројекти који захтевају унакрсну компилацију, Го пројекти са ЦГО зависностима, Питхон пакети са Ц екстензијама — БуилдКит рукује слојем емулације без потребе да разумете детаље сваке циљне платформе.<п>Практична пословна вредност овде је мерљива. Тим који покреће 200 контејнера на АВС Гравитон инстанцама по цени од 0,04 УСД по вЦПУ-сату у односу на еквивалентну к86 инстанцу од 0,056 УСД по вЦПУ-сату штеди отприлике 11 520 УСД годишње на 100 вЦПУ-а – искључиво избором праве архитектуре. Учинити тај избор доступним без напора на реинжењерингу управо је врста оптимизације инфраструктуре која се одмах исплати. <х2>Тајно управљање без цурења у слојеве слике <п>Једна од најнецењенијих функција БуилдКит-а је тајни АПИ. Класични Доцкер буилдер није имао чист начин да проследи акредитиве у градњу а да ти акредитиви потенцијално не заврше у слоју слике. Програмери су радили око овога са вишестепеним израдама, <цоде>АРГ упутствима и пажљивим наручивањем — али ризик од случајног испећивања АПИ кључа или приватног ССХ кључа у испоручену слику остао је непријатно висок. Безбедносни скенери рутински проналазе чврсто кодиране акредитиве у сликама контејнера објављеним у јавним регистрима, а многа од тих цурења воде директно до неспретног руковања тајном током израде. <п>БуилдКит-ова <цоде>--сецрет заставица поставља осетљиве податке у окружење за прављење као привремену путању система датотека која постоји само током трајања специфичне <цоде>РУН инструкције којој је потребна и никада не додирује ниједан слој слике. Инструкција Доцкерфиле-а као што је <цоде>РУН --моунт=типе=сецрет,ид=нпмрц цат /рун/сецретс/нпмрц > ~/.нпмрц && нпм инсталл даје процесу израде приступ приватним нпм акредитивима без да се ти акредитиви икада појављују у коначној слици или било ком средњем слоју. Исти образац функционише за ПиПИ акредитиве, Мавен подешавања, ССХ кључеве за приватна Гит спремишта и било који други осетљиви материјал који захтева ваш процес прављења. <п>За тимове који праве софтвер који се дотиче регулисаних индустрија — платформе за здравствену заштиту, финтецх производе, софтвер за људске ресурсе — разлика између „акредитиви могу бити на слици“ и „акредитиви за које се може доказати да не могу бити на слици“ је разлика између проласка безбедносне ревизије и трошења три недеље на отклањање налаза. Платформе као што је Меваиз, које покрећу пословне операције за више од 138.000 корисника у различитим индустријама као што су обрачун зарада, људски ресурси и фактурисање, зависе од управо ове врсте доказане безбедносне позиције у својим цевоводима за изградњу и примену како би одржале поверење које ти клијенти пружају својим осетљивим финансијским и кадровским подацима. <х2>Извози из кеш меморије: Стварање брзих ЦИ цевовода <п>ЦИ цевоводи су тамо где су перформансе градње најважније и где је подразумевано искуство изградње Доцкер-а историјски било најболније. Свежи ЦИ покретачи обично почињу са празним кешовима, што значи да свако покретање цевовода поново компајлира све од нуле. За Јава услугу са стотинама Мавен зависности, Руст пројекат или Питхон апликацију са тешким изворним екстензијама, ово значи време израде које се мери у десетинама минута, а не у секундама. Пословни трошак спорог ЦИ је огроман — смањена учесталост примене, дуже петље повратних информација и инжењери који не раде чекајући да се цевовод заврше пре него што се споје и наставе даље. <п>БуилдКит-ова функција извоза кеша решава ово са извозним манифестима кеша. Користећи <цоде>--цацхе-то типе=регистри,реф=мирегистри/миапп:цацхе и <цоде>--цацхе-фром типе=регистри,реф=мирегистри/миапп:цацхе, БуилдКит гура детаљан снимак кеша у регистар након сваке градње и извлачи га на почетку следеће. Кеш је адресиран на садржај, тако да се поново преузимају само истински промењени слојеви. Тимови који користе овај образац у ГитХуб Ацтионс-у, ГитЛаб ЦИ-у и ЦирцлеЦИ-ју рутински скраћују време цевовода са петнаест минута на мање од три у наредним радњама. ГитХуб-ова сопствена документација о напредним радним токовима израде Доцкер-а снажно препоручује овај образац управо из овог разлога. <блоцккуоте> <п><стронг>Најбржа израда је она коју више никада не морате да покрећете. Слојевити систем кеширања адресираног на садржај БуилдКит-а не само да убрзава грађење – он чини цео концепт „градње“ паметнијим, претварајући поновљене компилације у инкременталну разлику онога што се тачно променило. <п>Извози кеша такође се јасно интегришу са развојним токовима заснованим на гранама. Можете да конфигуришете свој ЦИ цевовод да се врати из кеша специфичне за грану у кеш главне гране када не постоји кеш гранања, што значи да нове гране одмах имају користи од топлог кеша акумулираног у главној развојној линији. Инжењери добијају брзе повратне информације од свог првог урезивања на новој грани уместо да чекају казну хладног старта. <х2>БуилдКит Фронтендс: Изградња изван Доцкер фајлова <п>Можда је најмање позната могућност БуилдКит-а да су Доцкерфилес само један могући формат уноса - не једини. БуилдКит има приступну архитектуру која се може прикључити и која омогућава потпуно прилагођене језике и формате дефиниције изградње. Фронтенд је одређен <цоде># синтак= директивом на врху ваше датотеке за прављење, која говори БуилдКит-у да повуче одређену фронтенд слику и да је користи за рашчлањивање и извршавање остатка датотеке. <п>Ова архитектура је омогућила неколико убедљивих пројеката. Интеграција Буилдпацкс-а омогућава БуилдКит-у да направи слике контејнера из изворног кода апликације без икаквог Доцкерфиле-а — детектује језик, бира одговарајуће основне слике и аутоматски саставља контејнер спреман за производњу. ХПЦ и научне рачунарске заједнице су користиле прилагођене фронтендове да описују градње на језицима специфичним за домен који се компајлирају у БуилдКит-ов интерни ЛЛБ (Лов-Левел Буилд) репрезентацију. <цоде>доцкер/доцкерфиле:лабс синтакса експериментише са функцијама као што су подршка за хередоц, <цоде>--нетворк контрола по инструкцији и побољшани савети за кеш пре него што дођу у стабилну синтакси Доцкерфиле-а. <п>Могућност да дефинишете сопствени фронтенд такође значи да организације са необичним захтевима за изградњу не морају да бирају између „убаци све у Доцкерфиле синтаксу“ и „у потпуности напусти контејнере“. Тим буилдинг ФПГА фирмвер, слике уграђених система или специјализовани контејнери за МЛ моделе могу описати своју изградњу у терминима који имају смисла за њихов домен, док и даље производе стандардне слике контејнера компатибилне са ОЦИ-јем које се примењују где год контејнери раде. Ова проширивост је права архитектонска предност у односу на системе за прављење који свој улазни формат третирају као фиксни. <х2>Порекло и СБОМ: Изградња за свет после соларних ветрова <п>Безбедност ланца набавке софтвера прешла је са теоријске бриге на приоритет на нивоу одбора након кршења СоларВиндс-а 2020. и рањивости Лог4Схелл-а 2021. Извршна наредба владе САД 14028 о сајбер безбедности, издата у мају 2021, налаже материјале за савезне уговоре о софтверу. БуилдКит-ове потврде о поријеклу и карактеристике генерисања СБОМ-а су директан одговор на ово регулаторно и безбедносно окружење. <п>Са ознакама <цоде>--провенанце=труе и <цоде>--сбом=труе, БуилдКит генерише криптографски потписане потврде које описују тачно шта је ушло у слику контејнера — које су основне слике коришћене, које су инструкције Доцкерфиле-а извршене, које су изворне датотеке биле присутне и које су спољне зависности дохваћене. Ове атестације прате СЛСА (Нивои ланца снабдевања за софтверске артефакте) оквир и ин-тото формат атестације, чинећи их машински проверљивим помоћу механизама политике као што су Сигсторе Цосигн и ОПА (Опен Полици Агент). <п>Практичан ток рада који ово омогућава изгледа овако: <ол> <ли>Програмер гура код; ЦИ цевовод покреће БуилдКит изградњу са омогућеним пореклом. <ли>БуилдКит генерише потписану СБОМ листу свих компоненти и њихових верзија. <ли>СБОМ се објављује у регистру контејнера заједно са манифестом слике. <ли>Контротори приступа у Кубернетес кластеру верифицирају порекло пре него што дозволе примену. <ли>Скенери рањивости постављају упит СБОМ-у да би идентификовали слике на које утиче када се открију нови ЦВЕ-ови. <п>Тимови који имплементирају овај комплетан цевовод могу да одговоре на откривање рањивости у сатима, а не данима, јер имају прецизну, машински читљиву мапу сваке компоненте у сваком покренутом контејнеру. За предузећа као што је Меваиз која се дубоко интегришу у оперативне токове посла клијената — вођење платног списка, управљање подацима о возном парку, обрада фактура — способност да се демонстрира ригорозни ланац снабдевања који се може ревидирати је све више предуслов за пословне разговоре о продаји, а не само лепоту за имати. <х2>Почетак: Од подразумеваних верзија до напредних цевовода<п>БуилдКит је већ покренут у вашем Доцкер окружењу ако користите најновију верзију — Доцкер 23.0 и новије омогућавају га подразумевано. Први практичан корак за већину тимова је омогућавање додатка Доцкер Буилдк, који излаже комплетан скуп функција БуилдКит-а путем подкоманде <цоде>доцкер буилдк. Покретање <цоде>доцкер буилдк цреате --усе поставља инстанцу БуилдКит буилдера са више могућности од подразумеваног драјвера. Одатле, постепено усвајање напредних функција има смисла уместо покушаја да се усвоји све одједном. <п>Разумна путања за усвајање за тим који тренутно ради основне <цоде>доцкер буилд позивања изгледа као прво додавање извоза кеша у ЦИ — ово доноси тренутна, мерљива побољшања брзине уз минималну промену конфигурације. Изградње на више платформи постају вредне када тим почне да циља на АРМ инфраструктуру. Тајно монтирање је вредно усвојити сваки пут када се регистри приватних пакета или ССХ кључеви појаве у контексту израде. Потврде о поријеклу имају смисла да се омогуће када захтјеви усклађености или захтјеви купаца предузећа захтијевају документацију ланца набавке. <п>Дубља лекција БуилдКит-а је о намерној изградњи. Било да испоручујете контејнер за микросервис, крајњу тачку за закључивање машинског учења или сложену платформу као што је Меваиз-ов пакет од 207 пословних модула, процес изградње није формалност кроз коју журите на путу до примене – то је инжењерски артефакт који одражава квалитет, безбедносни положај и оперативну зрелост свега што се испоручује. БуилдКит вам даје алате да тај артефакт учините одличним. Питање је једноставно да ли ћете одвојити време да их искористите. <х2>Честа питања <х3>Шта је БуилдКит и по чему се разликује од класичног Доцкер система изградње? <п>БуилдКит је Доцкер-ов механизам за изградњу нове генерације, представљен у Доцкер-у 18.09 и постављен као подразумевани у Доцкер-у 23.0. За разлику од класичног градитеља, БуилдКит подржава извршавање паралелног слоја, напредне стратегије кеширања, монтирање тајни и вишеплатформске градње. Процес изградње третира као усмерени ациклични граф (ДАГ), омогућавајући паметнију резолуцију зависности и драматично брже време изградње за сложене, вишестепене Доцкер фајлове. <х3>Да ли треба да инсталирам нешто додатно да бих почео да користим БуилдКит са Доцкер-ом? <п>Није потребна додатна инсталација ако користите Доцкер 23.0 или новију верзију — БуилдКит је подразумевано омогућен. На старијим верзијама, можете га активирати тако што ћете поставити променљиву окружења <цоде>ДОЦКЕР_БУИЛДКИТ=1 пре него што покренете команде за прављење. За напредне случајеве коришћења као што су кешови за удаљену градњу или грађење на више платформи, можда ћете желети да конфигуришете наменску инстанцу Буилдк буилдера користећи <цоде>доцкер буилдк цреате. <х3>Да ли се БуилдКит може користити за прављење артефаката изван стандардних слика контејнера? <п>Да, и ово је једна од најнецењенијих могућности БуилдКита. Користећи прилагођене фронтендове и ознаку <цоде>--оутпут, БуилдКит може да произведе необрађене бинарне датотеке, тарбалл-ове, статичне веб локације и друге произвољне артефакте датотека — не само ОЦИ слике. Ово га чини механизмом за изградњу опште намене који се природно уклапа у полиглот монорепос и сложене ЦИ цевоводе где су различитим тимовима потребни различити излазни формати из обједињеног ланца алата. <х3>Како се БуилдКит уклапа у ширу ДевОпс платформу поред алата као што је Меваиз? <п>БуилдКит управља слојем градње ниског нивоа, али савремени развојни тимови такође морају да управљају пословним токовима посла, испоруком клијената и оперативним процесима. Платформе као што је <а хреф="хттпс://апп.меваиз.цом">Меваиз — пословни ОС са 207 модула по цени од 19 УСД месечно — допуњују инфраструктурне алате покривајући оперативну страну софтверског пословања. Упаривање ефикасних цевовода за изградњу које покреће БуилдКит са платформом све у једном као што је Меваиз даје тимовима комплетан скуп од артефакта кода до испоруке клијентима.<сцрипт типе="апплицатион/лд+јсон">{"@цонтект":"хттпс:\/\/сцхема.орг","@типе":"ФАКПаге","маинЕнтити":[{"@типе":"Куестион","наме":"Шта је БуилдКит и по чему се разликује од класичне Доцкер верзије систем?","аццептедАнсвер":{"@типе":"Ансвер","тект":"БуилдКит је Доцкер-ов механизам за изградњу нове генерације, представљен у Доцкер-у 18.09 и постављен као подразумевани у Доцкер-у 23.0, БуилдКит подржава паралелно извршавање слојева, напредне буилд-форме, цацх третира процес изградње као усмерени ациклични граф (ДАГ), омогућавајући паметнију резолуцију зависности и драматично брже време израде ф"}},{"@типе":"Куестион","наме":"Да ли треба да инсталирам нешто додатно да бих почео да користим БуилдКит са Доцкером?","аццептедАнсвер":{"@типе":"Потребна је додатна инсталација:{"@типе":"Ансвер" 2 "," или новије верзије \у2014 БуилдКит је подразумевано омогућен, можете га активирати тако што ћете поставити променљиву окружења ДОЦКЕР_БУИЛДКИТ=1 пре него што покренете своје команде за изградњу. "}},{"@типе":"Куестион","наме":"Може ли се БуилдКит користити за прављење артефаката изван стандардних слика контејнера?","аццептедАнсвер":{"@типе":"Ансвер","тект":"Да, и ово је једна од најнецењенијих могућности БуилдКит-а, а може да произведе --в Буилдоут бинарни фајлови, тарбалл-ови, статични веб-сајтови и други произвољни артефакти датотека \у2014 не само ОЦИ слике. Ово га чини механизмом за прављење опште намене који се природно уклапа у полиглотске монорепосе и сложене ЦИ цевоводе где је различитим тимовима потребан другачији излаз за"}},{"@типе":"КуестионХ" као што је алати за изградњу, "намештају се у широку платформу". Меваиз?","аццептедАнсвер":{"@типе":"Ансвер","тект":"БуилдКит управља слојем градње ниског нивоа, али савремени развојни тимови такође морају да управљају пословним токовима рада, испоруком клијената и оперативним процесима као што је Меваиз \у2014 207-модулска алатка за пословну инфраструктуру\10 почевши од $12. страна софтверског пословања Упаривање ефикасних цевовода за изградњу које покреће БуилдКит са платформом све у једном"}}]}.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime