nats-io / nats-docker

Official Docker image for the NATS server
Apache License 2.0
136 stars 47 forks source link

Support LTSC Windows images #106

Open Alvaro82 opened 1 year ago

Alvaro82 commented 1 year ago

Are there any plans to maintain images based on the current LTSC versions of Windows?

bruth commented 1 year ago

Hi @Alvaro82, that seems like a reasonable request. Other than listing a few more images, it would not appear to add any additional overhead to our build and release process.

Any thoughts @tbeets?

tbeets commented 1 year ago

Do we have any published statement of support or non-support of older releases? To date we've only had minor Windows-specific features, but in 2.10 we are offering the Cert Store feature with Windows-specific crypto bindings (read: win32 library bindings).

Especially in areas of security standards, Microsoft does patch and evolve their OS so could become expensive to backport new server features to older OS releases. What would make sense @bruth ?

bruth commented 1 year ago

Hm. Right, that is a fair point. I am a noob re: Windows, so it unclear what is most desirable for production environments? TBH, I don't know what the current image tag (1809) corresponds.

tbeets commented 1 year ago

Image 1809 is quite old. If we are going to continue to support Windows containers, we should regularly update and provide the latest LTSC and one back IMO.

@Alvaro82 Do you actively use NATS through Windows Containers? CW would be that Windows Containers was a passing fancy by Microsoft and they are on the Linux containers bandwagon with Azure and WSL these days. Are you able to consider Linux containers?

Alvaro82 commented 1 year ago

@tbeets @bruth Thanks for your support! I think version 1809 corresponds to Windows 10 and Windows Server 2019, so it's old but I think it's similar to the current version ltsc2019, I'm not sure what differences are between those versions.

In my company we are using NATS in Windows containers and as a Windows service on several clients without problems, NATS is deployed on its own servers which are always Windows servers. In fact, compatibility with Windows was one of the reasons why we started using NATS 3 years ago, we tried to use Kafka and it was impossible to make it work on Windows...

We also tried to use Linux containers running on Windows servers and we also had many problems, there are many virtualization and compatibility details that are problematic.

marceliwac commented 6 months ago

I realise this is a pretty old issue, but I wanted to report add that @Alvaro82 's last message perfectly reflects use-case on my end. Running Widnows containers with NATS is the only option that we can support since containerisation of the application is a requirement (and so is the use of Windows Server 2022).

I successfully built the image based on windowsservercore-ltsc2022 and the latest NATS binary, so from a technical perspective this is relatively doable, but as some others have mentioned on the NATS' Slack conversation, this probably comes down to how costly it will be to maintain this type of support over time.

I have an access to the Windows Server 2022 so I'm happy to provide a build image if needed.

bruth commented 6 months ago

Thanks @marceliwac. We have been in process of porting/augment the NATS CI and artifact building to GitHub Actions (from Travis) which does have a windows-2022 runner (Travis does not). We will explore the effort involved finalize and extend the CI flow for testing and building on that OS.

marceliwac commented 6 months ago

Brilliant! Thanks @bruth