From 41a45e5a9db5b6bcb5fbfa03b15f62ab21d374d4 Mon Sep 17 00:00:00 2001 From: Oleg Bondarev Date: Tue, 29 Nov 2016 15:32:58 +0300 Subject: [PATCH] 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 --- doc/source/index.rst | 1 + doc/source/using_odl_instead_of_ovs.rst | 141 ++++++++++++++++++++++++ etc/topology-opendaylight-example.yaml | 44 ++++++++ 3 files changed, 186 insertions(+) create mode 100644 doc/source/using_odl_instead_of_ovs.rst create mode 100644 etc/topology-opendaylight-example.yaml diff --git a/doc/source/index.rst b/doc/source/index.rst index 945fcfe5..ea18cdd3 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -30,6 +30,7 @@ Advanced topics ceph ceph_cluster using_calico_instead_of_ovs + using_odl_instead_of_ovs ironic known_issues diff --git a/doc/source/using_odl_instead_of_ovs.rst b/doc/source/using_odl_instead_of_ovs.rst new file mode 100644 index 00000000..988e4f20 --- /dev/null +++ b/doc/source/using_odl_instead_of_ovs.rst @@ -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 diff --git a/etc/topology-opendaylight-example.yaml b/etc/topology-opendaylight-example.yaml new file mode 100644 index 00000000..11286b75 --- /dev/null +++ b/etc/topology-opendaylight-example.yaml @@ -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 \ No newline at end of file