Eshoponcontainers: Support for local Linux Kubernetes Master deploying on Windows containers?

Created on 14 Mar 2019  路  6Comments  路  Source: dotnet-architecture/eShopOnContainers

As far as I can tell the only way to deploy the whole application from Kubernetes is within Windows. I am running a Linux Master with Windows nodes, and I'm confused with which components are required to deploy the eShop on my setup. Thanks in advance!

doc-reference kubernetes

Most helpful comment

Hi @AdisPinjic
Eager to view your comments!

By the way i made some important updates to make easier the multiarch support. Let me summarize those changes here:

  • File docker-compose.yml uses a env var named PLATFORM. This allows build images tagged by platform. If not set, platform assumed is "Linux". When building under Windows, using docker compsoe, the value of PLATFORM should be set to win. This will generate tags like win-latest or linux-latest.
  • A Powershell script has been added in ./build/multiarch-manifests/ folder to create and push the multiarch manifests to a docker registry. As we are using docker manifest CLI that means that this script has all limitations that docker manifest has. I have refreshed all images to ensure that latest versions of all images are built for both windows & linux containers.

On our Dockerhub these are the following floating tags that are mantained:

  • linux-latest: Latest for linux arch
  • linux-dev: Compilation of the dev branch for linux. This is the preferred tag for linux
  • linux-master: Compilation of the master branch for linux
  • win-latest: Latest for windows arch
  • win-dev: Compilation of the dev branch for windows. This is the preferred tag for windows
  • win-master: Compilation of the master branch for windows
  • latest: Latest multiarch tag
  • dev: Compilation of the dev branch. Multiarch tag. This is the preferred tag to use
  • master: Compilation of the master branch multiarch

Hope this helps, and don't hesitate to comment anything!

All 6 comments

Hi @AdisPinjic
Sorry, could you elaborate a bit more your question? I am not sure to understand what do you need!

Hey, sorry if I made my issue unclear. I am following this guide from the eShop wiki

When trying to deploy the eShop on my setup (on a Windows node with Helm) it became clear that some of the components require a Linux based host, since some of the .yml files tried to pull Alpine images. I'm wondering how I am supposed to integrate these components on the same Windows-based node. A bigger issue is that I'm getting "ErrImagePull" and "ImagePullBackOff" on every pod, even the Windows based ones so I'm kinda at a loss. My Windows nodes are running the newest version of Windows Server 2019 if it matters.

Thanks for trying to resolve my issue :)

Hi!

Deployment on k8s using Helm was never intended to support Windows Containers (and windows nodes). Now that Kubernetes 1.14 is out with official support for Windows Containers adding this support is something we can consider (@nishanil has the latest word on it). Regardless the support of windows containers in Kubernetes 1.14, AKS still don't support windows nodes (it is in private preview).

Deploying the eShop on Windows Containers is supported through docker compose (and SF).

Anyway, if you have experience with k8s and windows containers could try:

  • eShop images for windows containers have same name as eShop images for linux (we use multiarch manifests)
  • In file docker-compose.windows.yml you can find the name of the external images for Windows Containers
  • All helm charts use .Values.image.repository and .Values.image.tag for setting the image name and the image tag.

Hope this helps :)

Thanks a lot! I will look into this and hopefully provide this thread with my solutions.

Edit: Probably won't have time to look into this becuase of my bachelor's thesis, was hoping to use this as an example application with autoscaling etc. implemented

Hi @AdisPinjic
Eager to view your comments!

By the way i made some important updates to make easier the multiarch support. Let me summarize those changes here:

  • File docker-compose.yml uses a env var named PLATFORM. This allows build images tagged by platform. If not set, platform assumed is "Linux". When building under Windows, using docker compsoe, the value of PLATFORM should be set to win. This will generate tags like win-latest or linux-latest.
  • A Powershell script has been added in ./build/multiarch-manifests/ folder to create and push the multiarch manifests to a docker registry. As we are using docker manifest CLI that means that this script has all limitations that docker manifest has. I have refreshed all images to ensure that latest versions of all images are built for both windows & linux containers.

On our Dockerhub these are the following floating tags that are mantained:

  • linux-latest: Latest for linux arch
  • linux-dev: Compilation of the dev branch for linux. This is the preferred tag for linux
  • linux-master: Compilation of the master branch for linux
  • win-latest: Latest for windows arch
  • win-dev: Compilation of the dev branch for windows. This is the preferred tag for windows
  • win-master: Compilation of the master branch for windows
  • latest: Latest multiarch tag
  • dev: Compilation of the dev branch. Multiarch tag. This is the preferred tag to use
  • master: Compilation of the master branch multiarch

Hope this helps, and don't hesitate to comment anything!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

grahamehorner picture grahamehorner  路  5Comments

nxtx picture nxtx  路  4Comments

CESARDELATORRE picture CESARDELATORRE  路  3Comments

DavidNorena picture DavidNorena  路  4Comments

adahhane picture adahhane  路  4Comments