Performing a minor update

Preparing for a minor update

  1. In this lab we will perform an update of edpm-compute0 compute node. We need to create 2 files include a set of OpenStackDataPlaneNodeSet custom resources (CRs):

    • openstack-edpm-update-ovn.yaml - You use this file to update your OVN services. You must update OVN services before the OpenStack Operator can begin the automatic update of the remaining control plane services.

    • openstack-edpm-update-services.yaml- You use this file to update the remaining control plane packages, services, and container images on the data plane nodes.

Update the OpenStack Operator

In this lab we have installed the OpenStack operators using manually approved. So, to manually approving a pending Operator update, follow these steps: . List the available ClusterServiceVersion for an operator:

oc get csv -n openstack-operators
Sample Output
oc get csv -n openstack-operators
NAME                                    DISPLAY                        VERSION               REPLACES                              PHASE
barbican-operator.v1.0.5                Barbican Operator              1.0.5                 barbican-operator.v1.0.4              Succeeded
cinder-operator.v1.0.5                  Cinder Operator                1.0.5                 cinder-operator.v1.0.4                Succeeded
designate-operator.v1.0.5               Designate Operator             1.0.5                 designate-operator.v1.0.4             Succeeded
glance-operator.v1.0.5                  Glance Operator                1.0.5                 glance-operator.v1.0.4                Succeeded
heat-operator.v1.0.5                    Heat Operator                  1.0.5                 heat-operator.v1.0.4                  Succeeded
horizon-operator.v1.0.5                 Horizon Operator               1.0.5                 horizon-operator.v1.0.4               Succeeded
infra-operator.v1.0.5                   OpenStack Infra                1.0.5                 infra-operator.v1.0.4                 Succeeded
ironic-operator.v1.0.5                  Ironic Operator                1.0.5                 ironic-operator.v1.0.4                Succeeded
keystone-operator.v1.0.5                Keystone Operator              1.0.5                 keystone-operator.v1.0.4              Succeeded
manila-operator.v1.0.5                  Manila Operator                1.0.5                 manila-operator.v1.0.4                Succeeded
mariadb-operator.v1.0.5                 MariaDB Operator               1.0.5                 mariadb-operator.v1.0.4               Succeeded
metallb-operator.v4.16.0-202412170135   MetalLB Operator               4.16.0-202412170135                                         Succeeded
neutron-operator.v1.0.5                 Neutron Operator               1.0.5                 neutron-operator.v1.0.4               Succeeded
nova-operator.v1.0.5                    Nova Operator                  1.0.5                 nova-operator.v1.0.4                  Succeeded
octavia-operator.v1.0.5                 Octavia Operator               1.0.5                 octavia-operator.v1.0.4               Succeeded
openshift-gitops-operator.v1.15.0       Red Hat OpenShift GitOps       1.15.0                openshift-gitops-operator.v1.12.0     Succeeded
openstack-baremetal-operator.v1.0.5     OpenStack Baremetal Operator   1.0.5                 openstack-baremetal-operator.v1.0.4   Succeeded
openstack-operator.v1.0.5               OpenStack                      1.0.5                 openstack-operator.v1.0.4             Succeeded
ovn-operator.v1.0.5                     OVN Operator                   1.0.5                 ovn-operator.v1.0.4                   Succeeded
placement-operator.v1.0.5               Placement Operator             1.0.5                 placement-operator.v1.0.4             Succeeded
rabbitmq-cluster-operator.v1.0.5        RabbitMQ Cluster Operator      1.0.5                 rabbitmq-cluster-operator.v1.0.4      Succeeded
swift-operator.v1.0.5                   Swift operator                 1.0.5                 swift-operator.v1.0.4                 Succeeded
telemetry-operator.v1.0.5               Telemetry Operator             1.0.5                 telemetry-operator.v1.0.4             Succeeded

Manually approve the update:

oc get installplan -n openstack-operators
Sample Output
NAME            CSV                      APPROVAL   APPROVED
install-9wrs7   cinder-operator.v1.0.6   Manual     false
install-m76bj   infra-operator.v1.0.5    Manual     true

Find and approve the pending InstallPlan:

oc patch installplan <installplan-name> -n openstack-operators --type merge --patch '{"spec": {"approved": true}}'

This will approve the Operator update, and OpenShift will proceed with the update of the OpenStack Operators.

Explore the file OpenStackDataPlaneNodeSet to update OVN service

In the bastion terminal, make sure that you are in lab yamls directory:

cd labrepo/content/files

Visualize the file openstack-edpm-update-ovn.yaml to understand better the servicesOverride functionality to apply just the ovn OpenStackDataplaneService:

cat openstack-edpm-update-ovn.yaml
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneDeployment
metadata:
  name: edpm-deployment-ipam-ovn-update
spec:
  nodeSets:
    - openstack-edpm-ipam
  servicesOverride:
    - ovn

Explore the file OpenStackDataPlaneNodeSet to update remaining services of the data plane

Visualize the file openstack-edpm-update-services.yaml:

cat openstack-edpm-update-services.yaml
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneDeployment
metadata:
  name: edpm-deployment-ipam-update-dataplane-services
spec:
  nodeSets:
    - openstack-edpm-ipam
  servicesOverride:
    - update

Performing a minor update

To update your Red Hat OpenStack Services on OpenShift (RHOSO) 18.0 environment to the latest maintenance release, perform the following tasks:

  1. Update OVN services on the control plane.

  2. Update OVN services on the data plane.

  3. Wait for the OpenStack Operator to complete the automatic update of the remaining control plane packages, services, and container images.

  4. Update the remaining services on the data plane.

Updating OVN services on the control plane

Get the OpenStackVersion to identify the target version to be installed:

oc get openstackversion -n openstack
Sample Output
NAME                                 TARGET VERSION      AVAILABLE VERSION   DEPLOYED VERSION
openstack-galera-network-isolation   18.0.3-20241126.2   18.0.4-20250106.2   18.0.3-20241126.2

Update the target version in the OpenStackVersion custom resource (CR) to point to the version that you want to install. After you update the target version, the OVN service update on the control plane begins automatically.

  1. Create a patch file for the OpenStackVersion CR on your workstation, for example, openstackversionpatch.yaml

    cat <<EOF >openstackversionpatch.yaml
       "spec": {
         "targetVersion": 18.0.4-20250106.2
         }
    EOF

Note: Replace targetVersion field with the target version you want to install, for example, 18.0.3-20241126.2

  1. Patch the OpenStackVersion CR:

    oc patch openstackversion openstack-galera-network-isolation --type=merge --patch-file openstackversionpatch.yaml
  2. Verify that the OVN services are updated on the control plane

    oc wait openstackversion openstack-galera-network-isolation --for=condition=MinorUpdateOVNControlplane  --timeout=20m

Updating OVN services on the data plane

  1. To update OVN services on the data plane, create an OpenStackDataPlaneDeployment custom resource (CR) with the openstack-edpm-update-ovn.yaml file:

    oc create -f openstack-edpm-update-ovn.yaml
  2. Verify that the data plane update deployment succeeded:

    oc wait openstackversion openstack-galera-network-isolation --for=condition=MinorUpdateOVNDataplane --timeout=20m
  3. Check if the update deployment is completed

  4. Sample output

oc get openstackdataplanedeployment
NAME             			     STATUS  MESSAGE
edpm-deployment-ipam-ovn-update              True  Setup Complete

Updating the remaining services on the data plane

When the OVN service is updated on the control plane and data plane, and the OpenStack Operator has completed the automatic update of the remaining control plane packages, services, and container images, you must update the remaining services on the data plane

  1. Wait until all control plane services are updated:

    oc wait openstackversion openstack-galera-network-isolation --for=condition=MinorUpdateControlplane --timeout=20m
  2. To update the remaining services on the data plane, create an OpenStackDataPlaneDeployment custom resource (CR) with the openstack-edpm-update-services.yaml file:

    oc create -f openstack-edpm-update-services.yaml
  3. Verify that the data plane update deployment succeeded:

    oc wait openstackversion openstack-galera-network-isolation --for=condition=MinorUpdateDataplane --timeout=20m
  4. Check if the update deployment is completed

  5. Sample output

oc get openstackdataplanedeployment
NAME             			     STATUS  MESSAGE
edpm-deployment-ipam-ovn-update              True  Setup Complete

Rebooting the nodes

You can reboot your Compute nodes any time after you complete the minor update. You check which updated nodes require a reboot first, and then specify them in an OpenStackDatPlaneDeployment custom resource (CR) to start the reboot. Until after the reboot, your environment still uses the old kernel and Open vSwitch (OVS) for data plane development kit (DPDK) implementations.

To ensure minimal downtime of instances in your Red Hat OpenStack Services on OpenShift (RHOSO) environment, you should migrate the instances from the Compute node that you need to reboot.

  1. Review and understand the OpenStackDataPlaneDeployment to reboot the nodes:

    cat openstack-edpm-reboot.yaml
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneDeployment
metadata:
  name: openstack-edpm-ipam-reboot
  namespace: openstack
spec:
  nodeSets:
    - openstack-edpm-ipam
  servicesOverride:
  - reboot-os
  ansibleExtraVars:
    edpm_reboot_strategy: force
  ansibleLimit:
    - edpm-compute-0.aio.example.com
  1. Apply the openstack-edpm-ipam-reboot.yaml OpenStackDataPlaneDeployment:

    oc create -f openstack-edpm-reboot.yaml
  2. Verify that the openstack-edpm-ipam-reboot deployment completed:

    oc get openstackdataplanedeployment
    NAME                                    STATUS   MESSAGE
    openstack-edpm-deployment-ipam-reboot   True     Setup complete