openstack拉取kolla docker鏡像到阿里雲鏡像倉庫

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的鏡像拉取任務,大概流程:

  1. 克隆kolla項目,獲取docker/目錄及子目錄名稱列表
  2. 從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文件來執行任務。這裏已經創建好了,不需要在執行相關操作。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章