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