Yaook Disruption Budget

Yaook Disruption Budgets allow you to tune the automated updating of nova and neutron agents. Per default yaook will update/evacuate one agent at a time to roll out a given change. However if you have a large deployment this might take a long time and you might want to parallelize this behaviour.

Assume you have the following setup: * 200 compute nodes in providing services to the same host aggregate. To rollout changes fast up to 10% of these should update at the same time * 10 compute nodes serving some special host aggregate. Yaook should never automatically update these (maybe because it is currently not possible to live-migrated nested-virtualization machines) * 6 network nodes providing neutron ovn agents for gateways. Yaook should update them one-by-one

To do this you could create the following YaookDisruptionBudgets.

# NOTE: This file serves as an example only!
# It demonstrates a subset of the API features which are available and
# is NOT FIT FOR PRODUCTIVE USE. You need to adapt them to your
# specific environment, needs and scale.
# DO NOT DEPLOY THIS FILE WITH THE EXPECTATION THAT YOU WILL GET A
# YAOOK DEPLOYMENT FIT FOR ANY USE EXCEPT LOOKING AT IT.
---
apiVersion: yaook.cloud/v1
kind: YaookDisruptionBudget
metadata:
  name: large-group-of-hypervisors
  namespace: yaook
spec:
  maxUnavailable: 10%
  nodeSelectors:
  - matchLabels:
      this.label.identifies: the-nodes-hosting-the-large-group-of-hypervisors
---
apiVersion: yaook.cloud/v1
kind: YaookDisruptionBudget
metadata:
  name: special-group-of-hypervisors
  namespace: yaook
spec:
  maxUnavailable: 0
  nodeSelectors:
  - matchLabels:
      this.label.identifies: the-nodes-hosting-the-special-group-of-hypervisors
---
apiVersion: yaook.cloud/v1
kind: YaookDisruptionBudget
metadata:
  name: network-nodes
  namespace: yaook
spec:
  maxUnavailable: 1
  nodeSelectors:
  - matchLabels:
      network.yaook.cloud/whatever-you-use-for-neutron-ovn-gateways: true
...

The operators will write to the status field of the YaookDisruptionBudgets. You can use this to find out the state of a rollout of changes or how many nodes are matching a given disruption budget.