Loading

自定义kolla-ansible镜像

背景

出于项目定制化的需求需要对kolla-ansible部署的OpenStack部分组件镜像做二次开发。官方手册请参考:https://docs.openstack.org/kolla/2024.1/admin/image-building.html ,本随笔基本上为官方手册实验后的流程复述。

准备材料

1. git服务一个(gitlab/github都行),此处使用 gitlab
2. Linux 主机一台(版本不要过于老旧,需要安装较新版本的docker-ce与python),此处使用 centos8.5 stream版本

前期环境搭建

1. 安装较新版本的 docker-ce
2. 安装 python 3.10以上,如果 Linux 自带的 Python 3.10 以上的版本则不用安装

获取源代码

此处以 zun-compute 组件为例,从 https://opendev.org/openstack OpenStack 官方仓库中获取你需要定制化开发组件的源代码,克隆到你自己的 gitlab 服务上,并在一需要基于修改的分支上另开一条分支,提交你修改的代码。

安装 kolla

# 安装 Python 虚拟环境,装的慢的话记得换国内的 pipy 源
pip install virtualenv

# 构建工作目录
mkdir -p /home/kolla-build && cd /home/kolla-build && virtualenv /home/kolla-build/venv

# 安装 kolla
source /home/kolla-build/venv/bin/activate
# 此处需要注意, 指明你需要安装的 kolla 版本,此处使用 18.0.0
pip install kolla==18.0.0

配置 kolla-build.conf 配置文件

除了我们定开的组件外,其余组件我们还是使用默认的官方源构建,所以我们可以在配置中仅修改单个组件的源。如下。创建 /etc/kolla/kolla-build.conf 配置文件并写入下属内容,注意分支和 git 地址替换为自己的。

# /etc/kolla/kolla-build.conf
[zun-base]
type = git
location = http://*.*.*.*/openstack/zun
reference = stable/2024.1-self-dev

此处细心的同学可能会抱有疑问,为什么构建的是 zun-compute 组件但是此处写的是 zun-base 。此处我们需要翻开 kolla 相关的代码实现与 kolla 生成的 Dockerfile 配置,参考 kolla/common/sources.py 文件查看默认的 kolla-build.conf 内容与通过 kolla-build --template-only 生成的 Dockerfile。如果你对于 jinja2 的模版语言足够熟悉的话也可以直读代码发现。zun-base 代码仓库时已经包含了 zun 后端相关实现的。

开始构建

如果大量组件依赖于默认仓库源的话最好配置下代理,不然构建容易失败或者进度拉的非常长

export http_proxy="http://127.0.0.1:3456"
export https_proxy="http://127.0.0.1:3456"

可以参考一下构建参数

kolla-build -b ubuntu --openstack-branch=stable-2024.1 --cache --debug --tag=2024.1-self-ubuntu22 zun-compute

简单解释下参数

-b ubuntu # 基础镜像选择
--openstack-branch=stable-2024.1 # openstack 版本,注意 stable/2024.1 需要写成 stable-2024.1
--cache # 启用容器缓存,防止构建失败冲就要重头再来
--debug # 更详细的日志
--tag=2024.1-self-ubuntu22 # 构建出来镜像的 tag
posted @ 2024-06-28 09:57  神王攻大人  阅读(4)  评论(0编辑  收藏  举报