Calico for OpenStack
Calico's integration with OpenStack involves the following software components.
-
etcd, providing a distributed key/value database that is accessible from all compute hosts and Neutron servers.
-
Felix (the Calico agent) running on each compute host. Felix reads information from etcd that specifies workloads and their properties (IP addresses, security etc.), and implements that connectivity and security for them. Felix also reports its own agent status, and the programming status for each workload, through etcd.
-
BIRD, or some equivalent routing daemon, also running on each compute host, to propagate local workload routes to other compute hosts and infrastructure routers.
-
The Calico driver for Neutron, that runs as part of the Neutron server on each machine where the Neutron server runs. (There can be just one Neutron server, but typically there are more, to provide higher availability.) This driver handles OpenStack network, subnet, instance and security operations and translates them into equivalent etcd data for Felix to implement. It also reads the agent and per-port status information that Felix writes into etcd, and reports this into the Neutron DB.
-
The Calico DHCP agent, running on each compute host, that configures and launches Dnsmasq instances to provide DHCP for the locally hosted workloads. Architecturally this fills the same role as the reference Neutron DHCP agent; the key difference is that it gets its information from Etcd instead of by RPC from the Neutron server, as we have found this to be more scalable.
Some of these pieces are Calico deliverables. Others must be provisioned separately, as explained by the following table.
| Component | Provisioning |
|---|---|
| etcd | Must be provisioned by the user before installing Calico deliverables. Typically now covered by OpenStack install - see https://docs.openstack.org/install-guide/environment-etcd.html. |
| Felix | Calico deliverable, provided by the calico-felix package. |
| BIRD (or equivalent) | Must be provisioned and configured by the user. See guidance on our install pages. |
| Calico driver for Neutron | Calico deliverable, provided by the calico-control package. |
| Calico DHCP agent | Calico deliverable, provided by the calico-dhcp-agent package. |
From an OpenStack point of view, Calico is just one of many possible Neutron drivers that provide connectivity between instances (VMs) as specified by the Neutron API. Refer to Calico's interpretation of Neutron API calls for more detail about the parts of the Neutron API that Calico provides.