kolla from source

openstack做二次开发后需要重新打包. 本文简述使用kolla打包neutron和neutron_lib的场景.

需求:

二次开发的代码和依赖的包的打包.

项目代码打包:

配置neutron-base源:

/etc/kolla/kolla-build.conf
[neutron-base]
type = git
location = http://your-domain/openstack/neutron.git    # neutron代码项目地址
reference = stein   # 分支

依赖包打包:

依赖包的打包稍微麻烦一些, 比如要自定义neutron_lib===1.25.1, 首先要有个私有pypi仓库, 然后更改pip指向.

使用sonatype nexus做pypi proxy

创建pypi(proxy)作为上游pypi(pypi-douban). remote storage填写上游地址比如http://pypi.douban.com
创建pypi(hosted)作为自用pypi(pypi-local).
创建pypi(group)作为暴露的endpoint(pypi). group members里包含pypi-douban和pypi-local.

上传自定义的包

git tag 1.25.1
python setup.py sdist bdist_wheel
twine upload -r nexus dist/*  --repository-url http://pypi-domain:8081/repository/pypi-local/    # 这里pypi-local地址

修改kolla中pypi地址

cat base_header.j2
{% extends parent_template %}   # parent_template

{% block base_header %}         # 直接设置到base镜像里
RUN mkdir ~/.pip && echo -e "\
[global] \n\
index-url = http://<pypi-domain>:8081/repository/pypi/simple/ \n\
[install] \n\
trusted-host=<pypi-domain> \n\
" > ~/.pip/pip.conf

{% endblock %}

执行打包过程, 并上传到私有docker repo

/usr/local/bin/kolla-build --template-override /path/to/base_header.j2  neutron  -t source   --registry <docker repo>:8080 --push

可选(自定义yum.repo来加速)

配置文件中定义rpm_setup_config 私有.repo或.rpm地址

不推荐:

依赖包打包不推荐使用plugin的实现方式, 这种方式不灵活, 而且要workaround pip安装顺序的问题:

  1. 设置plugin地址
    [neutron-base-plugin-1neutron_lib] # 设置私有依赖包, 前面有个1保证优先安装
    type = local
    location = /path/to/1neutron_lib
  2. 修改config.py
    site-packages/kolla/common/config.py
  3. 代码打tag
    cd /path/to/1neutron_lib; git tag 1.25.1

发表回复

您的电子邮箱地址不会被公开。