Writing kcp-aware controllers
Keys for objects in listers/indexers
When you need to get an object from a kcp-aware lister or an indexer, you can't just pass the object's name to the
Get() function, like you do with a typical controller targeting Kubernetes. Projects using kcp's copy of client-go
are using a modified key function.
Here are what keys look like for an object foo for both cluster-scoped and namespace-scoped varieties:
| Organization | Workspace | Logical Cluster | Namespace | Key | 
|---|---|---|---|---|
| - | - | root | - | root | 
| - | - | root | default | default/root | 
| root | my-org | root:my-org | - | root:my-org | 
| root | my-org | root:my-org | default | default/root:my-org | 
| my-org | my-workspace | my-org:my-workspace | - | my-org:my-workspace | 
| my-org | my-workspace | my-org:my-workspace | default | default/my-org:my-workspace | 
Encoding/decoding keys
Use the github.com/kcp-dev/apimachinery/pkg/cache package to encode and decode keys.