Skip to content

Commit

Permalink
Bump rancher-vsphere-csi chart for 3.3.1-rancher7 (#559)
Browse files Browse the repository at this point in the history
Signed-off-by: Derek Nola <[email protected]>
  • Loading branch information
actions-user committed Nov 6, 2024
1 parent 6db1ba5 commit 3eca8e8
Show file tree
Hide file tree
Showing 22 changed files with 1,602 additions and 0 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: vSphere CSI
catalog.cattle.io/kube-version: '>= 1.27.0-0 < 1.32.0-0'
catalog.cattle.io/namespace: kube-system
catalog.cattle.io/os: linux,windows
catalog.cattle.io/permits-os: linux,windows
catalog.cattle.io/rancher-version: '>= 2.9.0-0'
catalog.cattle.io/release-name: vsphere-csi
apiVersion: v1
appVersion: 3.3.1-rancher7
description: vSphere Cloud Storage Interface (CSI)
icon: https://charts.rancher.io/assets/logos/vsphere-csi.svg
keywords:
- infrastructure
maintainers:
- email: [email protected]
name: Jiaqi Luo
- email: [email protected]
name: Brad Davidson
name: rancher-vsphere-csi
sources:
- https://github.com/kubernetes-sigs/vsphere-csi-driver
version: 3.3.1-rancher700
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# vSphere Container Storage Interface (CSI)

[vSphere Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/vsphere-csi-driver/tree/release-2.1/manifests/v2.1.0/vsphere-7.0u1/) is a specification designed to enable persistent storage volume management on Container Orchestrators (COs) such as Kubernetes. The specification allows storage systems to integrate with containerized workloads running on Kubernetes. Using CSI, storage providers, such as VMware, can write and deploy plugins for storage systems in Kubernetes without a need to modify any core Kubernetes code.

CSI allows volume plugins to be installed on Kubernetes clusters as extensions. Once a CSI compatible volume driver is deployed on a Kubernetes cluster, users can use the CSI to provision, attach, mount, and format the volumes exposed by the CSI driver.

The CSI driver for vSphere is `csi.vsphere.vmware.com`.

## Prerequisites

- vSphere 6.7 U3+
- Kubernetes v1.20+
- Out-of-tree vSphere Cloud Provider Interface (CPI)
- A Secret on your Kubernetes cluster that contains vSphere CSI configuration and credentials

## Installation

This chart requires a Secret in your Kubernetes cluster that contains the CSI configuration and credentials to connect to the vCenter. You can have the chart generate it for you, or create it yourself and provide the name of the Secret during installation.

<span style="color:orange">Warning</span>: When the option to generate the Secret is enabled, the credentials are visible in the API to authorized users. If you create the Secret yourself they will not be visible.

You can create a Secret in one of the following ways:

### <B>Option 1</b>: Create a Secret using the Rancher UI

Go to your cluster's project (Same project you will be installing the chart) > Resources > Secrets > Add Secret.
```yaml
# Example of data required in the Secret
# The csi-vsphere.conf key name is required, otherwise the installation will fail
csi-vsphere.conf: |
[Global]
cluster-id = "<cluster-id>"
user = "<username>"
password = "<password>"
port = "<port>"
insecure-flag = "<insecure-flag>"
[VirtualCenter "<host>"]
datacenters = "<dc-1>, <dc-2>, ..."
```
More information on CSI vSphere configuration [here](https://vsphere-csi-driver.sigs.k8s.io/driver-deployment/installation.html#create_k8s_secret).
### <B>Option 2</b>: Create a Secret using kubectl
Replace placeholders with actual values, and execute the following:
```bash
# The csi-vsphere.conf key name is required, otherwise the installation will fail
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: <secret-name>
namespace: <charts-namespace>
stringData:
csi-vsphere.conf: |
[Global]
cluster-id = "<cluster-id>"
user = "<username>"
password = "<password>"
port = "<port>"
insecure-flag = "<insecure-flag>"
[VirtualCenter "<host>"]
datacenters = "<dc-1>, <dc-2>, ..."
EOF
```

More information on managing Secrets using kubectl [here](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/).

## Migration

The CSI migration feature is only available for vSphere 7.0 U1.

## vSphere CSI with Topology

When deploying to a vSphere environment using zoning, the topology plugin can be enabled for the CSI to make intelligent volume provisioning decisions. More information on vSphere zoning and prerequisites for the CSI toplogy plugin can be found [here](https://docs.vmware.com/en/VMware-vSphere-Container-Storage-Plug-in/2.0/vmware-vsphere-csp-getting-started/GUID-162E7582-723B-4A0F-A937-3ACE82EAFD31.html#guidelines-and-best-practices-for-deployment-with-topology-0).

To enable the topology plugin, adjust the values for the chart as follows:

```yaml
topology:
enabled: true
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# vSphere Container Storage Interface (CSI)

[vSphere Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/vsphere-csi-driver) is a specification designed to enable persistent storage volume management on Container Orchestrators (COs) such as Kubernetes. The specification allows storage systems to integrate with containerized workloads running on Kubernetes. Using CSI, storage providers, such as VMware, can write and deploy plugins for storage systems in Kubernetes without a need to modify any core Kubernetes code.

CSI allows volume plugins to be installed on Kubernetes clusters as extensions. Once a CSI compatible volume driver is deployed on a Kubernetes cluster, users can use the CSI to provision, attach, mount, and format the volumes exposed by the CSI driver.

The CSI driver for vSphere is `csi.vsphere.vmware.com`.

## Prerequisites

- vSphere 6.7 U3+
- Kubernetes v1.14+
- Out-of-tree vSphere Cloud Provider Interface (CPI)
- A Secret on your Kubernetes cluster that contains vSphere CSI configuration and credentials (Refer to `README` or `Detailed Descriptions`)
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
questions:
- variable: vCenter.configSecret.generate
label: Generate CSI vSphere Config Secret
description: Generates a Secret that contains a CSI vSphere config and credentials (If the option to generate it is enabled, credentials will be visible in the API to authorized users)
type: boolean
default: true
required: true
group: vCenter Configuration
show_subquestion_if: true
subquestions:
- variable: vCenter.host
label: vCenter Host
description: IP address or FQDN of the vCenter
type: string

- variable: vCenter.datacenters
description: Comma-separated list of paths to data centers. E.g "<dc1-path>, <dc2-path>, ..."
label: Data Centers
type: string

- variable: vCenter.username
label: Username
description: Username for vCenter
type: string

- variable: vCenter.password
label: Password
description: Password for vCenter
type: password

- variable: vCenter.configSecret.name
label: CSI vSphere Config Secret Name
description: Name of the Secret that contains a CSI vSphere config and credentials (Will not be visible in the API. More info in the README)
type: string
group: vCenter Configuration
show_if: "vCenter.configSecret.generate=false"

- variable: csiMigration.enabled
label: Enable CSI Migration
description: Enable migration of volumes provisioned by in-tree vSphere provider to CSI (Available for vSphere 7.0 U1+ only)
type: boolean
default: false
group: Driver Configuration

- variable: csiAuthCheck.enabled
label: Enable authorization checks on operations involving datastores
type: boolean
default: true
group: Driver Configuration

- variable: onlineVolumeExtend.enabled
label: Enable Online Volume Extend
description: Enable expansion of PVCs that are in use by a Pod or mounted in a Node (Available for vSphere 7.0 U2+ only)
type: boolean
default: false
group: Driver Configuration

- variable: triggerCsiFullsync.enabled
label: Enable CSI Full Sync
description: Keeps CNS up to date with Kubernetes volume metadata information (such as PVs, PVCs, pods, and so on)
type: boolean
default: false
group: Driver Configuration

- variable: asyncQueryVolume.enabled
label: Enable Async Query Volume
description: Improves retrieval of volume information
type: boolean
default: false
group: Driver Configuration

- variable: improvedCsiIdempotency.enabled
label: Enable Improved CSI Idempotency
description: Enhances driver to ensure volume operations are idempotent
type: boolean
default: false
group: Driver Configuration

- variable: improvedVolumeTopology.enabled
label: Enable Improved Volume Topology
description: Allows using the topology feature without the need to mount vSphere credentials in the CSI node daemonset
type: boolean
default: false
group: Driver Configuration

- variable: multiVcenterCsiTopology.enabled
label: Enable Multi vCenter CSI Topology
description: Enables the vSphere CSI Driver to operate on a topology-aware Kubernetes Cluster (Generally this should always be enabled for CSI Plugin v3.1.0 and up)
type: boolean
default: true
group: Driver Configuration

- variable: csiWindowsSupport.enabled
label: Enable CSI Windows Support
description: Enables Windows support.
type: boolean
default: false
group: Driver Configuration

- variable: topology.enabled
label: Enable CSI Topology Plugin
description: Enables the CSI Topology Plugin
type: boolean
default: false
group: Driver Configuration

- variable: csiController.csiResizer.enabled
label: Enable CSI Volume Resizer
description: This feature is available for vSphere 7.0 U1+ only
type: boolean
default: false
group: Storage

- variable: blockVolumeSnapshot.enabled
label: Enable CSI Volume Snapshots
description: Enables CSI Snapshot support for vSphere PVs
type: boolean
default: false
group: Storage

- variable: storageClass.enabled
default: true
label: Create Storage Class
description: Create a storageClass with the vSphere CSI provisioner
type: boolean
required: true
show_subquestion_if: true
group: Storage
subquestions:
- variable: storageClass.name
label: Storage Class Name
default: "vsphere-csi-sc"
type: string

- variable: storageClass.isDefault
label: Default Storage Class
description: Set the Storage Class as the default
default: true
type: boolean

- variable: storageClass.allowVolumeExpansion
label: Allow Volume Expansion
description: Allows resizing the volume by editing the corresponding PVC object (Available for vSphere 7.0+ only)
default: false
type: boolean

- variable: storageClass.storagePolicyName
label: Storage Policy Name
description: Name of the Storage Policy created in vCenter
type: string

- variable: storageClass.datastoreURL
label: Data Store URL
description: URL of the data store to use for new volumes (If unspecified, any data store that matches the request will be selected).
type: string

- variable: csiNode.prefixPath
label: Prefix Path for `/var/lib/kubelet`
description: For some operating systems including RancherOS, RKE prefixes `/var/lib/kubelet` with `/opt/rke`. Add the prefix path of the location of /var/lib/kubelet
type: string
default: ""
group: Node Configuration

- variable: csiNode.prefixPathWindows
label: Prefix Path for `/var/lib/kubelet`
description: For some operating systems including RancherOS, RKE prefixes `/var/lib/kubelet` with `/opt/rke`. For Windows, this will likely be the default value, which is 'C:'
type: string
default: ""
group: Node Configuration
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{{- define "system_default_registry" -}}
{{- if .Values.global.cattle.systemDefaultRegistry -}}
{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}}
{{- else -}}
{{- "" -}}
{{- end -}}
{{- end -}}

{{- define "applyVersionOverrides" -}}
{{- $overrides := dict -}}
{{- range $override := .Values.versionOverrides -}}
{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}}
{{- $_ := mergeOverwrite $overrides $override.values -}}
{{- end -}}
{{- end -}}
{{- $_ := mergeOverwrite .Values $overrides -}}
{{- end -}}

{{/*
Windows cluster will add default taint for linux nodes,
add below linux tolerations to workloads could be scheduled to those linux nodes
*/}}
{{- define "linux-node-tolerations" -}}
- key: "cattle.io/os"
value: "linux"
effect: "NoSchedule"
operator: "Equal"
{{- end -}}

{{- define "linux-node-selector" -}}
kubernetes.io/os: linux
{{- end -}}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "chartName" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Labels that should be added on each resource
*/}}
{{- define "labels" -}}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ include "chartName" . }}
{{- end -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Source: https://github.com/kubernetes-sigs/vsphere-csi-driver
apiVersion: v1
data:
"csi-migration": {{ .Values.csiMigration.enabled | quote }}
"csi-auth-check": {{ .Values.csiAuthCheck.enabled | quote }}
"online-volume-extend": {{ .Values.onlineVolumeExtend.enabled | quote }}
"trigger-csi-fullsync": {{ .Values.triggerCsiFullsync.enabled | quote }}
"async-query-volume": {{ .Values.asyncQueryVolume.enabled | quote }}
"improved-csi-idempotency": {{ .Values.improvedCsiIdempotency.enabled | quote }}
"improved-volume-topology": {{ .Values.improvedVolumeTopology.enabled | quote }}
"block-volume-snapshot": {{ .Values.blockVolumeSnapshot.enabled | quote }}
"csi-windows-support": {{ .Values.csiWindowsSupport.enabled | quote }}
"use-csinode-id": {{ .Values.useCsinodeId.enabled | quote }}
"list-volumes": {{ .Values.listVolumes.enabled | quote }}
"pv-to-backingdiskobjectid-mapping": {{ .Values.pvToBackingdiskobjectidMapping.enabled | quote }}
"cnsmgr-suspend-create-volume": {{ .Values.cnsmgrSuspendCreateVolume.enabled | quote }}
"topology-preferential-datastores": {{ .Values.topologyPreferentialDatastores.enabled | quote }}
"max-pvscsi-targets-per-vm": {{ .Values.maxPvscsiTargetsPerVm.enabled | quote }}
"multi-vcenter-csi-topology": {{ .Values.multiVcenterCsiTopology.enabled | quote }}
kind: ConfigMap
metadata:
name: internal-feature-states.csi.vsphere.vmware.com
namespace: {{ .Release.Namespace }}
Loading

0 comments on commit 3eca8e8

Please sign in to comment.