k3s-io / kine

Run Kubernetes on MySQL, Postgres, sqlite, dqlite, not etcd.
Apache License 2.0
1.64k stars 239 forks source link

Any special consideration of Implementing PutRequest? #125

Closed Steamgjk closed 2 years ago

Steamgjk commented 2 years ago

https://github.com/k3s-io/kine/blob/27bd5e740946e0f1e9faeb83d594fb854180a1d4/pkg/server/kv.go#L100-L102

Hi, @brandond

I am reading the code of Kine and I notice Put operation is not implemented. I know you can do write ops by using Txn, which is already implemented in Kine. I am just curious about the reason for not implementing Put. (1) Is there any special challenge in implementing Put? Or (2) is it just because the Txn implementation is already sufficient, i.e. KubeAdm will never call single put?

Thanks

brandond commented 2 years ago

Correct, kubernetes uses transactions on all create/update/delete operations. Since Kine doesn't implement all of the etcd RPCs, just those necessary for use as a kubernetes etcd datastore, the non-transactional operations are intentionally not implemented.