Binary install without package manager

    Install Calico directly when a package manager isn’t available, or your provisioning system can easily handle copying binaries to hosts.

    1. Ensure the Calico datastore is up and accessible from the host
    2. Ensure the host meets the minimum
    3. If you want to install Calico with networking (so that you can communicate with cluster workloads), you should choose the container install method
    4. Install kubectl (for Kubernetes datastore) or for etcd3 datastore.

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

    This step requires Docker, but it can be run from any machine with Docker installed. It doesn’t have to be the host you will run it on (i.e your laptop is fine).

    1. Confirm that the image has loaded by typing docker images.

      1. REPOSITORY TAG IMAGE ID CREATED SIZE
      2. calico/node v3.24.5 e07d59b0eb8a 2 minutes ago 42MB
    2. Create a temporary calico/node container.

      1. docker create --name container calico/node:v3.24.5
    3. Delete the temporary container.

      1. docker rm container
    4. Set the extracted binary file to be executable.

      1. chmod +x calico-node

    Copy the binary from Step 1 to the target machine, using any means (scp, ftp, USB stick, etc.).

    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

    • Kubernetes datastore
    • etcd datastore
    • Either datastore

    For a Kubernetes datastore (default) set the following:

    For an etcdv3 datastore set the following:

    Sample EnvironmentFile - save to /etc/calico/calico.env

    Felix should be started at boot by your init system and the init system must be configured to restart Felix if it stops. Felix relies on that behavior for certain configuration changes.

    If your distribution uses systemd, then you could use the following unit file:

    1. Description=Calico Felix agent
    2. After=syslog.target network.target
    3. [Service]
    4. EnvironmentFile=/etc/calico/calico.env
    5. ExecStartPre=/usr/bin/mkdir -p /var/run/calico
    6. ExecStart=/usr/local/bin/calico-node -felix
    7. KillMode=process
    8. Restart=on-failure
    9. LimitNOFILE=32000
    10. [Install]

    Once you’ve configured Felix, start it up via your init system.

    1. service calico-felix start

    You should configure a node resource for each host running Felix. In this case, the database is initialized after creating the first 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.

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