7. Calico architecture as we discussed in my previous slides have following
components:
1) Felix, which is also called the primary Calico agent that runs on each machine
that hosts endpoints.
2) The Orchestrator plugin, orchestrator-specific code that tightly integrates Calico
into that orchestrator.
3) etcd, the data store: In Calico, etcd is used as the data store and communication
mechanism for all the Calico components. This data store contains all the
information the various Calico components require to set up the Calico network.
4) BIRD, which is a BGP client that distributes all the routing information.
BGP Route Reflector (BIRD), is an optional BGP route reflector for higher scale.
8.
9. Felix
Felix is the primary Calico agent also called “the heart of Calico networking “, a
daemon that runs on each machine that provides endpoints: in most cases that
means on nodes that host containers or VMs.
It’s main job is programming routes and ACLs into the Linux kernel, and anything
else required on the host, by instructing the host to respond to ARPs for workloads
in order to provide the desired connectivity for the endpoints on that host.
It also programs interface information to the kernel for outgoing endpoint traffic.
10. Orchestrator Plugin
In Calico there are separate plugins for each major cloud orchestration platform
(e.g. OpenStack, Kubernetes) and no separate orchestration plugin available. What
these plugins does is to bind Calico more tightly into the orchestrator so that it
allows users to manage the Calico network just as they’d manage network tools
that were built into the orchestrator.
An example of an orchestrator plugin is the Calico Neutron ML2 mechanism driver
that integrates with Neutron’s ML2 plugin, and helps users to configure the Calico
network by making Neutron API calls.
The plugin’s primary job is to translate those APIs into Calico’s data-model and then
store it in Calico’s datastore.
11. etcd
In Calico, etcd is used as the data store and communication mechanism for all the
Calico components. This data store contains all the information the various Calico
components require to set up the Calico network.
etcd which is a distributed key-value store focus on consistency and Calico uses
etcd to provide the communication between components and as a consistent data
store.
Calico can always build an accurate network and etcd component is distributed
across the entire deployment. It is divided into two groups of machines: the core
cluster, and the proxies.
etcd stores the data for the Calico network in a distributed, consistent, fault-
tolerant manner.
Calico focuses on the following major object types, stored in etcd:
endpoints, security profiles, security policies
12. BGP Client (BIRD)
In Calico, BIRD is an open source BGP client or BGP component that is used to
exchange routing information between hosts.
In other words, though any BGP client, that can draw routes from the kernel and
distribute them is suitable in this role. The routes that Felix programs into the
kernel for endpoints are picked up by BIRD and distributed to BGP peers on the
network, which gives an incredible advantage of inter-host routing.
Generally in larger deployments, Calico will deploy a BGP route reflector a full mesh
of BGP peerings between each of our Calico nodes that acts as a central point to
which the BGP clients connect, also preventing them from needing to talk to every
single BGP client in the cluster.
Calico add BIRD protocol stack to provide additional features.
BIRD can be installed as :
13. Hope you like the detailed discussion. For more updates and inner discussion, I will
publish in my next slides.
14. For more information visit
https://www.projectcalico.org/
https://docs.projectcalico.org/v2.6/introduction/
https://blog.tigera.io/tagged/calico