Files
deprecated-helm-charts/stable/minio
Nitish Tiwari 70811f1f37 minio: Added configuration options and updated README (#348)
* Image tag details updated

* Updated README and added new configurations

* Added service type specific notes

* Send configPath flag only if its present

* Updated notes.txt

* Added distributed Minio support.

* Fix documentation

* Fix documentation

* Fix documentation

* Fix documentation

* Added loop in configMap

* Updated storage class annotation

* Changed the default service type to LoadBalancer

* Use .Values.resources for cpu and memory
2017-01-11 18:42:19 -08:00
..
2016-12-15 13:13:49 -08:00

Minio

Minio is a lightweight, AWS S3 compatible object storage server. It is best suited for storing unstructured data such as photos, videos, log files, backups, VM and container images. Size of an object can range from a few KBs to a maximum of 5TB. Minio server is light enough to be bundled with the application stack, similar to NodeJS, Redis and MySQL.

Minio supports distributed mode. In distributed mode, you can pool multiple drives (even on different machines) into a single object storage server.

Introduction

This chart bootstraps Minio deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.4+ with Beta APIs enabled for default standalone mode.
  • Kubernetes 1.5+ with Beta APIs enabled to run Minio in distributed mode.
  • PV provisioner support in the underlying infrastructure.

Installing the Chart

Install this chart using:

$ helm install stable/minio

The command deploys Minio on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Release name

An instance of a chart running in a Kubernetes cluster is called a release. Each release is identified by a unique name within the cluster. Helm automatically assigns a unique release name after installing the chart. You can also set your preferred name by:

$ helm install --name my-release stable/minio

Access and Secret keys

By default a pre-generated access and secret key will be used. To override the default keys, pass the access and secret keys as arguments to helm install.

$ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
    stable/minio

Uninstalling the Chart

Assuming your release is named as my-release, delete it using the command:

$ helm delete my-release

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

Configuration

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

Parameter Description Default
image Minio image name minio/minio
imageTag Minio image tag. Possible values listed here. latest
imagePullPolicy Image pull policy Always
mode Minio server mode (standalone or distributed) standalone
numberOfNodes Number of nodes (applicable only for Minio distributed mode). Should be 4 <= x <= 16 4
accessKey Default access key AKIAIOSFODNN7EXAMPLE
secretKey Default secret key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
configPath Default config file location ~/.minio
mountPath Default mount location for persistent drive /export
serviceType Kubernetes service type LoadBalancer
servicePort Kubernetes port where service is exposed 9000
persistence.enabled Use persistent volume to store data true
persistence.size Size of persistent volume claim 10Gi
persistence.storageClass Type of persistent volume claim generic
persistence.accessMode ReadWriteOnce or ReadOnly ReadWriteOnce
resources CPU/Memory resource requests/limits Memory: 256Mi, CPU: 100m

Some of the parameters above map to the env variables defined in the Minio DockerHub image.

You can specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install --name my-release \
  --set persistence.size=100Gi \
    stable/minio

The above command deploys Minio server with a 100Gi backing persistent volume.

Alternately, you can provide a YAML file that specifies parameter values while installing the chart. For example,

$ helm install --name my-release -f values.yaml stable/minio

Tip

: You can use the default values.yaml

Distributed Minio

This chart provisions a Minio server in standalone mode, by default. To provision Minio server in distributed mode, set the mode field to distributed,

$ helm install --set mode=distributed stable/minio

This provisions Minio server in distributed mode with 4 nodes. To change the number of nodes in your distributed Minio server, set the numberOfNodes field,

$ helm install --set mode=distributed,numberOfNodes=8 stable/minio

This provisions Minio server in distributed mode with 8 nodes. Note that the numberOfNodes value should be an integer between 4 and 16 (inclusive).

StatefulSet limitations applicable to distributed Minio

  1. StatefulSets need persistent storage, so the persistence.enabled flag is ignored when mode is set to distributed.
  2. When uninstalling a distributed Minio release, you'll need to manually delete volumes associated with the StatefulSet.

Persistence

This chart provisions a PersistentVolumeClaim and mounts corresponding persistent volume to default location /export. You'll need physical storage available in the Kubernetes cluster for this to work. If you'd rather use emptyDir, disable PersistentVolumeClaim by:

$ helm install --set persistence.enabled=false stable/minio

"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever."