Upgrade Calico on OpenStack
Calico package update
This page describes how to upgrade to v3.25 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
-
On all nodes, change the location of the Calico packages to point to the v3.25 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). ReplaceY.Y
with the version of the release you’re upgrading to. Example: if you are upgrading from v3.1 to v3.5, replaceX.X
with3.1
and replaceY.Y
with3.5
. - 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
- Use the following command on the compute nodes to confirm that Felix has upgraded to v3.25.
calico-felix --version
It should return
v3.25
. - 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. - 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
- On all control nodes, restart
neutron-server
:sudo systemctl restart neutron-server
- If you ran
calico-upgrade
earlier to migrate non-openstack data, on the control node run:calico-upgrade complete
-
Remove any existing
calicoctl
instances and install the newcalicoctl
. - Congratulations! You have upgraded to Calico v3.25.
Upgrading an OpenStack cluster based on Ubuntu
-
On all nodes, change the location of the Calico packages to point to the v3.25 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
andX.X
with the version you’re upgrading to. Example: if you’re upgrading to v3.5, replaceX_X
with3_5
and replaceX.X
with3.5
. Also replacetrusty
with the code name of your Ubuntu version. - 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
- Use the following command on the compute nodes to confirm that Felix has upgraded to v3.25.
calico-felix --version
It should return
v3.25
. - 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. - On all control nodes, update packages:
sudo apt-get update sudo apt-get install calico-control calico-common python-etcd networking-calico
- On all control nodes, restart
neutron-server
:sudo service neutron-server restart
- If you ran
calico-upgrade
earlier to migrate non-openstack data, on the control node run:calico-upgrade complete
-
Remove any existing
calicoctl
instances and install the newcalicoctl
. - Congratulations! You have upgraded to Calico v3.25.