-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Spike] Possiblity to deploy flagd as a grpc sync server #411
Comments
My initial observations are as below,
With this background, I am leaning toward a dedicated project focusing on server implementation. The simple reason is the limited benefit we will gain by building the server into flagd itself. cc @beeme1mr @toddbaert @james-milligan @skyerus [1] - https://github.com/open-feature/flagd/blob/main/pkg/sync/isync.go |
The alternative approach is to avoid internal caching - the store altogether. Then make the "server" focus only on K8s CRDs, resolving permission-related concerns of flagd. Consider the following, If flagd-server only acts as a "proxy" to K8s resources, making it the only workload that requires elevated K8s API access and combining that with the "no-store" (no parsing of flag definitions), we should have a simple implementation. |
Consider the following options from POC onwards,
|
I have concerns regarding the Single and Multi implementations, in both of these examples the flagd server would need to be aware of all crds on startup, and would need to watch each of them permanently. In the on-demand implementation a developer could introduce a new CR whilst the server instance is running and sync to it without bouncing the server. This also introduces the opportunity to drop a sync when there are no longer any subscribers for it, reducing load on the api. |
💯 correct If we have a requirement to support the dynamic use case, then we should aim for the third solution. |
With the introduction of grpc syncs [1] flagd now has the ability to securely (tls encryption) communicate to a grpc sync provider server implementation.
Given that flagd has built-in sync capability on various sources (file, grpc & k8s), it is worth investigating the possibility to build grpc server version of the flagd. This server build can then be used with OFO, where OFO-controlled side cars get connected to flagd server on top of grpc.
Consider the high-level conceptual architecture,
Tasks
A POC with following topics
[1] - #249
The text was updated successfully, but these errors were encountered: