Skip to content

KEP-3636 CSI Drivers in Windows as HostProcess Pods#3641

Open
mauriciopoppe wants to merge 1 commit intokubernetes:masterfrom
mauriciopoppe:csi-proxy-host-process-container
Open

KEP-3636 CSI Drivers in Windows as HostProcess Pods#3641
mauriciopoppe wants to merge 1 commit intokubernetes:masterfrom
mauriciopoppe:csi-proxy-host-process-container

Conversation

@mauriciopoppe
Copy link
Member

@mauriciopoppe mauriciopoppe commented Oct 28, 2022

  • One-line PR description: CSI Proxy go library to run CSI Drivers in Windows as HostProcess Pods

/cc @msau42 @ddebroy @jingxu97

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory sig/windows Categorizes an issue or PR as relevant to SIG Windows. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Oct 28, 2022
@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch 2 times, most recently from edbe2bc to 8cfda48 Compare October 28, 2022 04:41
@mauriciopoppe mauriciopoppe changed the title KEP-3636 CSI Drivers in Windows as a HostProcess Pods KEP-3636 CSI Drivers in Windows as HostProcess Pods Oct 28, 2022
@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch 3 times, most recently from ddd8336 to 7eeaac8 Compare October 28, 2022 04:51
@mauriciopoppe
Copy link
Member Author

/sig storage

@k8s-ci-robot k8s-ci-robot added the sig/storage Categorizes an issue or PR as relevant to SIG Storage. label Oct 28, 2022
@mauriciopoppe
Copy link
Member Author

/cc @jingxu97

@jsturtevant
Copy link
Contributor

/cc @marosset @brasmith-ms

Copy link

@ameade ameade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @mauriciopoppe, was nice meeting you briefly at KubeCon. Just some minor comments.

From the code PR, "The named pipes are not protected, this means that not only CSI Drivers but any Windows workload can mount them and execute privileged storage operations (imagine a workload reformatting the volume of another workload ). This is a current problem as of now." I think this is the case for any Pod that mounts a hostPath, windows or otherwise. I guess filesystem permissions help here?

We should mention that hostProcess support is going stable in k8s 1.26 and requires containerd 1.7 (unreleased) as mentioned in the SIG Windows update at KubeCon.

Maybe mention for those that will need to make the conversion about the new small host process base image. bit.ly/hpc-base-image

@mauriciopoppe
Copy link
Member Author

@ameade

From the code PR, "The named pipes are not protected, this means that not only CSI Drivers but any Windows workload can mount them and execute privileged storage operations (imagine a workload reformatting the volume of another workload ). This is a current problem as of now." I think this is the case for any Pod that mounts a hostPath, windows or otherwise. I guess filesystem permissions help here?

You're right on it being a problem in Linux too, I've updated the security part so that there's a suggested workflow for Cluster Administrators to determine the workload privileges per namespace using Pod Security Standards.

We should mention that hostProcess support is going stable in k8s 1.26 and requires containerd 1.7 (unreleased) as mentioned in the SIG Windows update at KubeCon.
Maybe mention for those that will need to make the conversion about the new small host process base image. bit.ly/hpc-base-image

Good points, I'll add them to the doc

@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch from 2f9072b to 83bfe25 Compare May 16, 2025 16:53
Copy link
Member

@torredil torredil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated graduation criteria and latest revision looks good to me.
/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label May 16, 2025
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle stale
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 14, 2025
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle rotten
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Sep 17, 2025
@mauriciopoppe
Copy link
Member Author

/remove-lifecycle rotten

@k8s-ci-robot k8s-ci-robot removed the lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. label Sep 20, 2025
@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch from 83bfe25 to d67674f Compare September 20, 2025 17:26
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Sep 20, 2025
@k8s-ci-robot
Copy link
Contributor

New changes are detected. LGTM label has been removed.

@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch 2 times, most recently from 135cacd to 0cc4c1c Compare September 20, 2025 17:35
@mauriciopoppe mauriciopoppe force-pushed the csi-proxy-host-process-container branch from 0cc4c1c to 6bfa38f Compare September 20, 2025 21:43
Copy link
Member Author

@mauriciopoppe mauriciopoppe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a few changes to the KEP:

  • Completed the section "Feature Enablement and Rollback"
  • Deprecation (mentioning that there's no deprecation of the v1 model)

Could you please take a look again @msau42? Also cc @torredil @andyzhangx @laozc, hopefully this goes to "alpha" in 1.35.

Copy link
Member

@torredil torredil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm for the alpha target, thank you @mauriciopoppe!


The core of this proposal is to:

- Refactor the CSI Proxy codebase to expose its API groups as importable Go packages, removing the client/server gRPC architecture.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a sig-storage meeting, @bswartz advocated for supporting both solutions (existing CSI-proxy, due to security benefits) and HostProcess mode. As I understand it, the current KEP proposes that HostProcess mode be a replacement for CSI-proxy. So I think this is something worth discussing more, seems like a really important decision that we should close on sooner rather than later.

Right now we maintain the HostProcess implementation in a separate branch over at https://github.com/kubernetes-csi/csi-proxy, which may not be ideal in the world where we decide to maintain both solutions.

cc: @msau42

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the comment. I added the following non-goal:

  • Deprecate the client/server model - This model is still used by the majority of CSI Driver implementations,
    adopting the new go module model will take time and in the meantime we still plan to maintain
    both models.

Also in the "Deprecation" section:

We plan to maintain both versions (the client/server model and the go library model) because the majority of CSI Drivers use the client/server model. There is no deprecation of the CSI Proxy v1 model.


Agreed, it's hard to maintain both solutions in different branches. At some point we made changes in the branches (moved master = v2, branch 1.x = v1) and that broke our internal release pipeline and might have broken other pipelines as well.

I can expand on how the branches will move in a separate document. I don't think we'll have updates in the branch assignments even when we reach GA.

@deads2k
Copy link
Contributor

deads2k commented Oct 21, 2025

This is a nice way to document how to leverage this feature for out of tree projects. PRR isn't needed since these projects are out of tree.

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: deads2k, mauriciopoppe

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@mauriciopoppe
Copy link
Member Author

Hey @marosset, this is an overdue KEP that we discussed in Kubecon NA 2022 (3 years ago!). I'd appreciate a review if you have the time, thanks!

/assign @marosset

@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle stale
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 19, 2026
@mauriciopoppe
Copy link
Member Author

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory sig/storage Categorizes an issue or PR as relevant to SIG Storage. sig/windows Categorizes an issue or PR as relevant to SIG Windows. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.