openstack拉取 kolla docker鏡像
kolla的兩個項目
- openstack kolla項目用來將相關組件打包到docker鏡像中。
- openstack kolla-ansible項目用來基於ansible部署openstack集羣。
使用kolla-ansible部署openstack集羣時需要從dockerhub拉取鏡像:
https://hub.docker.com/u/kolla/
如果網絡環境較差可能需要很長時間,本編文章的目的是將kolla鏡像保存到阿里雲鏡像倉庫一份,執行部署時指定從阿里雲拉取鏡像。
以下倉庫已經推送了train版和ussuri版的centos鏡像,包含source和binary兩種格式,可以直接使用。
$ cat /etc/kolla/globals.yml
docker_registry: "registry.cn-shenzhen.aliyuncs.com"
docker_namespace: "kollaimage"
kolla所有組件的鏡像名稱在kolla項目中可以找到:
https://github.com/openstack/kolla/tree/master/docker
docker下的目錄和二級目錄名稱跟docker鏡像名稱相關,所以可以遍歷這些目錄名稱,獲取所有目錄名稱的列表。
kolla鏡像格式有一定規則,例如:
kolla/centos-source-nova-compute:ussuri
大概格式
倉庫名稱/OS版本-包類型-組件名稱:openstack版本
參數說明:
- 倉庫名稱:固定的dockrehub名稱kolla
- OS版本:kolla的鏡像支持多種版本,centos、ubuntu等
- 包類型:支持源碼source和binary二進制兩種格式
- 組件名稱:和上面遍歷的目錄名稱對應,例如上面的nova-compute
- openstack版本:train、ussuri等
有了這個規則,就可以使用腳本將所有的docker鏡像拼在一起,獲取完整的鏡像url,然後結合github CICD工具action,從dockerhub將所有鏡像拉取到本地,重新打tag,然後推送到阿里雲免費的鏡像倉庫中。
github具體操作
參考這個倉庫:https://github.com/willzhang/kolla-image
其中kolla-image/.github/workflows/get-kolla-images.yml定義了github action的鏡像拉取任務,大概流程:
- 克隆kolla項目,獲取docker/目錄及子目錄名稱列表
- 從dockerhub拉取鏡像,重新打tag後推送到阿里雲鏡像倉庫。
可以直接fork到自己的github賬號下,需要修改2個敏感變量參數即可拿來使用,在settings中改爲自己的阿里雲用戶名和密碼。
另一個前提是你需要在阿里雲創建好命名空間和鏡像倉庫:
登錄地址:https://cr.console.aliyun.com/cn-hangzhou/repositories
如何使用github action
travisCI默認構建時間限制是50min,gitlabCI最大構建時間限制是3h,拉取200多個鏡像需要的時間遠遠超過了該限制,所以最終選擇github Action CICD來執行構建任務,免費構建時間可達6h。
首先點擊actions
然後點擊New workflow
找到publish docker container的模板,點擊set up this workflow,以這個模板爲參考創建workflow,當然這只是一個快速創建的示例,完全可以自行編寫相關yaml文件來執行任務。這裏已經創建好了,不需要在執行相關操作。