Request for Feedback: Extensibility Refactor Impact on Acquisition #4006
Replies: 1 comment 6 replies
-
In general, this all sounds good. For the Docker images, my only concern is around the naming of the repos. I'm sure we'll get other opinions on this as naming is always a controversial topic. Instead of |
Beta Was this translation helpful? Give feedback.
-
tl;dr
dotnet tool install dotnet-monitor
) and its feature set are not impacted.docker pull mcr.microsoft.com/dotnet/monitor
) and its feature set are not impacted.Overview
For .NET Monitor 8, the team is refactoring the tool to allow certain features to be extensible (namely, custom egress providers). The extensibility model allows extensions authors to provide additional functionality that is not directly built into the tool. The motivations for this are:
The existing acquisition mechanisms and the feature sets offered by those existing assets (namely, the .NET Tool package and the Docker images) will be preserved.
Existing Egress Providers
As part of this offering, the Azure Blob storage and S3 storage egress providers will be refactored out of the core of the .NET Monitor tool into their own extension packages. The Azure Blob storage egress provider has shipped in the tool since the tool's inception, whereas the S3 storage egress provider is new to .NET Monitor 8. These were refactored out of the tool to allow for custom selection of which ones are installed as well as to flex the extensibility model to make sure it works.
Impact on the .NET Tool Package
While the cloud storage egress providers have been refactored into their own extension packages, the .NET tool offering bundles the extensions within the NuGet package to maintain the existing capabilities. This effectively preserves the functional behavior of the .NET Tool package. Going forward, its our intent to ship all extensions maintained as part of the .NET Monitor project within the .NET Tool package. Think of it as the "everything-but-the-kitchen-sink" package.
We view the .NET Tool package as a convenience for acquiring .NET Monitor on any platform with all of the default capabilities, so long as you have an applicable .NET SDK to acquire the package. If a user needs a more sculpted installation (specific platform, specific TFM, specific extensions), that is the purpose of the archive packages.
Impact on the Archives
The 8.0 archive packages (*.tar.gz and *.zip) for the .NET Monitor tool will NOT contain the extensions. The extensions themselves will be their own archive packages. These packages can be overlayed on top of the expanded .NET Monitor tool archive such that the extensions are extracted into the correct locations so that users do not have to understand the tool layout. An example layering would be:
Note that all packages are extracted into the
/app
directory without having to understand the structure of where extensions are located. The above example provides the same functionality found in the .NET Tool package, except it is sculpted to only run on an ASP.NET 8.0 shared installation on Linux x64 platforms.Impact on the Docker Images
The .NET Monitor images use the .NET Monitor archive described in the previous section and would require a similar overlaying technique to achieve parity with prior versions. However, it may be advantageous to separate the installtion of the .NET Monitor archive into a base image and install the extension archives in an extending image. The former image provides the .NET Monitor tool installation as a standalone image to allow anyone to extend it as they need without having to configure the standard environment variables, application root, and command line entrypoint. The latter image would become the
mcr.microsoft.com/dotnet/monitor
image. This is a similar technique employed by theruntime-deps -> runtime -> aspnetcore -> sdk
layering in the https://github.com/dotnet/dotnet-docker GitHub repository.Base Image (published as
mcr.microsoft.com/dotnet/monitor/base
):Extending Image (published as
mcr.microsoft.com/dotnet/monitor
):Note that the base Dockerfile is unchanged from the existing .NET 8 Dockerfile, but building it produces the core .NET Monitor image. The extending Dockerfile takes the core image and layers the extensions on top of it. The extending Dockerfile effectively produces the final public .NET Monitor image with the same capabilities today. The split of the core installation and the extensions allow anyone to use the base image for their own customizations; the extending Dockerfile demonstrates how to easy install extensions on top of the core image and preserves the existing offering of the
mcr.microsoft.com/dotnet/monitor
image.Beta Was this translation helpful? Give feedback.
All reactions