Neutron CI Run on Docker
-
Upload
hirofumi-ichihara -
Category
Technology
-
view
46 -
download
0
Transcript of Neutron CI Run on Docker
![Page 1: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/1.jpg)
Copyright©2014 NTT corp. All Rights Reserved.
Neutron CI Run on Docker
Hirofumi IchiharaNTT
![Page 2: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/2.jpg)
2Copyright©2014 NTT corp. All Rights Reserved.
• Neutron has many vendor plugins• 38 vendor plugins and drivers in Neutron(include
proposing)• Impossible to test all vendor plugins
Neutron plugins
http://stackalytics.com/report/driverlog?project_id=openstack%2Fneutron
A10 Networks LBaaS DriverArista Neutron ML2 DriverBig Switch Neutron ML2 DriverBig Switch Controller PluginBrocade Neutron pluginBrocade Neutron ML2 Mechanism driver for VDX/VCS SwitchesBrocade VyattaCSR1kv router service pluginNeutron ML2 Driver For Cisco Nexus DevicesCisco APIC ML2 DriverCisco APIC L3 ServiceCisco VPNaaSNetScaler LBaas driverCloudbase Hyper-V PluginEmbrane Neutron PluginEmbrane LBaaS DriverExtreme Networks PluginFreescale SDN ML2 Mechanism DriverIBM SDN-VE PluginJuniper Networks plug-in for OpenStack NeutronJuniper Opencontrail plugin for Neutron resources
Mellanox Neutron PluginMellanox Neutron ML2 DriverMellanox Neutron ML2 SR-IOV DriverMidoNet PluginNEC OpenFlow PluginNuage Networks Neutron PluginNuage Networks ML2 driverOne Convergence NVSD ControllerOpenDaylight ML2 MechanismDriverMeta PluginRyu OpenFlow Controller PluginOpenFlow AgentPLUMgrid OpenStack Networking Suite Neutron PluginRadware LBaaS Driver for Alteon.Tail-f NCS ML2 Mechanism DriverVMware NSX Network Virtualization Platform PluginvArmour-Firewall
![Page 3: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/3.jpg)
3Copyright©2014 NTT corp. All Rights Reserved.
• Establish third party CI rules for Neutron• https://wiki.openstack.org/wiki/NeutronThirdPartyTesting
Neutron Third Party CI System
https://review.openstack.org/#/c/131905/
![Page 4: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/4.jpg)
4Copyright©2014 NTT corp. All Rights Reserved.
• Metaplugin• provided since Folsom version• allows you to use multiple plugins at the same time
• Metaplugin CI System
Neutron CI System for Metaplugin
1000 tests/monthMax 3 parallels
![Page 5: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/5.jpg)
5Copyright©2014 NTT corp. All Rights Reserved.
• Test must be run in clean environment
Neutron CI System Requirement
Test Node
start
openstack
OVS settingPackage
ENV setting
install openstack
run testsfinish tests
stop openstack
Clean Node
CleanCleanClean
OVS settingPackage
ENV setting
start
openstack
install openstack
fail to install or test
Jenkins: http://jenkins-ci.org/
![Page 6: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/6.jpg)
6Copyright©2014 NTT corp. All Rights Reserved.
• Metaplugin CI System uses VM
Neutron CI System with VM
create VMstart test
VM
install openstackOpenStack
VMOpenStack
VMOpenStack
finish testsdelete VM
certain Public Cloud Service
VM VM VM
Jenkins: http://jenkins-ci.org/
![Page 7: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/7.jpg)
7Copyright©2014 NTT corp. All Rights Reserved.
• VM startup is very slow• VM performance is not good
VM Problems
But a VM is very cheap:)
![Page 8: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/8.jpg)
8Copyright©2014 NTT corp. All Rights Reserved.
• VM startup is very slow• VM performance is not good
VM Problems
But a VM is very cheap:) Really......?
![Page 9: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/9.jpg)
9Copyright©2014 NTT corp. All Rights Reserved.
Not cheap!
![Page 10: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/10.jpg)
10Copyright©2014 NTT corp. All Rights Reserved.
Let’s use container
![Page 11: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/11.jpg)
11Copyright©2014 NTT corp. All Rights Reserved.
Docker
docker: https://www.docker.com
![Page 12: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/12.jpg)
12Copyright©2014 NTT corp. All Rights Reserved.
• Dockenstack• Run OpenStack on Docker• Use nova-docker project to run nova instances• Written by Paul Czarkowski, Eric Windisch• Provide to https://github.com/ewindisch/dockenstack
OpenStack on Docker
ContainerOpenStack
instance instance
![Page 13: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/13.jpg)
13Copyright©2014 NTT corp. All Rights Reserved.
OpenStack on Docker Problems• Well known
• Not support OpenvSwitch• Not support Cinder Volume
• Devstack failed to• Reserve keystone port • install nova-docker• Restart docker
• Nova-docker didn’t support Neutron ML2 Linuxbridge driver
• Neutron failed to ip6tables
![Page 14: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/14.jpg)
14Copyright©2014 NTT corp. All Rights Reserved.
• OpenvSwitch• Select ML2 Linuxbridge as Neutron plugin
• Cinder Volume• Don’t use volume
• Reserve Keystone port ⇒ Bugfix #125740• Install nova-docker ⇒ Bugfix #128746• Restart docker
• Replace command (Workaround)• start-stop-daemon --stop --pidfile "/var/run/docker.pid”
• ML2 Linuxbridge driver ⇒ Bugfix #130520• Don’t use ip6tables
• Disable ipv6 in container(Workaround)• echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
OpenStack on Docker Run
![Page 15: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/15.jpg)
15Copyright©2014 NTT corp. All Rights Reserved.
• Jenkins runs shell script
Jenkins Run
#!/usr/bin/env bashset -emkdir -p $BUILD_NUMBER/logsdocker run -v $WORKSPACE/$BUILD_NUMBER/logs:/opt/stack/logs --privileged $DOCKER_IMAGE $GERRIT_REFSPEC
• Docker can bind mount a volume from the host
• Storing log became very easy
![Page 16: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/16.jpg)
16Copyright©2014 NTT corp. All Rights Reserved.
• Jenkins detects test success inside container
Jenkins Success
![Page 17: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/17.jpg)
17Copyright©2014 NTT corp. All Rights Reserved.
• Tempest Neutron API test is successful
Neutron Test Result
![Page 18: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/18.jpg)
18Copyright©2014 NTT corp. All Rights Reserved.
• Jenkins detects test failure inside container
Jenkins Failure
![Page 19: Neutron CI Run on Docker](https://reader036.fdocument.pub/reader036/viewer/2022062523/58ef7d471a28ab371e8b45b7/html5/thumbnails/19.jpg)
19Copyright©2014 NTT corp. All Rights Reserved.
$ git clone -b neutron-ci https://github.com/hichihara/dockenstack.git
$ cd dockenstack/dockenstack
$ docker build .
TRY