This project contains alternative versions of client-go concepts - Stores
, Indexers
, ThreadSafeStores
, Reflectors
and possibly Informers
backed by lightweight SQLite databases.
For a gentle introduction on client-go's basic projects see this excellent guide.
The aim is to allow memory-efficient and still fast enough contstructs when dealing with large Kubernetes installations with hundreds of thousands of resources and more.
Additionally, SQLite make it easier to develop custom sorting, filtering, pagination, aggregation and so on - eg. to build GUIs.
sqlcache.NewStore
returns a SQLite-backed cache.Store instance that passes client-go's unit testssqlcache.NewIndexer
returns a SQLite-backed cache.Indexer instance that passes client-go's unit testssqlcache.NewThreadSafeStore
returns a SQLite-backed cache.NewThreadSafeStore instance that passes client-go's unit testssqlcache.NewVersionedIndexer
returns a SQLite-backed cache.Indexer instance that keeps track of past versions of resourcessqlcache.NewListOptionIndexer
returns a SQLite-backed cache.Indexer instance that can satisfy a Rancher steve's ListOptions query object- it is possible to set up a
Reflector
to populate aListOptionIndexer
from a Kubernetes API, seeexamples/reflector/main.go
for an example - it is possible to set up a
SharedIndexInformer
to populate aListOptionIndexer
from a Kubernetes API, seeexamples/informer/main.go
for an example
Next steps:
- try to integrate in steve
- add garbage collector
This project has originated in SUSE HackWeek.