K8s does not store any graph model internally.
The relationship engine in Cyphernetes is comparing fields that should either match/contain all/etc. between two resources - for example a ResplicaSet's .metadata.ownerReferences[].name matches a Deployment's .metadata.name, or a Deployment's .metadata.labels contains all of a Service's spec.selector.
These rules are used both to read the resources but also for creating them. Each rule may also contain a set of default properties which are used in create operations - for instance:
Will create a clusterIp Service (similar to what `kubectl expose` does).
Doing this with kubectl or programmatically without tuning for rate limiting, implementing caching etc. of course fails even at a very small scale - Cyphernetes has its own request throttling and caching layer to make this possible.
fatliverfreddy|1 year ago
These rules are used both to read the resources but also for creating them. Each rule may also contain a set of default properties which are used in create operations - for instance:
`MATCH (d:Deployment {name: "nginx"}) CREATE (d)->(s:Service)`
Will create a clusterIp Service (similar to what `kubectl expose` does).
Doing this with kubectl or programmatically without tuning for rate limiting, implementing caching etc. of course fails even at a very small scale - Cyphernetes has its own request throttling and caching layer to make this possible.