Calico Repositories

The calico-containers repository

This respository contains the following:

  • calico/node: the Docker image used to run the Calico Felix agent (responsible for IP routing and ACL programming) and a BIRD BGP agent (for distributing routes between hosts). See calico_node directory for details.
  • calicoctl: the command line tool used for starting a calico/node container, configuring Calico policy, adding and removing containers in a Calico network via orchestration tools, and managing certain network and diagnostic administration. See calicoctl directory for implementation of calicoctl. This directory also contains a calico/build Docker image which is used to build the calicoctl binary.
  • UTs testing calicoctl, STs testing single host and multihost systems using calicoctl and calico/node to create Calico networked containers. These tests run within the calico/test Docker image. for the UT and ST codebase. Also see the Makefile for details on how the STs (make st) and UTs (make ut) are run using the calico/test image.
  • Release scripts used to validate our documentation and to cut a new branch for a specific release.

It pulls together a number of related repositories that provide subsets of function for running Calico in a containerized environment. These related respositories are listed below.

Calico Libraries

  • calico: This repo contains the implementation of Felix which is the heart of Calico networking. Felix interfaces with the Linux kernel to configure routes and ACLs that control network policy connectivity. In calico/node, Felix runs as a separate process. It is installed directly into the calico/node image.

  • libcalico: Contains a variety of helper methods and classes for manipulating the Calico data in an etcd datastore, IP address management and useful namespace utilities to manipulating container interfaces. The libcalico library is used by calicoctl. It is imported as a standard Python library into the calicoctl Python codebase. libcalico also contains the calico/test Docker image used for running both UTs and STs testing Calico with Docker.

Calico Orchestrator Integration Plugins

There are several integrations available for Calico in a containerized environment. The repositories below hold the plugin code for these integrations.

  • calico-mesos: Implements the Calico plugin for running Calico with the mesos orchestrator. This plugin may be installed manually (from a binary attached to a relase), or as an RPM which can be created.

  • calico-cni: Implements the Calico plugin for running Calico with any orchestrator that uses the Container Network Interface, including rkt and Kubernetes

  • libnetwork-plugin: Implements Calico plugin support for the (libnetwork based) Docker networking plugin. It provides both network and IPAM drivers which may be used when creating networks through Docker. The driver is built as a Docker image (available on DockerHub). When Calico node is started with the --libnetwork flag, a separate container is launched running the driver.