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
Support for Linux containers #3651
Comments
With the release of ServiceControl 5.0, one of the most significant blockers to supporting Linux containers (the use of RavenDB 3.5, which depends on .NET Framework) has been removed, bringing us much closer to the ultimate goal. Additionally, work on the next step, updating ServiceControl to run on modern .NET, is already underway. ServiceControl 5.0 uses RavenDB 5 for both Audit and Error instances, provides a new installer experience, and provides general performance, stability, and logging improvements. See the release notes for more details. Details for how to upgrade to the new version can be found in the upgrade guide. We have updated the description of this issue to reflect the current state of our progress. Based on the remaining work, we are 80% confident that we will be able to provide Linux container images for all types of ServiceControl instances in 4 to 6 months, which works out to somewhere during Q2 of 2024. |
We would like to share an update on our progress on producing versions of ServiceControl that run on .NET. The ServiceControl master branch (not yet released) now runs on .NET 8. The codebase has been migrated to use ASP.NET Core 8, ASP.NET Core SignalR 8, and NServiceBus 9. We discovered that the changes in SignalR are more complex than expected, so it is taking longer than anticipated to guarantee that ServicePulse and ServiceInsight remain compatible with the new version of ServiceControl. The remaining work to produce versions of ServiceContol that run on .NET is:
After that, work will begin immediately to produce Linux Docker images, which we expect to be much less complex than the previous steps. We're 80% confident we can provide Linux container images for all types of ServiceControl instances by the end of June 2024. We'll provide another update when we've produced versions of ServiceControl that run on .NET. |
We are currently working on enabling ServiceControl to run in Linux containers.
The work is broken down into distinct steps. As each step is completed, a new version of ServiceControl will be released and this issue will be updated.
Based on the remaining work we are 80% confident that we will be able to provide Linux container images for all types of ServiceControl instances by the end of June 2024.
This estimate will be revised each time that the issue is updated.
Subscribe to notifications on this issue to stay up to date.
This issue is locked to ensure that notifications are sent only for progress updates. Please use the Particular Discussion Group for any questions, comments, or concerns.
Overview
Each step requires the previous one to be completed before it can be started.
✅ Upgrade persistence for Audit and Error instances to RavenDB 5 (complete)
ServiceControl stores data in an embedded RavenDB instance. Older versions of RavenDB require .NET Framework and use ESENT (a Windows component) for storage, which means they can't run on linux. RavenDB 5 targets .NET and uses Voron for storage), which means it can run on Linux.
The change from ESENT to Voron makes it impossible to perform an in-place upgrade. We are introducing a persistence abstraction to allow us to choose an implementation at runtime.
ServiceControl Audit instances can already use RavenDB 5. All new instances target RavenDB 5 and we have instructions for migrating existing instances from RavenDB 3.5 to RavenDB 5.
🚧 Produce versions of ServiceContol that run on .NET (in progress)
We are using the terms ".NET" and ".NET Framework" as described in ".NET vs. .NET Framework for server apps".
Parts of ServiceControl still require .NET Framework, which is not available on Linux. To run on Linux, all of ServiceControl must run on .NET.
Going forward, we will migrate ServiceControl from .NET Framework to .NET. Among other things, this will require us to switch from from ASP.NET Web API to ASP.NET Core and switch to a version of SignalR which runs on .NET (which requires a corresponding change to ServicePulse).
⌛ Produce Linux Docker images
There are still a few "features" of ServiceControl which absolutely require Windows:
We will modify these features in the .NET version of ServiceControl, providing appropriate alternatives for Linux environments, and publish Docker images for each type of ServiceControl instance.
The text was updated successfully, but these errors were encountered: