Skip to content

Commit

Permalink
feat(chart): add helm chart for zfs local pv (#247)
Browse files Browse the repository at this point in the history

Signed-off-by: shubham <shubham.bajpai@mayadata.io>
  • Loading branch information
shubham14bajpai committed Jan 7, 2021
1 parent 90ecfe9 commit bd6df9b
Show file tree
Hide file tree
Showing 19 changed files with 2,555 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
name: release

on:
create:
push:
tags:
- 'v*'

Expand Down
23 changes: 23 additions & 0 deletions deploy/helm/charts/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
23 changes: 23 additions & 0 deletions deploy/helm/charts/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: v2
name: zfs-localpv
description: CSI Driver for dynamic provisioning of ZFS Persistent Local Volumes.
version: 1.2.0
appVersion: 1.2.1
icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/openebs/icon/color/openebs-icon-color.png
home: http://www.openebs.io/
keywords:
- cloud-native-storage
- block-storage
- filesystem
- ZFS
- Local Persistent Volumes
- storage
sources:
- https://github.com/openebs/zfs-localpv
maintainers:
- name: xUnholy
email: michaelfornaro@gmail.com
- name: prateekpandey14
email: prateek.pandey@mayadata.io
- name: pawanpraka1
email: pawan@mayadata.io
135 changes: 135 additions & 0 deletions deploy/helm/charts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@

# OpenEBS LocalPV Provisioner

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
![Chart Lint and Test](https://github.com/openebs/zfs-localpv/workflows/Chart%20Lint%20and%20Test/badge.svg)
![Release Charts](https://github.com/openebs/zfs-localpv/workflows/Release%20Charts/badge.svg?branch=develop)

A Helm chart for openebs zfs localpv provisioner. This chart bootstraps OpenEBS ZFS LocalPV provisioner deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.


**Homepage:** <http://www.openebs.io/>

## Maintainers

| Name | Email | Url |
| ---- | ------ | --- |
| pawanpraka1 | pawan@mayadata.io | |
| xUnholy | michaelfornaro@gmail.com | |
| prateekpandey14 | prateek.pandey@mayadata.io | |


## Get Repo Info

```console
helm repo add openebs-zfslocalpv https://openebs.github.io/zfs-localpv
helm repo update
```

_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._

## Install Chart

Please visit the [link](https://openebs.github.io/zfs-localpv/) for install instructions via helm3.

```console
# Helm
$ helm install [RELEASE_NAME] openebs-zfslocalpv/zfs-localpv
```

**Note:** If moving from the operator to helm
- Make sure the namespace provided in the helm install command is same as `OPENEBS_NAMESPACE` (by default it is `openebs`) env in the controller statefulset.
- Before installing, clean up the stale statefulset and daemonset from `kube-system` namespace using the below commands
```sh
kubectl delete sts openebs-zfs-controller -n kube-system
kubectl delete ds openebs-zfs-node -n kube-system
```


_See [configuration](#configuration) below._

_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._

## Uninstall Chart

```console
# Helm
$ helm uninstall [RELEASE_NAME]
```

This removes all the Kubernetes components associated with the chart and deletes the release.

_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._

## Upgrading Chart

```console
# Helm
$ helm upgrade [RELEASE_NAME] [CHART] --install
```

## Configuration

The following table lists the configurable parameters of the OpenEBS ZFS Localpv chart and their default values.

| Parameter| Description| Default|
| -| -| -|
| `imagePullSecrets`| Provides image pull secrect| `""`|
| `zfsPlugin.image.registry`| Registry for openebs-zfs-plugin image| `""`|
| `zfsPlugin.image.repository`| Image repository for openebs-zfs-plugin| `openebs/zfs-driver`|
| `zfsPlugin.image.pullPolicy`| Image pull policy for openebs-zfs-plugin| `IfNotPresent`|
| `zfsPlugin.image.tag`| Image tag for openebs-zfs-plugin| `1.1.0`|
| `zfsNode.driverRegistrar.image.registry`| Registry for csi-node-driver-registrar image| `quay.io/`|
| `zfsNode.driverRegistrar.image.repository`| Image repository for csi-node-driver-registrar| `k8scsi/csi-node-driver-registrar`|
| `zfsNode.driverRegistrar.image.pullPolicy`| Image pull policy for csi-node-driver-registrar| `IfNotPresent`|
| `zfsNode.driverRegistrar.image.tag`| Image tag for csi-node-driver-registrar| `v1.2.0`|
| `zfsNode.updateStrategy.type`| Update strategy for zfsnode daemonset | `RollingUpdate` |
| `zfsNode.kubeletDir`| Kubelet mount point for zfsnode daemonset| `"/var/lib/kubelet/"` |
| `zfsNode.annotations` | Annotations for zfsnode daemonset metadata| `""`|
| `zfsNode.podAnnotations`| Annotations for zfsnode daemonset's pods metadata | `""`|
| `zfsNode.resources`| Resource and request and limit for zfsnode daemonset containers | `""`|
| `zfsNode.labels`| Labels for zfsnode daemonset metadata | `""`|
| `zfsNode.podLabels`| Appends labels to the zfsnode daemonset pods| `""`|
| `zfsNode.nodeSelector`| Nodeselector for zfsnode daemonset pods| `""`|
| `zfsNode.tolerations` | zfsnode daemonset's pod toleration values | `""`|
| `zfsNode.securityContext` | Seurity context for zfsnode daemonset container | `""`|
| `zfsController.resizer.image.registry`| Registry for csi-resizer image| `quay.io/`|
| `zfsController.resizer.image.repository`| Image repository for csi-resizer| `k8scsi/csi-resizer`|
| `zfsController.resizer.image.pullPolicy`| Image pull policy for csi-resizer| `IfNotPresent`|
| `zfsController.resizer.image.tag`| Image tag for csi-resizer| `v0.4.0`|
| `zfsController.snapshotter.image.registry`| Registry for csi-snapshotter image| `quay.io/`|
| `zfsController.snapshotter.image.repository`| Image repository for csi-snapshotter| `k8scsi/csi-snapshotter`|
| `zfsController.snapshotter.image.pullPolicy`| Image pull policy for csi-snapshotter| `IfNotPresent`|
| `zfsController.snapshotter.image.tag`| Image tag for csi-snapshotter| `v2.0.1`|
| `zfsController.snapshotController.image.registry`| Registry for snapshot-controller image| `quay.io/`|
| `zfsController.snapshotController.image.repository`| Image repository for snapshot-controller| `k8scsi/snapshot-controller`|
| `zfsController.snapshotController.image.pullPolicy`| Image pull policy for snapshot-controller| `IfNotPresent`|
| `zfsController.snapshotController.image.tag`| Image tag for snapshot-controller| `v2.0.1`|
| `zfsController.provisioner.image.registry`| Registry for csi-provisioner image| `quay.io/`|
| `zfsController.provisioner.image.repository`| Image repository for csi-provisioner| `k8scsi/csi-provisioner`|
| `zfsController.provisioner.image.pullPolicy`| Image pull policy for csi-provisioner| `IfNotPresent`|
| `zfsController.provisioner.image.tag`| Image tag for csi-provisioner| `v1.6.0`|
| `zfsController.updateStrategy.type`| Update strategy for zfs localpv controller statefulset | `RollingUpdate` |
| `zfsController.annotations` | Annotations for zfs localpv controller statefulset metadata| `""`|
| `zfsController.podAnnotations`| Annotations for zfs localpv controller statefulset's pods metadata | `""`|
| `zfsController.resources`| Resource and request and limit for zfs localpv controller statefulset containers | `""`|
| `zfsController.labels`| Labels for zfs localpv controller statefulset metadata | `""`|
| `zfsController.podLabels`| Appends labels to the zfs localpv controller statefulset pods| `""`|
| `zfsController.nodeSelector`| Nodeselector for zfs localpv controller statefulset pods| `""`|
| `zfsController.tolerations` | zfs localpv controller statefulset's pod toleration values | `""`|
| `zfsController.securityContext` | Seurity context for zfs localpv controller statefulset container | `""`|
| `serviceAccount.zfsNode.create` | Create a service account for zfsnode or not| `true`|
| `serviceAccount.zfsNode.name` | Name for the zfsnode service account| `openebs-zfs-node-sa`|
| `serviceAccount.zfsController.create` | Create a service account for zfs localpv controller or not| `true`|
| `serviceAccount.zfsController.name` | Name for the zfs localpv controller service account| `openebs-zfs-controller-sa`|
| `analytics.enabled` | Enable or Disable google analytics for the controller| `true`|

Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

```bash
helm install <release-name> -f values.yaml openebs/zfs-localpv
```

> **Tip**: You can use the default [values.yaml](values.yaml)
111 changes: 111 additions & 0 deletions deploy/helm/charts/crds/volumesnapshotclasses.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/419"
creationTimestamp: null
name: volumesnapshotclasses.snapshot.storage.k8s.io
spec:
group: snapshot.storage.k8s.io
names:
kind: VolumeSnapshotClass
listKind: VolumeSnapshotClassList
plural: volumesnapshotclasses
singular: volumesnapshotclass
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .driver
name: Driver
type: string
- description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
jsonPath: .deletionPolicy
name: DeletionPolicy
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1
schema:
openAPIV3Schema:
description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
deletionPolicy:
description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required.
enum:
- Delete
- Retain
type: string
driver:
description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required.
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
parameters:
additionalProperties:
type: string
description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes.
type: object
required:
- deletionPolicy
- driver
type: object
served: true
storage: false
subresources: {}
- additionalPrinterColumns:
- jsonPath: .driver
name: Driver
type: string
- description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted.
jsonPath: .deletionPolicy
name: DeletionPolicy
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1beta1
schema:
openAPIV3Schema:
description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
deletionPolicy:
description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required.
enum:
- Delete
- Retain
type: string
driver:
description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required.
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
parameters:
additionalProperties:
type: string
description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes.
type: object
required:
- deletionPolicy
- driver
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
Loading

0 comments on commit bd6df9b

Please sign in to comment.