So far, we’ve deployed our web service, we’ve created a Unit
to monitor it,
a Reactor
to notify our Ops team and an Inhibitor
to shut down monitoring
during upgrades.
While the Unit
is specific to our web service, the Reactor
and Inhibitor
are
not and could (should) be re-used with other units.
One possible way to do this is through the unit’s labels:
---
apiVersion: kubirds.com/v1
kind: Unit
metadata:
name: check-my-service-access
namespace: default
labels:
app: my-service
notify: "slack"
no-report: "weekend-night-2h"
spec:
# ...
Then, in our Reactor
, instead of using the app
label, we simply do:
---
apiVersion: kubirds.com/v1
kind: Reactor
metadata:
name: notify-slack
namespace: default
spec:
unitSelector:
notify: "slack"
# ...
Finally, we can edit our Inhibitor
as well:
---
apiVersion: kubirds.com/v1
kind: Unit
metadata:
name: upgrade-window-weekend-night-2h
namespace: default
spec:
unitSelector:
no-report: "weekend-night-2h"
# ...
This way, you can define only a few reactors and inhibitors, and your main concern becomes units.