Skip to main content
Version: 3.28 (latest)

Binary install with package manager

Big picture

Install Calico on non-cluster hosts using a package manager.


Packaged binaries of Calico are easy to consume and upgrade. This method automatically configures the init system to keep Felix running.

Before you begin...

  1. Ensure the Calico datastore is up and accessible from the host
  2. Ensure the host meets the minimum system requirements
  3. If your system is not an Ubuntu- or RedHat-derived system, you will need to choose a different install method.
  4. If you want to install Calico with networking (so that you can communicate with cluster workloads), you should choose the container install method
  5. Install kubectl (for Kubernetes datastore) or Install and configure calicoctl for etcd3 datastore.

How to

This guide covers installing Felix, the Calico daemon that handles network policy.

Step 1: Install binaries

PPA requires: Ubuntu 14.04 or 16.04

sudo add-apt-repository ppa:project-calico/calico-3.28
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install calico-felix

RPM requires: RedHat 7-derived distribution

cat > /etc/yum.repos.d/calico.repo <<EOF
name=Calico Repository

yum install calico-felix

Until you initialize the database, Felix will make a regular log that it is in state "wait-for-ready". The default location for the log file is /var/log/calico/felix.log.

Step 2: Configure the datastore connection

Use the following guidelines and sample file to define the environment variables for starting Calico on the host. For more help, see the Felix configuration reference

For a Kubernetes datastore (default) set the following:

VariableConfiguration guidance
KUBECONFIGPath to kubeconfig file to access the Kubernetes API Server

Modify the included init system unit to include the EnvironmentFile. For example, on systemd, add the following line to the [Service] section of the calico-felix unit.


Step 3: Initialize the datastore

You should configure a node resource for each host running Felix. In this case, the database is initialized after creating the first node resource. For a deployment that does not include the Calico/BGP integration, the specification of a node resource just requires the name of the node; for most deployments this will be the same as the hostname.

calicoctl create -f - <<EOF
- apiVersion:
kind: Node
name: <node name or hostname>

The Felix logs should transition from periodic notifications that Felix is in the state wait-for-ready to a stream of initialization messages.