jenkins-x/exposecontroller This controller watches Service definitions, and if it detects an annotation named expose  in the metadata, the controller automatically exposes an Ingress object for external access of the Service. It also removes the Ingress object when someone removes the Service. fabric8/configmapcontroller This is a controller that watches ConfigMap objects for changes and performs rolling upgrades of their associated Deployments. We can use this controller with applications that are not capable of watching the ConfigMap and updating them‐ selves with new configurations dynamically. That is particularly true when a Pod consumes this ConfigMap as environment variables or when your application cannot quickly and reliably update itself on the fly without a restart. In Example 22-2, we implement such a controller with a plain shell script. Container Linux Update Operator This is a controller that reboots a Kubernetes node when it detects a particular annotation on the node. Now let’s take a look at a concrete example: a controller that consists of a single shell script and that watches the Kubernetes API for changes on ConfigMap resources. If we annotate such a ConfigMap with  k8spatterns.io/podDeleteSelector , all Pods selected with the given annotation value are deleted when the ConfigMap changes. Assuming we back these Pods with a high-order resource like Deployment or Repli‐ caSet, these Pods are restarted and pick up the changed configuration. For example, the following ConfigMap would be monitored by our controller for changes and would restart all Pods that have a label  app  with value  webapp . The Con‐ figMap in Example 22-1 is used in our web application to provide a welcome message. Annotation used as selector for the controller in Example 22-2 to find the appli‐ cation Pods to restart Example 22-1. ConfigMap use by web application apiVersion : v1 kind : ConfigMap metadata : name : webapp-config annotations : k8spatterns.io/podDeleteSelector : "app=webapp" data : message : "Welcome to Kubernetes Patterns !" Solution  |  179