-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
allow to manage multiple opentelemetry collector with the same supervisor in IoT Gateway Environments #33682
Comments
This issue has been inactive for 60 days. It will be closed in 60 days if there is no activity. To ping code owners by adding a component label, see Adding Labels via Comments, or if you are unsure of which component this issue relates to, please ping |
Enhanced Proposal for Extending OpAMP to Non-Kubernetes EnvironmentsThe OpAMP bridge currently used in Kubernetes should be extended to non-Kubernetes environments where the bridge serves as a gateway for managing Collectors on remote hosts. This enhanced proposal builds upon the foundational OpAMP design for Kubernetes and adapts it for non-Kubernetes environments, making it suitable for managing Collectors deployed in distributed, resource-constrained settings like IoT gateways or edge devices. In this scenario, the bridge would act as an intermediary (or gateway) that manages communication with Collectors only reachable via the IoT gateway. This would mimic its Kubernetes role but adapted for IoT networks. Enhanced Proposal: Adapting OpAMPBridge for Non-Kubernetes Deployments1. OpAMPBridge for Non-Kubernetes DeploymentsIn Kubernetes, the OpAMPBridge resource manages the state of OpenTelemetry Collectors within a cluster. This concept can be adapted to non-Kubernetes environments where Collectors are deployed across various hosts or devices. Key Functions of the Bridge:
Deployment Architecture:
2. Dynamic Port Allocation and MultiplexingDynamic port allocation can be utilized to handle multiple Collectors. Rather than dedicating a port for each Collector, the bridge will:
3. Supervisor ProcessIn non-Kubernetes setups, the Supervisor will manage the configuration of Collectors. Supervisors may either be embedded within Collectors or deployed separately.
4. Process Flow for Non-Kubernetes Environments
5. Security Considerations
6. Future Extensions
Benefits of Extending OpAMP Beyond Kubernetes
|
Related context is managing configuration of other collectors which sent to collectors - eg beyla's config.yaml |
Pinging code owners for cmd/opampsupervisor: @evan-bradley @atoulme @tigrannajaryan @BinaryFissionGames. See Adding Labels via Comments if you do not have permissions to add labels yourself. |
Pinging code owners for extension/opamp: @portertech @evan-bradley @tigrannajaryan @BinaryFissionGames. See Adding Labels via Comments if you do not have permissions to add labels yourself. |
Component(s)
No response
Is your feature request related to a problem? Please describe.
The Supervisor should run only once per host group or cluster, managing all connected Collectors. This would reduce overhead for clusters and hosts with multiple VMs by centralizing management to a single Supervisor. This setup would enable one-to-many upgrades by a single Supervisor and synchronous configuration updates for all Collectors.
Note: Remote execution of Collectors on hosts different from the Supervisor is currently not supported (e.g., via SSH). Collectors need to connect to the Supervisor on a well-known host and port. This requires either pre-configured port knowledge on the Supervisor or multiplexing multiple agents on the same port.
Describe the solution you'd like
Dynamic port allocation, which already exists, should be used to serve multiple connected Collectors. This is beneficial for low-resource IoT field devices with dedicated Internet hubs/uplinks and for Kubernetes environments, reducing the need for more Supervisors than Collectors.
In addition to the current automated startup of the Collector triggered by execution on the same host, the initial startup/bootstrapping of the Collector should be handled by the Collector itself. The Collector should know which port to connect to the Supervisor, and the Supervisor should reserve such ports for the Collectors. This requires the Supervisor to listen on preconfigured ports, and the Collector should independently try to connect to this host and port as known ahead.
Alternatively, instead of using dedicated ports per Collector, allowing multiplexing of different clients on the same port could simplify bootstrapping based on a static, well-known host and port for all Collectors managed by the Supervisor. For security, each Collector should be authorized, using something like oauth2clientauthextension on the Collector side and oidcauthextension on the Supervisor side. Integration of OAuth into OpAMP client-server flows is also requested here #32762.
Describe alternatives you've considered
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: