Upgrading Calico on OpenStack

Calico package update

This page describes how to upgrade to v3.9 from Calico v3.0 or later. The procedure varies by Linux distribution.

Important: Do not use older versions of calicoctl after the upgrade. This may result in unexpected behavior and data.

Upgrading an OpenStack cluster based on CentOS

  1. On all nodes, change the location of the Calico packages to point to the v3.9 repo:

    sudo sed -i 's/calico-X.X/calico-Y.Y/g' /etc/yum.repos.d/calico.repo
    

    Replace X.X in the above command with the version you’re upgrading from (must be v3.0 or later). Replace Y.Y with the version of the release you’re upgrading to. Example: if you are upgrading from v3.1 to v3.5, replace X.X with 3.1 and replace Y.Y with 3.5.

  2. On all compute nodes, update packages:
    sudo yum update
    

    We recommend upgrading the whole distribution as shown here. In case you prefer to upgrade particular packages only, those needed for a Calico compute node are the following.

    • calico-common
    • calico-compute
    • calico-dhcp-agent
    • calico-felix
    • dnsmasq
    • networking-calico
    • openstack-neutron
    • openstack-nova-api
    • openstack-nova-compute

  3. Use the following command on the compute nodes to confirm that Felix has upgraded to v3.9.
    calico-felix --version
    

    It should return v3.9.

  4. On all compute nodes, add the following line to the end of /etc/calico/felix.cfg:
    DatastoreType = etcdv3
    

    If you need to change the EtcdEndpoints address (e.g. because you’ve installed a new etcdv3 cluster rather than upgrading your existing etcdv2 cluster), you should update the EtcdEndpoints addresses in /etcd/calico/felix.cfg at this point.

  5. On all control nodes, update packages:
    sudo yum update
    

    We recommend upgrading the whole distribution as shown here. In case you prefer to upgrade particular packages only, those needed for a Calico control node are the following.

    • calico-common
    • calico-control
    • networking-calico
    • openstack-neutron

  6. On all control nodes, restart neutron-server:
    sudo systemctl restart neutron-server
    
  7. If you ran calico-upgrade earlier to migrate non-openstack data, on the control node run:
    calico-upgrade complete
    
  8. Remove any existing calicoctl instances and install the new calicoctl.

  9. Congratulations! You have upgraded to Calico v3.9.

Upgrading an OpenStack cluster based on Ubuntu

  1. On all nodes, change the location of the Calico packages to point to the v3.9 repo:

    sudo bash -c 'cat > /etc/apt/sources.list.d/project-calico-calico-X_X-trusty.list' << EOF
    deb http://ppa.launchpad.net/project-calico/calico-X.X/ubuntu trusty main
    # deb-src http://ppa.launchpad.net/project-calico/calico-X.X/ubuntu trusty main
    EOF
    

    Replace X_X and X.X with the version you’re upgrading to. Example: if you’re upgrading to v3.5, replace X_X with 3_5 and replace X.X with 3.5. Also replace trusty with the code name of your Ubuntu version.

  2. On all compute nodes, update packages:
    sudo apt-get update
    sudo apt-get install calico-compute calico-felix calico-common \
                         python-etcd networking-calico calico-dhcp-agent
    
    
  3. Use the following command on the compute nodes to confirm that Felix has upgraded to v3.9.
    calico-felix --version
    

    It should return v3.9.

  4. On all compute nodes, add the following line to the end of /etc/calico/felix.cfg:
    DatastoreType = etcdv3
    

    If you need to change the EtcdEndpoints address (e.g. because you’ve installed a new etcdv3 cluster rather than upgrading your existing etcdv2 cluster), you should update the EtcdEndpoints addresses in /etcd/calico/felix.cfg at this point.

  5. On all control nodes, update packages:
    sudo apt-get update
    sudo apt-get install calico-control calico-common python-etcd networking-calico
    
  6. On all control nodes, restart neutron-server:
    sudo service neutron-server restart
    
  7. If you ran calico-upgrade earlier to migrate non-openstack data, on the control node run:
    calico-upgrade complete
    
  8. Remove any existing calicoctl instances and install the new calicoctl.

  9. Congratulations! You have upgraded to Calico v3.9.