Skip to content
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

To fill a proposal for a gRPC aggregation service #824

Closed
leodido opened this issue Sep 9, 2019 · 6 comments
Closed

To fill a proposal for a gRPC aggregation service #824

leodido opened this issue Sep 9, 2019 · 6 comments

Comments

@leodido
Copy link
Member

leodido commented Sep 9, 2019

This is a summary of an initial idea that me and @fntlnz want to fill as a proposal.

So this will be expanded. We are just dumping initial idea we had so that we can fill the proposal later.

What would you like to be added:

Assuming a k8s cluster having more Falcos deployed I'd like to have a mechanism able to connect and subscribe to all of them proxying all the events coming from them.
The goal is to have an external server which aggregates the events coming from the Falcos deployed.
Ideally this gRPC aggregator service can be made in Go.

An image is worth a thousand words.

gRPC aggregator service for Falcos

This mechanism doesn't add any logic on the existing Falco gRPC API.

It just add a layer to query, discover, and instructing all of them using an unique Falco ID to discern the different Falco instances.

For example the subscribe call (the outputs gRPC API) will return the normal output plus an ID (gRPC metadata) telling to the consumer from which the output comes.

Why is this needed:

We need an aggregator able to relay all the events of various Falcos so that them acts like a single entity for external clients connecting to them.

  • Falco instances can be very volatile (can go up and down). We want a system that has knowledge of all of them. This can be done for example using the Kubernetes discovery mechanism or in a non-Kubernetes system using a configuration file or multicast.
  • When using a client (eg., falcoctl) one cannot connect to all of the Falco instances. Let's say that we have 100 Falcos, it's extremely hard to know what it's going on all of them.

/assign @leodido
/assign @fntlnz

@krisnova
Copy link
Contributor

Let's check out Envoy for this!

@krisnova
Copy link
Contributor

krisnova commented Sep 10, 2019

We probably need to think about two things with this model:

Order

I do NOT think we guarantee order what so ever with model. A client gets alerts as they trickle through.

Falco meta information

We probably wan't to include details about the falco instance as it relates to Kubernetes. What node is this running on? What is the name of the pod? How long has falco been running.

@leodido
Copy link
Member Author

leodido commented Sep 10, 2019 via email

@fntlnz
Copy link
Contributor

fntlnz commented Sep 10, 2019

@kris-nova I agree for order, for the Falco meta information part that was covered in the issue by the sentence:

For example the subscribe call (the outputs gRPC API) will return the normal output plus an ID (gRPC metadata) telling to the consumer from which the output comes.

I'm not sure maybe that's not clear?

@stale
Copy link

stale bot commented Nov 9, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale
Copy link

stale bot commented Jan 24, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix label Jan 24, 2020
@stale stale bot closed this as completed Jan 31, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants