Updating Contrail Networking using Zero Impact Upgrade Procedure in a Canonical Openstack Multi-model Deployment with Juju Charms
This document provides the steps needed to update a Contrail Networking deployment that is using Canonical Openstack Multi-model as it’s orchestration platform. The procedure utilizes Juju charms and provides a zero impact upgrade (ZIU) with minimal disruption to network operations.
Prerequisites
This document makes the following assumptions about your environment:
A Contrail Networking deployment using Canonical Openstack Multi-model as the orchestration platform is already operational.
Juju charms for Contrail services are active in your environment, and the Contrail Networking controller has access to the Juju jumphost and the Juju cluster.
When to Use This Procedure
This procedure is used to upgrade Contrail Networking when it is running in environments using Canonical Openstack Multi-model.
You can use this procedure to incrementally upgrade to the next main Contrail Networking release only. This procedure is not validated for upgrades between releases that are two or more releases apart.
The procedure in this document has been validated for the following Contrail Networking upgrade scenarios:
Starting Contrail Networking Release |
Target Upgraded Contrail Networking Release |
---|---|
21.4.L2 Release |
21.4.L3 Release |
Recommendations
We strongly recommend performing the following tasks before starting this procedure:
Backup your current environment.
Enable huge pages for the kernel-mode vRouter.
Huge pages in Contrail Networking are used primarily to allocate flow and bridge table memory within the vRouter. Huge pages for kernel-mode vRouters provide enough flow and bridge table memory to avoid compute node reboots to complete future Contrail Networking software upgrades.
We recommend allotting 2GB of memory—either using the default 1024x2MB huge page size setting or the 2x1GB size setting—for huge pages. Other huge page size settings should only be set by expert users in specialized circumstances.
A compute node reboot is required to initially enable huge pages. Future compute node upgrades can happen without reboots after huge pages are enabled. The 1024x2MB huge page setting is configured by default starting in Contrail Networking Release 2005, but is not active in any compute node until the compute node is rebooted to enable the setting.
2GB and 1MB huge page size settings cannot be enabled simultaneously in environments using Juju.
The huge page configurations can be changed by entering one of the following commands:
Enable 1024 2MB huge pages (Default): juju config contrail-agent kernel-hugepages-2m=1024
Disable 2MB huge pages (empty value): juju config contrail-agent kernel-hugepages-2m=““
Enable 2 1GB huge pages: juju config contrail-agent kernel-hugepages-1g=2
Disable 1GB huge pages (default. empty value): juju config contrail-agent kernel-hugepages-1g=““
Note:1GB huge page settings can only be specified at initial deployment; you cannot modify the setting in active deployments. The 1GB huge page setting can also not be completely disabled after being activated on a compute node. Be sure that you want to use 1GB huge page settings on your compute node before enabling the setting.
Updating Contrail Networking in a Canonical Openstack Multi-model Deployment Using Juju Charms
Before updating Contrail Networking in a Canonical Openstack Multi-model Deployment, you are required to prepare the multi-model setup.
Preparing Multi-model Setup
You can initiate the creation of multi-model setup during Juju bootstrap and specify the multi-model name with --add-model parameter. Let the initial model be called as 'openstack'. Perform the following steps to prepare the multi-model setup:
-
Add 'openstack' model for Kubernetes.
juju add-model openstack
-
Deploy Contrail-Openstack bundle for openstack model.
juju -m openstack deploy ./openstack_bundle.yaml
-
Add 'kubernetes' model for Kubernetes.
juju add-model k8s
-
Deploy k8s bundle.
juju -m k8s deploy ./k8s_bundle.yaml
-
Add offer for contrail-controller and keystone (if you are using keystone authorization for k8s).
juju -m k8s offer openstack.tf-controller:contrail-controller juju -m k8s offer openstack.keystone:identity-credentials
If easyrsa is implemented in Openstack model, then run the following command:
juju -m k8s offer openstack.easyrsa:client
-
Add relations to contrail-openstack.
juju -m k8s add-relation tf-kubernetes-master openstack.tf-controller juju -m k8s add-relation tf-agent openstack.tf-controller juju -m k8s add-relation kubernetes-master openstack.keystone
If easyrsa is implemented in Openstack model, then run the following commands:
juju -m k8s add-relation tf-kubernetes-master openstack.easyrsa juju -m k8s add-relation tf-agent openstack.easyrsa juju -m k8s add-relation kubernetes-master openstack.easyrsa juju -m k8s add-relation etcd openstack.easyrsa
Zero Impact Upgrade Procedure for Multi-model Deployment
To update Contrail Networking in an environment that is using Canonical Openstack Multi-model as the orchestration platform: