-
Notifications
You must be signed in to change notification settings - Fork 47
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 produce 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 produce 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. |
With the release of ServiceControl 5.2, all the blockers to supporting Linux containers (the dependency on .NET Framework and classic ASP.NET) have been removed. Details for how to upgrade to the new version can be found in the upgrade guide. The work to produce Linux container images has already started. We are 90% confident that we will be able to provide Linux container images for all types of ServiceControl instances by the end of June 2024. We'll provide another update when we have more information about the progress of the container images work. |
While we aren't 100% done with all the documentation, we know you're all looking forward to having ServiceControl on Linux containers. So today, we're doing a soft release so you can test things out. ServiceControl uses 4 different container images:
We will be working on shaping up the official documentation over the next couple weeks, but we think the documentation for each image on Docker Hub should give you enough to play with if you just can't wait. We'll continue to post updates on this thread as work on the documentation progresses. We've also created a dedicated thread on our discussion site for ServiceControl on Linux containers early access questions. We'll be monitoring that thread carefully for questions and feedback. We'd love to hear from you there. There's still the opportunity to incorporate feedback into additional releases during the month of July. We know you've been waiting for this for a long time. Take it for a spin and let us know what you think. |
Today we've made major updates to the ServiceControl documentation in support of containers. The documentation previously leaned very heavily on ServiceControl Management, so in addition to documenting the container bits, we also had to do quite a lot of restructuring. Here are some highlights in the new documentation:
And we're not done…
Stay tuned… |
Since the first release of ServiceControl that supported Linux containers (5.3.0), we have been listening to feedback in the early access questions thread and making improvements to the container story. If you weren't following along there, here are a few highlights:
Now, with the release of ServiceControl 6.1.0, we are considering this effort to deliver ServiceControl Linux containers complete. Thank you to everyone who followed along here, and especially to those who gave us feedback along the way. We couldn't have done it without you. |
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 90% confident that we will be able to produce 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
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: