Juju Charm - Neutron Gateway
Go to file
Hemanth Nakkina de22d6cbe2 Add extension fwaas_v2 based on neutron-api relation data
fwaas_v2 extension is added in l3_agent.ini by default from stein.
However with the newly introduced neutron-api configuration parameter
enable-fwaas, the extension have to added only when it is set to true
on neutron-api charm.

neutron-api charm adds enabled-fwaas as relation data in the commit
https://review.opendev.org/c/openstack/charm-neutron-api/+/806676.
This patch removes special handling of fwaas_v2 as l3_extension_plugins
is already updated in relation data based on neutron-api enable-fwaas
configuration.

Remove python3-neutron-fwaas in package list from stein release. The
package is already part of dependency of neutron-l3-agent until Ussuri
release and the dependency will be removed from Victoria release in
package control files.

Synced charmhelpers to get related changes
https://github.com/juju/charm-helpers/pull/635

Partial-Bug: #1934129
Change-Id: I07db7fb7c2f00eaf4c0a5bcc082c73922b87d1c0
2021-09-12 06:53:34 +05:30
actions Implementation of deferred restarts 2021-04-09 12:54:15 +00:00
files Merge "fix the spelling mistakes" 2019-12-19 12:56:31 +00:00
hooks Add extension fwaas_v2 based on neutron-api relation data 2021-09-12 06:53:34 +05:30
lib Update tox.ini files from release-tools gold copy 2016-09-09 19:43:18 +00:00
templates Make fw driver configurable 2021-07-20 14:55:28 +01:00
tests Fix Zaza deployment expectations 2021-07-05 11:43:48 +02:00
unit_tests Add extension fwaas_v2 based on neutron-api relation data 2021-09-12 06:53:34 +05:30
.gitignore Update for Python 3 execution 2017-11-16 11:19:58 -08:00
.gitreview OpenDev Migration Patch 2019-04-19 19:39:50 +00:00
.project Rename project 2015-09-15 09:30:01 +01:00
.pydevproject Rename project 2015-09-15 09:30:01 +01:00
.stestr.conf Replace ostestr with stestr in testing framework. 2019-03-07 17:12:21 -05:00
.zuul.yaml Switch to Ussuri jobs 2019-12-03 16:41:50 +08:00
actions.yaml Implementation of deferred restarts 2021-04-09 12:54:15 +00:00
charm-helpers-hooks.yaml Updates to flip all libraries back to master 2021-05-03 16:08:38 +01:00
config.yaml Make fw driver configurable 2021-07-20 14:55:28 +01:00
copyright Add missing copyright file 2012-12-07 08:39:53 +00:00
hardening.yaml Add hardening support 2016-03-31 15:01:54 +01:00
icon.svg Update charm icon 2017-08-02 18:03:36 +01:00
Makefile Sync helpers for 20.05 2020-05-18 14:46:36 +02:00
metadata.yaml Add impish to metadata.yaml 2021-07-05 12:41:18 +00:00
osci.yaml Test bundles for focal-wallaby and hirsute-wallaby 2021-05-06 10:26:31 +00:00
README.md Replace reference to 'juju set' with 'juju config'. 2021-08-06 17:58:16 +01:00
requirements.txt Sync release-tools 2021-07-22 14:58:21 +02:00
revision added postgresql 2014-03-28 12:02:09 +01:00
setup.cfg setup.cfg: Replace dashes with underscores 2021-05-04 15:45:24 +08:00
test-requirements.txt Sync release-tools 2021-07-22 14:58:21 +02:00
tox.ini Sync release-tools 2021-07-22 14:58:21 +02:00

Overview

Neutron provides flexible software defined networking (SDN) for OpenStack.

This charm is designed to be used in conjunction with the rest of the OpenStack related charms in the charm store to virtualize the network that Nova Compute instances plug into.

Neutron supports a rich plugin/extension framework for propriety networking solutions and supports (in core) Nicira NVP, NEC, Cisco and others...

See the upstream Neutron documentation for more details.

Usage

In order to use Neutron with OpenStack, you will need to deploy the nova-compute and nova-cloud-controller charms with the network-manager configuration set to 'Neutron':

nova-cloud-controller:
    network-manager: Neutron

This decision must be made prior to deploying OpenStack with Juju as Neutron is deployed baked into these charms from install onwards:

juju deploy nova-compute
juju deploy --config config.yaml nova-cloud-controller
juju deploy neutron-api
juju add-relation nova-compute nova-cloud-controller
juju add-relation neutron-api nova-cloud-controller

The Neutron Gateway can then be added to the deploying:

juju deploy neutron-gateway
juju add-relation neutron-gateway mysql
juju add-relation neutron-gateway rabbitmq-server
juju add-relation neutron-gateway nova-cloud-controller
juju add-relation neutron-gateway neutron-api

The gateway provides two key services; L3 network routing and DHCP services.

These are both required in a fully functional Neutron OpenStack deployment.

Configuration Options

Port Configuration

All network types (internal, external) are configured with bridge-mappings and data-port and the flat-network-providers configuration option of the neutron-api charm. Once deployed, you can configure the network specifics using neutron net-create.

If the device name is not consistent between hosts, you can specify the same bridge multiple times with MAC addresses instead of interface names. The charm will loop through the list and configure the first matching interface.

Basic configuration of a single external network, typically used as floating IP addresses combined with a GRE private network:

neutron-gateway:
    bridge-mappings:         physnet1:br-ex
    data-port:               br-ex:eth1
neutron-api:
    flat-network-providers:  physnet1

neutron net-create --provider:network_type flat \
    --provider:physical_network physnet1 --router:external=true \
    external
neutron router-gateway-set provider external

Alternative configuration with two networks, where the internal private network is directly connected to the gateway with public IP addresses but a floating IP address range is also offered.

neutron-gateway:
    bridge-mappings:         physnet1:br-data external:br-ex
    data-port:               br-data:eth1 br-ex:eth2
neutron-api:
    flat-network-providers:  physnet1 external

Alternative configuration with two external networks, one for public instance addresses and one for floating IP addresses. Both networks are on the same physical network connection (but they might be on different VLANs, that is configured later using neutron net-create).

neutron-gateway:
    bridge-mappings:         physnet1:br-data
    data-port:               br-data:eth1
neutron-api:
    flat-network-providers:  physnet1

neutron net-create --provider:network_type vlan \
    --provider:segmentation_id 400 \
    --provider:physical_network physnet1 --shared external
neutron net-create --provider:network_type vlan \
    --provider:segmentation_id 401 \
    --provider:physical_network physnet1 --shared --router:external=true \
    floating
neutron router-gateway-set provider floating

This replaces the previous system of using ext-port, which always created a bridge called br-ex for external networks which was used implicitly by external router interfaces.

Note: if the 'data-port' config item is set, then the 'ext-port' option is ignored. This is to prevent misconfiguration of the charm. A warning is logged and the unit is marked as blocked in order to indicate that the charm is misconfigured.

Instance MTU

When using Open vSwitch plugin with GRE tunnels default MTU of 1500 can cause packet fragmentation due to GRE overhead. One solution is to increase the MTU on physical hosts and network equipment. When this is not possible or practical the charm's instance-mtu option can be used to reduce instance MTU via DHCP.

juju config neutron-gateway instance-mtu=1400

Note that this option was added in Havana and will be ignored in older releases.

Deferred service events

Operational or maintenance procedures applied to a cloud often lead to the restarting of various OpenStack services and/or the calling of certain charm hooks. Although normal, such events can be undesirable due to the service interruptions they can cause.

The deferred service events feature provides the operator the choice of preventing these service restarts and hook calls from occurring, which can then be resolved at a more opportune time.

See the Deferred service events page in the OpenStack Charms Deployment Guide for an in-depth treatment of this feature.