rancher-partner-charts/charts/ondat/ondat-operator/0.7.4
Adam Pickering 91a6f4fc44
Migrate charts directory (vendors starting with M-P) (#1047)
2024-07-08 16:54:58 -06:00
..
ci Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
crds Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
templates Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
Chart.yaml Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
LICENSE Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
README.md Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
app-readme.md Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
questions.yml Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00
values.yaml Migrate charts directory (vendors starting with M-P) (#1047) 2024-07-08 16:54:58 -06:00

README.md

Ondat Operator Helm Chart

Note: This chart requires Helm 3 and defaults to StorageOS v2. To upgrade from a previous chart or from StorageOS version 1.x to 2.x, please contact support for assistance.

StorageOS is a cloud native, software-defined storage platform that transforms commodity server or cloud based disk capacity into enterprise-class persistent storage for containers. StorageOS volumes offer high throughput, low latency and consistent performance, and are therefore ideal for deploying databases, message queues, and other mission-critical stateful solutions. StorageOS Project edition also offers ReadWriteMany volumes that are concurrently accessible by multiple applications.

The Ondat Operator installs and manages StorageOS within a cluster. Cluster nodes may contribute local or attached disk-based storage into a distributed pool, which is then available to all cluster members via a global namespace.

Volumes are available across the cluster so if an application container gets moved to another node it has immediate access to re-attach its data.

StorageOS is extremely lightweight - minimum requirements are a reserved CPU core and 2GB of free memory. There are minimal external dependencies, and no custom kernel modules.

After StorageOS is installed, please register for a free personal license to enable 1TiB of capacity and HA with synchronous replication by following the instructions here. For additional capacity, features and support plans contact sales@ondat.io.

Highlighted Features

  • High Availability - synchronous replication insulates you from node failure.
  • Delta Sync - replicas out of sync due to transient failures only transfer changed blocks.
  • Multiple AccessModes - dynamically provision ReadWriteOnce or ReadWriteMany volumes.
  • Rapid Failover - quickly detects node failure and automates recovery actions without administrator intervention.
  • Data Encryption - both in transit and at rest.
  • Scalability - disaggregated consensus means no single scheduling point of failure.
  • Thin provisioning - only consume the space you need in a storage pool.
  • Data reduction - transparent inline data compression to reduce the amount of storage used in a backing store as well as reducing the network bandwidth requirements for replication.
  • Flexible configuration - all features can be enabled per volume, using PVC and StorageClass labels.
  • Multi-tenancy - fully supports standard Namespace and RBAC methods.
  • Observability & instrumentation - Log streams for observability and Prometheus support for instrumentation.
  • Deployment flexibility - scale up or scale out storage based on application requirements. Works with any infrastructure on-premises, VM, bare metal or cloud.

About StorageOS

StorageOS is a software-defined cloud native storage platform delivering persistent storage for Kubernetes. StorageOS is built from the ground-up with no legacy restrictions to give enterprises working with cloud native workloads a scalable storage platform with no compromise on performance, availability or security. For additional information, visit www.ondat.io.

This chart installs a Ondat Cluster Operator which helps deploy and configure a StorageOS cluster on kubernetes.

Prerequisites

  • Helm 3
  • Kubernetes 1.18+
  • Privileged mode containers (enabled by default)
  • Etcd cluster

Refer to the StorageOS prerequisites docs for more information.

Installing the chart

# Add ondat charts repo.
$ helm repo add ondat https://ondat.github.io/charts
# Install the chart in a namespace.
$ kubectl create namespace ondat-operator
$ helm install my-ondat ondat/ondat-operator \
    --namespace ondat-operator \
    --set cluster.kvBackend.address=<etcd-node-ip>:2379 \
    --set cluster.admin.password=<password>

This will install the Ondat cluster operator in ondat-operator namespace and deploys StorageOS with a minimal configuration. Etcd address (kvBackend) and admin password are mandatory values to install the chart.

The password must be at least 8 characters long and the default username is storageos, which can be changed like the above values. Find more information about installing etcd in our etcd docs.

To avoid passing the password as a flag, install the chart with the values file. Create a values.yaml file and pass the file name with --values flag.

cluster:
  kvBackend:
    address: <etcd-node-ip>:2379
  admin:
    password: <password>
$ helm install ondat/ondat-operator \
    --namespace ondat-operator \
    --values <values-file>

Tip: List all releases using helm list -A

Creating a StorageOS cluster manually

The Helm chart supports a subset of StorageOSCluster custom resource parameters. For advanced configurations, you may wish to create the cluster resource manually and only use the Helm chart to install the Operator.

To disable auto-provisioning the cluster with the Helm chart, set cluster.create to false:

cluster:
  ...
  create: false

Create a secret to store storageos cluster secrets:

apiVersion: v1
kind: Secret
metadata:
  name: "storageos-api"
  namespace: <storageos-cluster-namespace>
  labels:
    app: "storageos"
type: "kubernetes.io/storageos"
data:
  # echo -n '<secret>' | base64
  username: c3RvcmFnZW9z
  password: c3RvcmFnZW9z

Create a StorageOSCluster custom resource and refer the above secret in the secretRefName field.

apiVersion: "storageos.com/v1"
kind: "StorageOSCluster"
metadata:
  name: "example-storageos"
  namespace: <storageos-cluster-namespace>
spec:
  secretRefName: "storageos-api"
  kvBackend:
    address: "etcd-client.etcd.svc.cluster.local:2379"
    # address: '10.42.15.23:2379,10.42.12.22:2379,10.42.13.16:2379' # You can set ETCD server IPs.
  storageClassName: "storageos"

Learn more about advanced configuration options here.

To check cluster status, run:

$ kubectl get storageoscluster --namespace <storageos-cluster-namespace>
NAME                READY     STATUS    AGE
example-storageos   3/3       Running   4m

All the events related to this cluster are logged as part of the cluster object and can be viewed by describing the object.

$ kubectl describe storageoscluster example-storageos --namespace <storageos-cluster-namespace>
Name:         example-storageos
Namespace:    default
Labels:       <none>
...
...
Events:
  Type     Reason         Age              From                       Message
  ----     ------         ----             ----                       -------
  Warning  ChangedStatus  1m (x2 over 1m)  storageos-operator  0/3 StorageOS nodes are functional
  Normal   ChangedStatus  35s              storageos-operator  3/3 StorageOS nodes are functional. Cluster healthy

Configuration

The following tables lists the configurable parameters of the StorageOSCluster Operator chart and their default values.

Parameter Description Default
operator.image.repository StorageOS Operator container image repository storageos/operator
operator.image.tag StorageOS Operator container image tag v2.5.0
operator.image.pullPolicy StorageOS Operator container image pull policy IfNotPresent
cluster.create If true, auto-create the StorageOS cluster true
cluster.name Name of the storageos deployment storageos
cluster.namespace Namespace to install the StorageOS cluster into
storageos
cluster.secretRefName Name of the secret containing StorageOS API credentials storageos-api
cluster.admin.username Username to authenticate to the StorageOS API with storageos
cluster.admin.password Password to authenticate to the StorageOS API with
cluster.sharedDir The path shared into to kubelet container when running kubelet in a container
cluster.kvBackend.address List of etcd targets, in the form ip[:port], separated by commas
cluster.kvBackend.backend Key-Value store backend name etcd
cluster.kvBackend.tlsSecretName Name of the secret containing kv backend tls cert
cluster.kvBackend.tlsSecretNamespace Namespace of the secret containing kv backend tls cert
cluster.nodeSelectorTerm.key Key of the node selector term used for pod placement
cluster.nodeSelectorTerm.value Value of the node selector term used for pod placement
cluster.toleration.key Key of the pod toleration parameter
cluster.toleration.value Value of the pod toleration parameter
cluster.disableTelemetry If true, no telemetry data will be collected from the cluster false
cluster.storageClassName Name of the StorageClass to be created storageos
cluster.images.apiManager.repository StorageOS API Manager container image repository
cluster.images.apiManager.tag StorageOS API Manager container image tag
cluster.images.csiV1ExternalAttacherV3.repository CSI v1 External Attacher v3 image repository
cluster.images.csiV1ExternalAttacherV3.tag CSI v1 External Attacher v3 image tag
cluster.images.csiV1ExternalProvisioner.repository CSI v1 External Provisioner image repository
cluster.images.csiV1ExternalProvisioner.tag CSI v1 External Provisioner image tag
cluster.images.csiV1ExternalResizer.repository CSI v1 External Resizer image repository
cluster.images.csiV1ExternalResizer.tag CSI v1 External Resizer image tag
cluster.images.csiV1LivenessProbe.repository CSI v1 Liveness Probe image repository
cluster.images.csiV1LivenessProbe.tag CSI v1 Liveness Probe image tag
cluster.images.csiV1NodeDriverRegistrar.repository CSI v1 Node Driver Registrar image repository
cluster.images.csiV1NodeDriverRegistrar.tag CSI v1 Node Driver Registrar image tag
cluster.images.init.repository StorageOS init container image repository
cluster.images.init.tag StorageOS init container image tag
cluster.images.node.repository StorageOS Node container image repository
cluster.images.node.tag StorageOS Node container image tag

Deleting a StorageOS Cluster

Deleting the StorageOSCluster custom resource object would delete the storageos cluster and its associated resources.

In the above example,

$ kubectl delete storageoscluster example-storageos --namespace <storageos-cluster-namespace>

would delete the custom resource and the cluster.

Uninstalling the Chart

To uninstall/delete the storageos cluster operator deployment:

$ helm uninstall <release-name> --namespace ondat-operator

If the chart was installed with cluster auto-provisioning enabled, chart uninstall will clean-up the installed StorageOS cluster resources as well.

Learn more about configuring the StorageOS Operator on GitHub.