Skip to content
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

.NET 8 Debian images should be based on Bookworm #4322

Closed
Tracked by #47240
richlander opened this issue Jan 11, 2023 · 25 comments
Closed
Tracked by #47240

.NET 8 Debian images should be based on Bookworm #4322

richlander opened this issue Jan 11, 2023 · 25 comments
Assignees
Labels
area-dockerfiles enhancement needs-announcement An announcement is needed to discuss customer impact
Milestone

Comments

@richlander
Copy link
Member

We expect that Debian Bookworm will ship before .NET 8. We did this same race with .NET 6 and Debian Bullseye. Fortunately, .NET 6 lost that race and we expect that .NET 8 will similarly lose the race with Bookworm.

For .NET 6, we shipped Bullseye images starting with .NET 6 Preview 1. We should use the same model here.

@richlander
Copy link
Member Author

We need to decide on broad test coverage for Bookworm. Do we need a new test leg for this on dotnet/runtime (for example)?

@mmitche @ViktorHofer

@ViktorHofer
Copy link
Member

In dotnet/runtime we currently test both Debian 10 and 11. Based on https://wiki.debian.org/DebianReleases, Debian 10 already reached EOL. Would it make sense to remove 10 and add 12?

@ViktorHofer
Copy link
Member

cc @wfurt @ericstj @carlossanlop

@mthalman
Copy link
Member

[Triage]
We should target .NET 8 Preview 1 to get the Debian Dockerfiles updated to be on Bookworm.

@mthalman mthalman added this to the .NET 8 milestone Jan 11, 2023
@lbussell lbussell self-assigned this Jan 11, 2023
@lbussell
Copy link
Contributor

lbussell commented Jan 11, 2023

Task tracking info for this work:

Distro: Debian 12 "Bookworm"

ImageBuilder Tasks

Nightly Branch Tasks

    • Copy the Dockerfiles of the most recent version of that distro (or author new ones for an entirely new distro) and place them in a version-specific folder under their respective variants (runtime-deps, runtime, aspnet, sdk). Note: not all variants have a corresponding runtime-deps image.
    • Modify the Dockerfiles as appropriate for any specific changes related to the new distro version
    • Update manifest.json to reference the new set of Dockerfiles with the appropriate tags
      • Move any distro-specific floating tags to the newer version (e.g. 6.0-alpine)
    • Update the test data to include the new distro version
    • Run the command to update the READMEs: .\eng\readme-templates\Get-GeneratedReadmes.ps1
    • Run the command to update the image size baseline file: .\tests\performance\Validate-ImageSize.ps1 -UpdateBaselines
    • Inspect generated changes for correctness
    • Consider whether sample Dockerfiles should be authored if this is a new distro and them to the samples
    • Run the command to build and test your changes: .build-and-test.ps1 -OS <os>
    • Commit generated changes
    • Create PR
    • Get PR signoff
    • Merge PR to nightly branch

Main Branch Tasks

    • After the product teams have signed off on the new distro, merge these changes to the main branch as part of the release process for the next .NET release
      • For Alpine, follow the policy to only update the floating alpine tag one month after the release of the new Alpine version. Since nightly will already have the floating tag updated, the initial release of the new Alpine version to main will need to account for this and keep it set to the older version for one month.
    • Create an announcement (example: Alpine 3.10) unless the new distro is added only for pre-release versions in which the announcement would be incorporated in the pre-release notes.

@richlander
Copy link
Member Author

richlander commented Jan 12, 2023

@ViktorHofer -- That sounds like a great plan. Do you think you can do that before Preview 1 so that we have higher confidence on adopting Bookworm for our P1 container images?

I think doing that for dotnet/runtime is sufficient for now. We should consider doing same for ASP.NET, too, but the timing can be more relaxed. Who owns that?

@mthalman mthalman added the needs-announcement An announcement is needed to discuss customer impact label Jan 20, 2023
@richlander
Copy link
Member Author

@ashnaga -- Can you follow up with @ViktorHofer on ensuring we get some Bookworm validation ahead of Preview 1?

@ashnaga
Copy link
Member

ashnaga commented Jan 23, 2023

@ViktorHofer -- That sounds like a great plan. Do you think you can do that before Preview 1 so that we have higher confidence on adopting Bookworm for our P1 container images?

I think doing that for dotnet/runtime is sufficient for now. We should consider doing same for ASP.NET, too, but the timing can be more relaxed. Who owns that?

@wtgodbe for ASP.NET testing

@ViktorHofer
Copy link
Member

ViktorHofer commented Jan 23, 2023

@ViktorHofer -- That sounds like a great plan. Do you think you can do that before Preview 1 so that we have higher confidence on adopting Bookworm for our P1 container images?

Yes I can help with that but I think that @wfurt usually drives these platform / RID changes. Can someone please open an issue so that we can track that work in dotnet/runtime?

@richlander
Copy link
Member Author

Can you do that @ashnaga?

@ashnaga
Copy link
Member

ashnaga commented Jan 23, 2023

Can you do that @ashnaga?

dotnet/runtime#81034

@wfurt
Copy link
Member

wfurt commented Jan 23, 2023

It seems to have only OpenSSL 3 (so as Ubuntu 22). That will break QUIC and HTTP3 as current MsQuic release does not support OpenSSL3. Is there any possibility to talk to the vendors @richlander? Last time when this happened with OpenSSL older compat versions were around for a while so it was possible to update dependencies at slower pace.

@richlander
Copy link
Member Author

richlander commented Jan 23, 2023

That's exciting. No, I don't think there is any possibility to get this to change. Alpine (as of 3.17) has already moved to OpenSSL 3.0. AFAICT, OpenSSL 1.x is dead. Various components need to adapt.

Alpine context -> dotnet/runtime#80641

Our current plan is to offer .NET 8 solely with Bookworm (in terms of Debian). If there is enough demand, we could consider offering a bullseye-based image as well. However, the 8.0 tag will be based on Bookworm, for sure.

I don't know what the Debian plan is for OpenSSL version compat. Ubuntu 22.04 did not offer any compat within the official feeds.

@wfurt
Copy link
Member

wfurt commented Jan 23, 2023

OK. That just puts more pressure on microsoft/msquic#2039
cc: @nibanks @ManickaP

@dougbu
Copy link
Member

dougbu commented Jan 23, 2023

@wtgodbe for ASP.NET testing

@wtgodbe and I share infra ownership in ASP.NET

@dougbu
Copy link
Member

dougbu commented Jan 23, 2023

We should consider doing same for ASP.NET, too, but the timing can be more relaxed.

After the Docker work is done, I'm now expecting we need to wait for microsoft/msquic#2039. Otherwise, we'll end up doing lots of work to skip tests on Bookworm that'll be thrown away soon (hopefully) thereafter.

@richlander
Copy link
Member Author

I thought the same @dougbu ... However, you need the same capability to test on latest Alpine and Ubuntu (that are already in-market). That boils down to having the ability to "test on modern Linux".

We should get clarity from the MSQUIC team to see where they are at. We need a plan for delivering on this need in the first-half of 2023. If not, we have a significant problem. Also, the writing has been on the wall for some time with OpenSSL 3.

@dougbu
Copy link
Member

dougbu commented Jan 24, 2023

However, you need the same capability to test on latest Alpine and Ubuntu (that are already in-market). That boils down to having the ability to "test on modern Linux".

Completely agree. Just have to frown every time we skip tests anywhere but on macOS (where certs are weird and keep getting weirder).

@richlander
Copy link
Member Author

Who is our contact for the MSQUIC team? We should ensure that they are aware of all this.

@wfurt
Copy link
Member

wfurt commented Jan 24, 2023

@nibanks should have visibility to the plans. AFAIK OpenSSL 3 is worked on but had some issues.
We may be able to consume some early images.
Out of curiosity, what is the issue with macOS @dougbu?

@dougbu
Copy link
Member

dougbu commented Jan 24, 2023

Out of curiosity, what is the issue with macOS @dougbu?

We just have a large swath of tests that we had to disable on later macOS systems as they changed how some aspects of certificate validation works. I may be misremembering things of course but recall @javiercn was in the midst of it.

In any case, my comment wasn't really germane here.

@richlander
Copy link
Member Author

Have we documented where users can expect HTTP3 to work? If not, it seems like we need to.

@wfurt
Copy link
Member

wfurt commented Jan 24, 2023

https://learn.microsoft.com/en-us/dotnet/core/extensions/httpclient-http3#platform-dependencies

We only list OpenSSL 1.1 as needed dependency. Do not go to details about distributions as that can change easily.
Several users already wrongly assumed OpenSSL 3 is OK as well. In ideal case we would like it to some MsQuic doc about supported platforms as that can change as well independently of .NET releases.

And of course, distro vendors can step in and do their own packaging of MsQuic. I personally feel that would be better than navigating users to MS package feed.

@richlander
Copy link
Member Author

And of course, distro vendors can step in and do their own packaging of MsQuic. I personally feel that would be better than navigating users to MS package feed.

That's unlikely if the upstream team doesn't adapt to changes in their dependencyies.

We only list OpenSSL 1.1 as needed dependency. Do not go to details about distributions as that can change easily.

That's not sufficient. Certainly as it relates to OpenSSL, it is pretty easy to follow for the big distros. Also, pretty soon everyone will be using OpenSSL 3.0, which will make it even easier to track.

urothis added a commit to urothis/unified that referenced this issue May 29, 2023
Because the dotnet project ran into issues with bullseye releases and OpenSSL, the default image now defaults to a buster release.

https://hub.docker.com/repository/docker/urothis/nwserver/tags?page=1&ordering=last_updated
The default image and -buster resolve to the same image currently.

Dotnet 8 should resolve this dependency issue.
dotnet/dotnet-docker#4322
Looks to have already been merged, so we should see all resolve later this year.
@mthalman
Copy link
Member

Documented breaking change at dotnet/docs#35953

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-dockerfiles enhancement needs-announcement An announcement is needed to discuss customer impact
Projects
Status: Done
Development

No branches or pull requests

7 participants