Google宣布在其多個(gè)云計(jì)算服務(wù)中,提供云計(jì)算原生容器鏡像文件技術(shù)Buildpacks的支持,以加速容器化應(yīng)用程序的采用,而Google也發(fā)布了開放源碼模板,讓用戶能夠簡(jiǎn)單地在自家應(yīng)用程序上,使用Buildpacks技術(shù)。
Google所提供的Buildpacks,源自于CNCF的開源Cloud Native Buildpacks項(xiàng)目。Buildpacks最一開始是由Heroku在2011年創(chuàng)建,并且被Cloud Foundry以及Google App Engine、Gitlab、Knative等其他PaaS采用,而Cloud Native Buildpacks項(xiàng)目,則是Pivotal和Heroku在2018年初發(fā)起,于10月加入Cloud Native沙盒,目標(biāo)是要統(tǒng)一Buildpacks生態(tài)系統(tǒng)。
Cloud Native Buildpacks讓開發(fā)者能夠?qū)?yīng)用程序源碼,轉(zhuǎn)換成為可在云計(jì)算執(zhí)行的鏡像文件,而不需要使用Dockerfile。Buildpacks會(huì)被包在一個(gè)稱為Builder的OCI鏡像文件中,Builder擁有構(gòu)建應(yīng)用程序所需要的全部信息,一個(gè)Builder可含有一個(gè)或是多個(gè)Buildpack。
而Google云計(jì)算發(fā)布的Buildpacks版本,則是一系列開源Buildpack以及Builder的集合,并且以CNCF Buildpacks v3規(guī)范作為基礎(chǔ),能構(gòu)建遵循最佳實(shí)踐的容器鏡像文件,在Google的容器平臺(tái),像是Cloud Run、Anthos和GKE上執(zhí)行。
Google強(qiáng)調(diào),他們對(duì)Buildpacks的可重復(fù)使用性、安全性和執(zhí)行速度進(jìn)行優(yōu)化,讓開發(fā)者可以將應(yīng)用程序和函數(shù),都打包成為容器鏡像文件,在構(gòu)建函數(shù)時(shí),會(huì)是使用Google云計(jì)算的開源Functions框架打包。Google Buildpacks使用Ubuntu 18.04基礎(chǔ)鏡像文件,該鏡像文件會(huì)定期執(zhí)行安全漏洞檢查,所有被偵測(cè)到的漏洞,會(huì)自動(dòng)更新修復(fù),以確保開發(fā)者在以Buildpacks構(gòu)建源碼時(shí),能確保其安全性。
Google的Buildpacks完全以程序語言Go編寫,而開發(fā)者不用以各種語言創(chuàng)建同個(gè)Buildpack,可以將較小且模塊化的Buildpack結(jié)合在一起,像是以Node.js開發(fā),能夠安裝節(jié)點(diǎn)的組件NPM Buildpack,也能被用在其他可以使用NPM組件的語言或是框架上。
Google在一系列產(chǎn)品支持Buildpack,包括用戶可以在Cloud Run的持續(xù)部署配置中使用Buildpack,而Buildpacks也是較新的App Engine Runtime,默認(rèn)的程序代碼部署機(jī)制,Cloud Code IDE可以直接以Buildpacks構(gòu)建源碼,并且部署到GKE中。而Skaffold也使用Buildpack提供即時(shí)開發(fā)體驗(yàn),當(dāng)開發(fā)者編輯源碼時(shí),Buildpacks便會(huì)持續(xù)重建應(yīng)用程序,讓開發(fā)者預(yù)覽程序代碼的變更。