Add docs on how to deploy OpenStack with OpenDaylight

Added design description and detailed instructions on how to deploy
OpenStack with OpenDaylight SDN for networking using Fuel CCP.

Depends-On: I0125075440d788437672b1980473e8a5ecffd29e
Change-Id: I9103f79d27d4018e23a75a9c757f6014a1af8ad9
This commit is contained in:
Oleg Bondarev 2016-11-29 15:32:58 +03:00 committed by Elena Ezhova
parent 35b7e1f5a7
commit 41a45e5a9d
3 changed files with 186 additions and 0 deletions

View File

@ -30,6 +30,7 @@ Advanced topics
ceph
ceph_cluster
using_calico_instead_of_ovs
using_odl_instead_of_ovs
ironic
known_issues

View File

@ -0,0 +1,141 @@
.. _using_odl_instead_of_ovs:
==========================================
Using OpenDaylight instead of Open vSwitch
==========================================
This guide describes how to deploy and run OpenStack environment with
OpenDaylight ML2 Neutron plugin instead of the reference OpenVSwitch ML2 on top
of Kubernetes cluster using fuel-ccp.
Introduction
~~~~~~~~~~~~
OpenDaylight (ODL) is a modular Open SDN platform for networks of any size and
scale. OpenStack can use OpenDaylight as its network management provider
through the Modular Layer 2 (ML2) north-bound plug-in. OpenDaylight manages
the network flows for the OpenStack compute nodes via the OVSDB south-bound
plug-in.
Deployment will look like this:
* new Docker container and service: opendaylight
* openvswitch service on nodes is configured to be managed by ODL
* neutron is configured to use ``networking-odl`` ML2 plugin.
* neutron openvswitch and l3 agent pods are removed from the deployment
topology.
What is needed to deploy CCP with ODL network plugin:
* Runnning K8s environment with ODL network plugin (for a tested,
recommended setup please check out the `QuickStart Guide`_).
* CCP installed on a machine with access to ``kube-apiserver`` (e.g. K8s
master node).
* CCP CLI config file with custom deployment topology.
Sample deployment
~~~~~~~~~~~~~~~~~
Sample CCP configuration
------------------------
Let's write CCP CLI configuration file now, make sure you have the following
in your configuration file (let's say it's ``ccp.yaml``):
::
builder:
push: True
registry:
address: "127.0.0.1:31500"
repositories:
skip_empty: True
nodes:
node1:
roles:
- db
- messaging
- controller
- openvswitch
- opendaylight
node[2-3]:
roles:
- db
- messaging
- compute
- openvswitch
roles:
db:
- galera
messaging:
- rabbitmq
controller:
- etcd
- glance-api
- glance-registry
- heat-api
- heat-engine
- horizon
- keystone
- memcached
- neutron-dhcp-agent
- neutron-metadata-agent
- neutron-server
- nova-api
- nova-conductor
- nova-consoleauth
- nova-novncproxy
- nova-scheduler
compute:
- nova-compute
- nova-libvirt
openvswitch:
- openvswitch-db
- openvswitch-vswitchd
opendaylight:
- opendaylight
configs:
private_interface: eth1
neutron:
plugin_agent: "opendaylight"
versions:
ovs_version: "2.5.1"
For the instructions for building images and deploying CCP refer to the
`QuickStart Guide`_.
To build only the opendaylight Docker image run:
::
ccp deploy --config-file ccp.yaml build -c opendaylight
To deploy only the opendaylight component run:
::
ccp deploy --config-file ccp.yaml deploy -c opendaylight
Check configuration
-------------------
To check that neutron has been configured to work with OpenDaylight, attach
to `neutron-server` container and run:
::
$ grep mechanism_drivers /etc/neutron/plugins/ml2/ml2_conf.ini
mechanism_drivers = opendaylight, logger
OpenDaylight creates only one bridge ``br-int``, with all traffic being managed by
OpenFlow, including routing and applying security group rules. To inspect flows,
attach to an `openvswitch-vswitchd` container and exec:
::
ovs-ofctl -O OpenFlow13 dump-flows br-int
To connect to OpenDaylight console run the following command in `opendaylight` container:
::
/odl/bin/client
.. _QuickStart Guide: http://fuel-ccp.readthedocs.io/en/latest/quickstart.html

View File

@ -0,0 +1,44 @@
nodes:
node1:
roles:
- db
- messaging
- controller
- openvswitch
- opendaylight
node[2-3]:
roles:
- db
- messaging
- compute
- openvswitch
roles:
db:
- galera
messaging:
- rabbitmq
controller:
- etcd
- glance-api
- glance-registry
- heat-api
- heat-engine
- horizon
- keystone
- memcached
- neutron-dhcp-agent
- neutron-metadata-agent
- neutron-server
- nova-api
- nova-conductor
- nova-consoleauth
- nova-novncproxy
- nova-scheduler
compute:
- nova-compute
- nova-libvirt
openvswitch:
- openvswitch-db
- openvswitch-vswitchd
opendaylight:
- opendaylight