Ownership chain

This process creates a GroupOwner resource per each resource group specified in the parent GlobalOwner resource spec.

Process

The process of setting up ownership chain consists of 2 parts.

When the bootstrap process finishes, each created CompositeController is creating a GroupOwner resource replica from the parents GlobalOwner children resource group.

Each of the created GroupOwner resources have a label matching the CompositeController label selector, for narrowing down the adopted resources to the target GroupOwner object. Secrets owned by the Secret group owner.

Once all of the GroupOwner resources are created, the controller is setting ownership references between the GroupOwner resources. This (in the best case scenario - see the issue) allows the removal process to fully rely on the kubernetes garbage collection by using foreground cascading deletion finalizer on the GroupOwner resource. More in the design document.