Comments (4)
Could instead have the worker hit an API endpoint for that config.
from worker.
There are 2 reasons I think using RabbitMQ will be preferable over polling the API:
- Polling the API requires having it accessible to all workers in addition to RabbitMQ, this adds complexity to setting up workers & security wise increases the possible attack surface (as the entire architecture of Nebula revolves around RabbitMQ removing that instead would be near impossible)
- Polling the API adds a risk of a "roaring horde" problem if\when a lot of workers attempt to do the initial sync at the same time, the current workaround of having a random delay before syncing will solve that with the API but as RabbitMQ can simply queue massages & reply to them in order it removes the need of that random delay which should help speed up the initial sync.
That been said I'm a strong believer in letting the end user choose how to configure his\hers tools and adding an optional envvar\config-setting which allows the workers to query via the API rather then through RabbitMQ won't be that much of work (in fact there is already an API endpoint which returns the config of an app) so why not have both?
@nochte feel like raising a ticket request about it?
from worker.
Attached is the planned worker "bootstraping" workflow for resolving this ticket via RabbitMQ direct reply RPC calls, after a lot of thoughts and discussions with multiple knowledgeable people this feels to me like the best course of action as it both allows the flexibility of AMQP will still remaining simple to implement in a scalable fashion.
from worker.
Pushed to latest\master, will be added to next numbered release (which due to the major architectural change will be a Major release to v2.0.0).
from worker.
Related Issues (20)
- Add automated unit tests HOT 2
- Move automatic Docker imags build from Docker Hub to Travis-CI HOT 1
- have worker have the option to connect to the managers with a UUID token instead of basic auth HOT 1
- Self update worker container on deployed remote devices HOT 11
- Add cron jobs management support HOT 1
- Auto match version to branch on deployment and have it part of the report generated for the optional reporting system HOT 1
- fix creating new branch from last push not starting travis run due to auto added changelog having the [skip travis] flag on the commit message HOT 1
- Facing issue in running worker on remote device. HOT 6
- Facing issue in creating reporting kafka connection object HOT 5
- How to check if edge device is updated successfully? HOT 6
- Feature Request: Get Update status at the reporter from worker only when update is performed ( failed or successful ). HOT 11
- Facing issue in configuring AWS ECR as a registry using credential helper for Nebula worker. HOT 7
- Consider moving ARM CI/CD build to drone.io HOT 1
- Create containers multiarch manifest file to allow single container multiarch support HOT 1
- Connecting to a nebula managr hosted at a non root path HOT 3
- Query about a container running standalone script !! HOT 3
- Dependabot couldn't authenticate with https://pypi.python.org/simple/ HOT 1
- Prune image API not working HOT 3
- Cron jobs do not work per schedule if its frequency is shorter than the check-in time of worker HOT 2
- Build breaking due to unavailable package `freeze` HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from worker.