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

Add csi-proxy project #362

Merged
merged 1 commit into from
Jul 23, 2021
Merged

Conversation

jingxu97
Copy link
Contributor

Add csi-proxy project in docs

@k8s-ci-robot k8s-ci-robot added do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Sep 10, 2020
@k8s-ci-robot k8s-ci-robot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Sep 10, 2020
@jingxu97
Copy link
Contributor Author

cc @msau42

@jingxu97 jingxu97 force-pushed the sep/csiproxy branch 2 times, most recently from 028469f to 0924dbf Compare September 10, 2020 21:28
@xing-yang
Copy link
Contributor

/release-note-none

@k8s-ci-robot k8s-ci-robot added release-note-none Denotes a PR that doesn't merit a release note. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Sep 16, 2020
@@ -31,6 +31,7 @@
- [Volume Snapshot & Restore](snapshot-restore-feature.md)
- [Ephemeral Local Volumes](ephemeral-local-volumes.md)
- [Volume Limits](volume-limits.md)
- [CSI proxy](csi-proxy.md)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we have 2 pages?

One for the csi proxy component, which should go under "Kubernetes Cluster Controllers", and one for Windows, which should go under "Features".

The csi-proxy page focuses on what a cluster operator needs to do to deploy the csi-proxy, and the Windows feature page focuses on how csi driver authors can add Windows support to their driver.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated


Status | Min K8s Version | Max K8s Version
--|--|--
Alpha | 1.18 | -
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you put the actual version in this column?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

it is the actual version?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I mean a number like "v0.1.0"


Run csi-proxy.exe binary directly on Window node. Command line options

* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link
Collaborator

Choose a reason for hiding this comment

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

What is this path used for? Do we append "/plugins_registry or /plugins" after it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

this path is mainly for validating the path requested from client is valid (under pod volume dir), not some other arbitrary path for security reason.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you add more details of what this path is used for in the description of this field? The name of this field is also confusing because it's the kubelet root, not the plugins path.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we are in the process of hanging this part to use kublet-path instead of two to match the name. will update it after the change is done.

Copy link
Collaborator

Choose a reason for hiding this comment

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

has this been updated for v1?

Copy link

Choose a reason for hiding this comment

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

-kubelet-csi-plugins-path and -kubelet-pod-path below should be replaced with (or noted as removed in favor of) -kubelet-pod-path in v1.0.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated, thanks!


* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).

* `-kubelet-pod-path`: This is the prefix path of the kubelet pod directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is assuming "/pods" are appended afterwards?

Should this just be the kubelet root directory?

Copy link
Contributor Author

@jingxu97 jingxu97 Mar 12, 2021

Choose a reason for hiding this comment

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

at the initial design, it was set to pod dir, but then due to some issue (I forgot the cause), we relax it to the upper level path in there https://github.com/kubernetes-csi/csi-proxy/pull/28/files

So that's why we say it is prefix. I think the idea is user might still set it to different paths as they desire. We could use one parameter like kublet dir, but to change this, it would be user facing breaking change, so we try to avoid it unless very necessary.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we change this for the GA v1 version? I think this field is a little confusing because pod path is usually "/var/lib/kubelet/pods". Especially because this path and the csi-plugins-path is the same. Can we combine the two options?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, we plan to do it.


CSI Proxy is a binary that exposes a set of gRPC APIs around storage operations over named pipes in Windows. A container, such as CSI node plugins, can mount the named pipes depending on operations it wants to exercise on the host and invoke the APIs.

Each named pipe will support a specific version of an API (e.g. v1alpha1, v2beta1) that targets a specific area of storage (e.g. disk, volume, file, SMB, iSCSI).
Copy link
Collaborator

Choose a reason for hiding this comment

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

Where do these pipes get created?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added some examples \.\pipe\csi-proxy-disk-v1beta1


## Deployment

Directly run csi-proxy.exe binary or run it as a Windows Serivce.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Clarify this should be run on Kubernetes nodes.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 27, 2020

CSI Proxy is a binary that exposes a set of gRPC APIs around storage operations over named pipes in Windows. A container, such as CSI node plugins, can mount the named pipes depending on operations it wants to exercise on the host and invoke the APIs.

Each named pipe will support a specific version of an API (e.g. v1alpha1, v2beta1) that targets a specific area of storage (e.g. disk, volume, file, SMB, iSCSI). For example, `\\.\pipe\csi-proxy-filesystem-v1alpha1`, `\\.\pipe\csi-proxy-disk-v1beta1`
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there a place where every pipe is actually documented and we can point to?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

not really, just a short explanation on csi-proxy readme. https://github.com/kubernetes-csi/csi-proxy

Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we open an issue to investigate if we can have some api reference generator?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, we are checking on it

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows currently does not support privileged containers. To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) - that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileges storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).

## How to use the CSI Proxy for Windows?
The CSI Proxy executable - csi-proxy.exe - needs to be deployed and running on all Windows nodes in a cluster - similar to kubelet.exe, dockerd.exe, etc. This may be achieved by enhancing any existing Windows node setup mechanism or script used for installing and configuring dockerd.exe/containerd.exe, kubelet.exe, kubeproxy.exe, etc.
Copy link
Collaborator

Choose a reason for hiding this comment

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

The instructions for csi-proxy deployment should go in the csi-proxy page, and you can link to it from here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

kubernetes.io/os: windows
containers:
- name: csi-driver-registrar
image: gke.gcr.io/csi-node-driver-registrar:win-v1
Copy link
Collaborator

Choose a reason for hiding this comment

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

Let's use K8s community images instead of gke images.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done


## Overview

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows currently does not support privileged containers. To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) - that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileges storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).
Copy link
Collaborator

Choose a reason for hiding this comment

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

It would be good to mention somewhere that csi controller level operations/sidecars are not supported on Windows.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

Copy link
Collaborator

Choose a reason for hiding this comment

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

"To solve this problem, CSI Proxy is a binary that runs on the Windows host"

Copy link
Contributor Author

Choose a reason for hiding this comment

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

udpated

## How to use the CSI Proxy for Windows?
The CSI Proxy executable - csi-proxy.exe - needs to be deployed and running on all Windows nodes in a cluster - similar to kubelet.exe, dockerd.exe, etc. This may be achieved by enhancing any existing Windows node setup mechanism or script used for installing and configuring dockerd.exe/containerd.exe, kubelet.exe, kubeproxy.exe, etc.

The CSI Proxy executable surfaces a set of named pipes, each corresponding to a specific version of a storage API group. The set of storage API groups supported as of Beta are: Disks, Volumes, SMB, FileSystem. The daemonset specification of a CSI node plugin for Windows can mount the desired named pipes from CSI Proxy based on the version of the API groups that satisfy the privileged operations that the node-plugin needs to execute.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we link to the go-client that plugin authors can import into their csi driver? Do we have a sample driver they can use as an example?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we can use gce pd driver as an example


**Status:** Beta starting with v0.2.0

Status | Min K8s Version | Max K8s Version
Copy link
Collaborator

Choose a reason for hiding this comment

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

Similar to the other component pages, can you add a column for where the community binaries are located?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added, right now only in staging

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I will update this after promote to release is available.

Copy link

Choose a reason for hiding this comment

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

Let's update the entry here with v1.0

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated

Status | Min K8s Version | Max K8s Version
--|--|--
Alpha | 1.18 | -
Beta | 1.19 | -
Copy link
Collaborator

Choose a reason for hiding this comment

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

It would also be good to add a column for which version of node-driver-registrar and csi-proxy are required

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done


## Deployment

Directly run csi-proxy.exe binary or run it as a Windows Serivce on Kubernetes nodes.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you add a note here saying that is it the responsibility of the Kubernetes distribution or cluster admin to install csi-proxy

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@jingxu97
Copy link
Contributor Author

jingxu97 commented Mar 13, 2021

updated it to address comments.
sorry for the long delay.

@msau42 @xing-yang


CSI Proxy is a binary that exposes a set of gRPC APIs around storage operations over named pipes in Windows. A container, such as CSI node plugins, can mount the named pipes depending on operations it wants to exercise on the host and invoke the APIs.

Each named pipe will support a specific version of an API (e.g. v1alpha1, v2beta1) that targets a specific area of storage (e.g. disk, volume, file, SMB, iSCSI). For example, `\\.\pipe\csi-proxy-filesystem-v1alpha1`, `\\.\pipe\csi-proxy-disk-v1beta1`
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we open an issue to investigate if we can have some api reference generator?


Run csi-proxy.exe binary directly on Window node. Command line options

* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you add more details of what this path is used for in the description of this field? The name of this field is also confusing because it's the kubelet root, not the plugins path.


* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).

* `-kubelet-pod-path`: This is the prefix path of the kubelet pod directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we change this for the GA v1 version? I think this field is a little confusing because pod path is usually "/var/lib/kubelet/pods". Especially because this path and the csi-plugins-path is the same. Can we combine the two options?


Status | Min K8s Version | Min CSI proxy Version | Min Node Driver Registrar Version | latest artifacts
--|--|--
Beta | 1.19 | 0.2.0 | 1.3.0 | [binary](gs://k8s-staging-sig-storage/csi-proxy/csi-proxy-master.exe)
Copy link
Collaborator

Choose a reason for hiding this comment

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

For the binary, is it versioned? how do we get v0.2.0 vs v0.3.0?

We also really need to get the binary promotion issue solved. Artifacts in staging are generally automatically deleted after 30 days. We can't have anyone depending on the staging location.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Does the path include the version now?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I would say let's not publish the staging location for now and update this once we get the official version so that we don't have users depending on a staging version that could get garbage collected.


## Overview

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows currently does not support privileged containers. To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) - that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileges storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).
Copy link
Collaborator

Choose a reason for hiding this comment

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

"To solve this problem, CSI Proxy is a binary that runs on the Windows host"

The CSI Proxy executable surfaces a set of named pipes, each corresponding to a specific version of a storage API group. The set of storage API groups supported as of Beta are: Disks, Volumes, SMB, FileSystem. The daemonset specification of a CSI node plugin for Windows can mount the desired named pipes from CSI Proxy based on the version of the API groups that satisfy the privileged operations that the node-plugin needs to execute.


The following daemonset YAML shows how to mount various API groups from CSI Proxy into a CSI Node plugin:
Copy link
Collaborator

Choose a reason for hiding this comment

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

DaemonSet

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed

type: ""
- name: csi-proxy-filesystem-pipe
hostPath:
path: \\.\pipe\csi-proxy-filesystem-v1alpha1
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why is this still alpha?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed


CSI Proxy is a binary that exposes a set of gRPC APIs around storage operations over named pipes in Windows. A container, such as CSI node plugins, can mount the named pipes depending on operations it wants to exercise on the host and invoke the APIs.

Each named pipe will support a specific version of an API (e.g. v1alpha1, v2beta1) that targets a specific area of storage (e.g. disk, volume, file, SMB, iSCSI). For example, `\\.\pipe\csi-proxy-filesystem-v1alpha1`, `\\.\pipe\csi-proxy-disk-v1beta1`
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there any information we can provide about backwards compatibility of apigroups? How many api versions will csi-proxy support at a time?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

csi-proxy support backwards compatibility. So all api versions (alpha, beta, GA) are being supported.


## Status

Status | Min K8s Version | Min CSI proxy Version | Min Node Driver Registrar Version | latest artifacts
Copy link
Collaborator

Choose a reason for hiding this comment

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

When I preview this page, the table formatting does not seem correct

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated


## Overview

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows currently does not support privileged containers. To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) - that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileges storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).
Copy link
Collaborator

Choose a reason for hiding this comment

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

typo: privileges => privileged

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@msau42
Copy link
Collaborator

msau42 commented Apr 14, 2021

/assign @ddebroy
to also help review

@jingxu97
Copy link
Contributor Author

jingxu97 commented Jun 1, 2021

@msau42 @ddebroy PTAL. Once artifacts promotion is resolved, I will update the doc related to it.

Copy link

@ddebroy ddebroy left a comment

Choose a reason for hiding this comment

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

Couple of nits. Thanks for getting this up!


## Usage

Run csi-proxy.exe binary directly on Window node. Command line options
Copy link

Choose a reason for hiding this comment

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

nit: on Windows => on a Windows

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed


## Deployment

It the responsibility of the Kubernetes distribution or cluster admin to install csi-proxy. Directly run csi-proxy.exe binary or run it as a Windows Serivce on Kubernetes nodes.
Copy link

Choose a reason for hiding this comment

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

nit: Windows Service (spelling).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed


## Overview

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows currently does not support privileged containers. To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) is a binary that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileged storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).
Copy link

Choose a reason for hiding this comment

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

However, Windows currently does not support privileged containers => since the PRs for Windows privileged support are now merged, should we say, it is in the process of being introduced?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added a line there

@jingxu97
Copy link
Contributor Author

ping @msau42 @ddebroy


Run csi-proxy.exe binary directly on Window node. Command line options

* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link
Collaborator

Choose a reason for hiding this comment

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

has this been updated for v1?


* `-windows-service`: Configure as a Windows Service

* `-log_file`: If non-empty, use this log file. (Note: must set `logtostdrr`=false if setting -log_file)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this a flag from klog that uses underscores? (vs dashes for the other args)

Copy link
Contributor Author

Choose a reason for hiding this comment

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


Status | Min K8s Version | Min CSI proxy Version | Min Node Driver Registrar Version | latest artifacts
--|--|--
Beta | 1.19 | 0.2.0 | 1.3.0 | [binary](gs://k8s-staging-sig-storage/csi-proxy/csi-proxy-master.exe)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Does the path include the version now?

Copy link

@ddebroy ddebroy left a comment

Choose a reason for hiding this comment

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

A few comments to update based on v1 changes.


**Status:** Beta starting with v0.2.0

Status | Min K8s Version | Max K8s Version
Copy link

Choose a reason for hiding this comment

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

Let's update the entry here with v1.0


Run csi-proxy.exe binary directly on Window node. Command line options

* `-kubelet-csi-plugins-path`: This is the prefix path of the Kubelet plugin directory in the host file system (`C:\var\lib\kubelet` is used by default).
Copy link

Choose a reason for hiding this comment

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

-kubelet-csi-plugins-path and -kubelet-pod-path below should be replaced with (or noted as removed in favor of) -kubelet-pod-path in v1.0.


## Overview

CSI drivers (e.g. AzureDisk, GCE PD, etc.) are recommended to be deployed as containers. CSI driver’s node plugin typically runs on every worker node in the cluster (as a DaemonSet). Node plugin containers need to run with elevated privileges to perform storage related operations. However, Windows was not supporting privileged containers (Note: privileged containers a.k.a Host process is introduced as alpha feature in Kubernetes 1.22 very recently). To solve this problem, [CSI Proxy](https://github.com/kubernetes-csi/csi-proxy) is a binary that runs on the Windows host and executes a set of privileged storage operations on Windows nodes on behalf of containers in a CSI Node plugin daemonset. This enables multiple CSI Node plugin authors to execute privileged storage operations on Windows nodes without having to ship a custom privileged operation proxy (until privileged operations get enabled for containers in Windows in the future).
Copy link

Choose a reason for hiding this comment

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

couple of nits:
"CSI Node plugin authors to execute" => "CSI Node plugins to execute"
Let's remove "(until privileged operations get enabled for containers in Windows in the future)."

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

- name: plugin-dir
mountPath: C:\csi
- name: csi-proxy-disk-pipe
mountPath: \\.\pipe\csi-proxy-disk-v1beta2
Copy link

Choose a reason for hiding this comment

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

Let's update the api versions in this example to the latest - v1

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@jingxu97
Copy link
Contributor Author

@msau42 @ddebroy PTAL. THanks!


Run csi-proxy.exe binary directly on a Window node. Starting from v1.0.0, the command line options are

* -kubelet-path: This is the prefix path of the kubelet directory in the host file system
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you give an example?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Also add the backticks around the arg.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done


## Usage

Run csi-proxy.exe binary directly on a Window node. Starting from v1.0.0, the command line options are
Copy link
Collaborator

Choose a reason for hiding this comment

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

typo: "Windows"

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed


* `-kubelet-pod-path`: This is the prefix path of the kubelet pod directory in the host file system (`C:\var\lib\kubelet` is used by default).

* `-windows-service`: Configure as a Windows Service
Copy link
Collaborator

Choose a reason for hiding this comment

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

Are these options also available in 1.0? The indenting makes it seem like these options are not available in 1.0 anymore. Maybe for simplicilty, let's remove the detailed entries for the old kubelet path arguments, and just mention in the description for kubelet-path that it replaces kubelet-pod-path and kubelet-csi-plugins-path in previous versions.


Status | Min K8s Version | Min CSI proxy Version | Min Node Driver Registrar Version | latest artifacts
--|--|--
Beta | 1.19 | 0.2.0 | 1.3.0 | [binary](gs://k8s-staging-sig-storage/csi-proxy/csi-proxy-master.exe)
Copy link
Collaborator

Choose a reason for hiding this comment

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

I would say let's not publish the staging location for now and update this once we get the official version so that we don't have users depending on a staging version that could get garbage collected.

Add csi-proxy project in docs
@msau42
Copy link
Collaborator

msau42 commented Jul 23, 2021

/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 23, 2021
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jingxu97, msau42

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

The pull request process is described here

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

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 23, 2021
@k8s-ci-robot k8s-ci-robot merged commit 6d1cc8e into kubernetes-csi:master Jul 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. release-note-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants