-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
This issue tracks work needed to make Tekton run on a Kubernetes cluster with Windows nodes. Please contribute your use cases, ideas and experience.
First, some assumptions I've been operating under:
- Tekton controller components themselves don't need to run on Windows nodes. The cluster could have N Linux nodes and M Windows nodes, run the controller on one of the Linux nodes, and run requested workloads on Windows nodes. If we decide full-Windows clusters are the goal, then we'll need to expand this work to cover getting controller components built and running for Windows.
- The user has to explicitly specify they want a TaskRun to execute on a Windows node, using
nodeSelector-- Tekton isn't responsible for somehow detecting that a TaskRun should run on a Windows node. We might change how a TaskRun's Pod is generated based on the user's specification, but ideally we wouldn't have to, for simplicity.
If either of these are contentious, or you have more to add, please comment.
Next, some things I'm fairly sure will break without trying:
-
Building Images: Entrypoint binary injection is done today by prepending a step containing the entrypoint binary, which copies that binary to
/tekton/entrypoint-- to support Windows, that binary will have to be built to run on Windows, and will have to be based on some minimal Windows image (i.e., notdistrolessas it is today). This is doable with manifest lists, whichkohas some support for. Likewise, internal support images used to implement resources (git-init,creds-init,google/cloud-sdk, etc., will need to be able to be built for Windows) -
File Paths: Step ordering works by looking for files to exist at some predetermined path, and those paths are specified using
/-separated paths (/tekton/tools,/tekton/downward/ready, etc.) -- this is likewise true for/workspace,/tekton/home, etc. If we decide in the future to use fsnotify to watch files instead of polling, we'll have to make sure that works for Windows too (or fallback to polling). -
Script Mode: Script mode is implemented today by writing an executable file to
/tekton/scripts/something, then invoking it as theCommandin the step container. Writing this file and making it executable, as well as where it exists, will require work to support Windows.
Sources: