20
Copyright©2014 NTT corp. All Rights Reserved. Neutron CI Run on Docker Hirofumi Ichihara NTT

Neutron CI Run on Docker

Embed Size (px)

Citation preview

Page 1: Neutron CI Run on Docker

Copyright©2014 NTT corp. All Rights Reserved.

Neutron CI Run on Docker

Hirofumi IchiharaNTT

Page 2: Neutron CI Run on Docker

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

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

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

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

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

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

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

9Copyright©2014 NTT corp. All Rights Reserved.

Not cheap!

Page 10: Neutron CI Run on Docker

10Copyright©2014 NTT corp. All Rights Reserved.

Let’s use container

Page 11: Neutron CI Run on Docker

11Copyright©2014 NTT corp. All Rights Reserved.

Docker

docker: https://www.docker.com

Page 12: Neutron CI Run on Docker

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

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

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

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

16Copyright©2014 NTT corp. All Rights Reserved.

• Jenkins detects test success inside container

Jenkins Success

Page 17: Neutron CI Run on Docker

17Copyright©2014 NTT corp. All Rights Reserved.

• Tempest Neutron API test is successful

Neutron Test Result

Page 18: Neutron CI Run on Docker

18Copyright©2014 NTT corp. All Rights Reserved.

• Jenkins detects test failure inside container

Jenkins Failure

Page 19: Neutron CI Run on Docker

19Copyright©2014 NTT corp. All Rights Reserved.

$ git clone -b neutron-ci https://github.com/hichihara/dockenstack.git

$ cd dockenstack/dockenstack

$ docker build .

TRY

Page 20: Neutron CI Run on Docker

20Copyright©2014 NTT corp. All Rights Reserved.

Contact

[email protected]