This document applies to the HEAD of the calico-containers source tree.
View the calico-containers documentation for the latest release here.
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). Seecalico_node
directory for details.calicoctl
: the command line tool used for starting acalico/node
container, configuring Calico policy, adding and removing containers in a Calico network via orchestration tools, and managing certain network and diagnostic administration. Seecalicoctl
directory for implementation of calicoctl. This directory also contains acalico/build
Docker image which is used to build thecalicoctl
binary.calico/test
: the Docker image used for running both UTs and STs testing Calico with Docker. Thecalico_test
directory contains the Docker file and associated files for thecalico/test image
. This includes a set of utility Python files for running STs. This image is used by the calico-containers STs and UTs.- 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. See thetests
directory for the UT and ST codebase. Also see theMakefile
for details on how the STs (make st
) and UTs (make ut
) are run using thecalico/test
image. - Documentation for using Calico in a containerized environment. See
main README.md, and
docs
directory. - Release scripts used to validate our documentation and to cut a new branch
for a specific release. See
release-scripts
directory for details.
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: 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 thecalico/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 thecalicoctl
Python codebase.
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.