Skip to content

matthewdupre/calico-containers

 
 

Repository files navigation

Build Status CircleCI branch Docker Pulls

Slack Status IRC Channel

Calico for Containers

Calico provides a highly scalable networking solution for connecting data center workloads (containers, VMs, or bare metal). It is based on the same scalable IP networking principles as the internet: providing connectivity using a pure Layer 3 approach. Calico can be deployed without encapsulation or overlays to provide high performance at massive scales.

Read more about it on the Project Calico website.

When using Calico networking in containerized environments, each container gets its own IP and fine grain security policy. A calico-node service runs on each node which handles all of the necessary IP routing, installation of policy rules, and distribution of routes across the cluster of nodes.

This repository contains:

  • The calico/node container Dockerfile and build environment. It contains the configuration and "glue" that pull together four separate processes to provide Calico networking:
  • Felix, the Calico worker process
  • BIRD, the route distribution process (there are separate processes for IPv4 and IPv6)
  • Confd, a templating process to auto-generate configuration for BIRD
  • A command line tool, calicoctl, which makes it easy to configure and start the Calico service listed above, and allows you to interact with the datastore (etcd) to define and apply rich security policy to the containers you create.

Please refer to our main documentation for details on deploying Calico and using calicoctl.

Common set-up

Assuming you have already installed go version 1.7.1+, perform the following simple steps to get building:

git clone git@github.com:projectcalico/calico-containers.git $GOPATH/src/github.com/projectcalico/calico-containers
  • Switch to your project directory:
cd $GOPATH/src/github.com/projectcalico/calico-containers
  • Populate the vendor/ directory in the project's root with this project's dependencies:
glide install

Building calicoctl

Non-release build

To do a quick, non-release build of calicoctl, suitable for local testing, run

make bin/calicoctl

The binary will be put in ./bin:

./bin/calicoctl --help

Release build

For releases, we use a Docker-based build to ensure a clean environment with an appropriate glibc. Specifically, we use a CentOS 6.6 container image to build against glibc v2.12. this ensures compatibility with any later glibc.

To do a release build, run:

make release/calicoctl

The binary will be emitted to ./release/calicoctl-<version>

About

Project Calico deployed in a containerized environment

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 73.2%
  • Python 12.6%
  • Makefile 11.3%
  • Shell 2.9%