生產(chǎn)化運維
鏡像倉庫
- 鏡像倉庫分為mainfile(元數(shù)據(jù))和實際的二進制文件
- 一個倉庫有多個鏡像
- 鏡像倉庫遵循oci的distributeSpec危尿,實現(xiàn)了這些api即可做一個自己的鏡像倉庫
- 倉庫+鏡像名:版本 確定唯一的鏡像
- 公有倉庫坏晦,開放震庭、便捷讹剔、免運維蟆湖、成本低
- 私有倉庫形帮,隱私性瑟啃、敏感性、網(wǎng)絡(luò)連通性职恳、安全性
- 鏡像刪除時所禀,blob不會被刪除,需要通過垃圾回收再進行回收空間
元數(shù)據(jù)
- 描述鏡像的核心信息放钦,倉庫色徘、標(biāo)簽、校驗碼操禀。鏡像的構(gòu)建過程贺氓,每個層的校驗碼等
- crictl inspecti 鏡像名,可以查看(基于containerd床蜘,docker的命令無法查看詳細(xì)的層)
塊文件
- 每個塊文件是一個文件層
harbor
- VMware開發(fā)的鏡像倉庫
- 有授權(quán)、鏡像安全驗證蔑水、鏡像簽名等功能
- replication job service 可以進行鏡像倉庫的搬遷
本地鏡像加速Dragonfly
- 當(dāng)集群規(guī)模很大時邢锯,同時拉取鏡像,會出現(xiàn)問題
- dragonfly是基于跑p的只能鏡像和文件分發(fā)工具搀别,他的功能包括應(yīng)用分發(fā)丹擎,緩存分發(fā),日志分發(fā)歇父,鏡像分發(fā)
- 包含cluster manager和dfget proxy兩個組件
- 每個節(jié)點上都有個dfget proxy蒂培,用來劫持docker pull和push,如果每個節(jié)點都沒有鏡像榜苫,就會發(fā)送請求道cluster manager护戳,cluster manager和鏡像倉庫交互,拉取垂睬,拉取的blob媳荒,每一層放到不同的節(jié)點上,各個節(jié)點相互拉取
鏡像安全
- 構(gòu)建時驹饺,token钳枕、密鑰等不能寫到鏡像中,配置與代碼分離
- 應(yīng)用依賴赏壹,避免不用的依賴和老的依賴鱼炒,老的依賴可能存在安全漏洞
- 文件問題,如果底層的鏡像文件中存在問題蝌借,不能通過上層解決昔瞧,因為鏡像分層是上層覆蓋下層指蚁,下層還是存在的
鏡像掃描
- 靜態(tài)掃描
- 動態(tài)掃描
- 將k8s的image policy 的webhook和鏡像掃描結(jié)果結(jié)合,存在問題的image禁止入內(nèi)硬爆,如果已經(jīng)部署了不會驅(qū)逐欣舵,重建的話會被阻攔
- 設(shè)置黑白名單,如果著急上線缀磕,可以先添加白名單缘圈,但是一段時間后仍然不過,進行驅(qū)逐
常用的鏡像掃描軟件
- anchore aqua twistlock clair qualys