removed by a human or other system. If we only reconcile in one direction, we will never fix it! We need to observe that the underlying state has changed and re-assert the state we want.
it owns and which it doesn’t. HOW to do that depends on the API. Examples: • Special name prefixes • Metadata (labels, tags, description) • Controller-specific checkpoints
This pattern is found in almost every case where Kubernetes layers on top of some other API. Examples: • Cloud load-balancers for Services & Ingress • Cloud disks for PersistentVolumes • iptables rules for Services • Running containers for Pods
While every controller should strive for complete reconciliation, sometimes the underlying API makes it very hard or expensive or even just impossible. :(
amount of “you broke it, you bought it”. If a user deletes the ShapeRef or removes the finalizer or edits the underlying metadata, the linkage can be broken. You broke it, you get to keep the pieces.