From 24f4bad8ed0dc04691a2c7a58f12c22053d687a7 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Wed, 9 Dec 2020 04:27:42 +0500 Subject: [PATCH] Add TN specific files --- test/minio/8.0.5/Chart.yaml | 3 - test/minio/8.0.5/README.md | 87 +----------- test/minio/8.0.5/app-readme.md | 1 + test/minio/8.0.5/questions.yaml | 156 +++++++++++++++++++++ test/minio/8.0.5/templates/deployment.yaml | 5 +- test/minio/8.0.5/values.yaml | 6 - test/minio/item.yaml | 4 + 7 files changed, 164 insertions(+), 98 deletions(-) create mode 100644 test/minio/8.0.5/app-readme.md create mode 100644 test/minio/8.0.5/questions.yaml create mode 100644 test/minio/item.yaml diff --git a/test/minio/8.0.5/Chart.yaml b/test/minio/8.0.5/Chart.yaml index dae38ea07d0..ed1225ae65d 100644 --- a/test/minio/8.0.5/Chart.yaml +++ b/test/minio/8.0.5/Chart.yaml @@ -11,6 +11,3 @@ home: https://min.io icon: https://min.io/resources/img/logo/MINIO_wordmark.png sources: - https://github.com/minio/minio -maintainers: -- name: MinIO, Inc - email: dev@minio.io diff --git a/test/minio/8.0.5/README.md b/test/minio/8.0.5/README.md index cce818f8185..dde5f41722f 100755 --- a/test/minio/8.0.5/README.md +++ b/test/minio/8.0.5/README.md @@ -99,8 +99,6 @@ The following table lists the configurable parameters of the MinIO chart and the | `extraArgs` | Additional command line arguments to pass to the MinIO server | `[]` | | `accessKey` | Default access key (5 to 20 characters) | random 20 chars | | `secretKey` | Default secret key (8 to 40 characters) | random 40 chars | -| `mountPath` | Default mount location for persistent drive | `/export` | -| `bucketRoot` | Directory from where minio should serve buckets. | Value of `.mountPath` | | `persistence.enabled` | Use persistent volume to store data | `true` | | `persistence.size` | Size of persistent volume claim | `500Gi` | | `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | @@ -109,90 +107,7 @@ The following table lists the configurable parameters of the MinIO chart and the | `persistence.subPath` | Mount a sub directory of the persistent volume if set | `""` | | `environment` | Set MinIO server relevant environment variables in `values.yaml` file. MinIO containers will be passed these variables when they start. | `MINIO_STORAGE_CLASS_STANDARD: EC:4"` | -Some of the parameters above map to the env variables defined in the [MinIO DockerHub image](https://hub.docker.com/r/minio/minio/). - -You can specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, - -```bash -$ helm install --name my-release --set persistence.size=1Ti minio/minio -``` - -The above command deploys MinIO server with a 1Ti backing persistent volume. - -Alternately, you can provide a YAML file that specifies parameter values while installing the chart. For example, - -```bash -$ helm install --name my-release -f values.yaml minio/minio -``` - -> **Tip**: You can use the default [values.yaml](minio/values.yaml) - -Distributed MinIO ------------ - -This chart provisions a MinIO server in standalone mode, by default. To provision MinIO server in [distributed mode](https://docs.minio.io/docs/distributed-minio-quickstart-guide), set the `mode` field to `distributed`, - -```bash -$ helm install --set mode=distributed minio/minio -``` - -This provisions MinIO server in distributed mode with 4 nodes. To change the number of nodes in your distributed MinIO server, set the `replicas` field, - -```bash -$ helm install --set mode=distributed,replicas=8 minio/minio -``` - -This provisions MinIO server in distributed mode with 8 nodes. Note that the `replicas` value should be a minimum value of 4, there is no limit on number of servers you can run. - -You can also expand an existing deployment by adding new zones, following command will create a total of 16 nodes with each zone running 8 nodes. - -```bash -$ helm install --set mode=distributed,replicas=8,zones=2 minio/minio -``` - -### StatefulSet [limitations](http://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/#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: - -```bash -$ helm install --set persistence.enabled=false minio/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."* - -Existing PersistentVolumeClaim ------------------------------- - -If a Persistent Volume Claim already exists, specify it during installation. - -1. Create the PersistentVolume -2. Create the PersistentVolumeClaim -3. Install the chart - -```bash -$ helm install --set persistence.existingClaim=PVC_NAME minio/minio -``` - -Configure TLS -------------- - -To enable TLS for MinIO containers, acquire TLS certificates from a CA or create self-signed certificates. While creating / acquiring certificates ensure the corresponding domain names are set as per the standard [DNS naming conventions](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-identity) in a Kubernetes StatefulSet (for a distributed MinIO setup). Then create a secret using - -```bash -$ kubectl create secret generic tls-ssl-minio --from-file=path/to/private.key --from-file=path/to/public.crt -``` - -Then install the chart, specifying that you want to use the TLS secret: - -```bash -$ helm install --set tls.enabled=true,tls.certSecret=tls-ssl-minio minio/minio -``` +Some parameters above map to the env variables defined in the [MinIO DockerHub image](https://hub.docker.com/r/minio/minio/). Pass environment variables to MinIO containers ---------------------------------------------- diff --git a/test/minio/8.0.5/app-readme.md b/test/minio/8.0.5/app-readme.md new file mode 100644 index 00000000000..246e247c39a --- /dev/null +++ b/test/minio/8.0.5/app-readme.md @@ -0,0 +1 @@ +[MinIO](https://min.io) is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads. diff --git a/test/minio/8.0.5/questions.yaml b/test/minio/8.0.5/questions.yaml new file mode 100644 index 00000000000..1bec762afa5 --- /dev/null +++ b/test/minio/8.0.5/questions.yaml @@ -0,0 +1,156 @@ +groups: + - name: "Container Images" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Storage" + description: "Configure Storage for Nextcloud" + - name: "Minio Configuration" + description: "Configure Minio credentials" + +portals: + web_portal: + protocols: + - "http" + host: + - "$variable-nextcloud.host" + ports: + - "$variable-service.nodePort" + +questions: + # Image related + - variable: image + description: "Docker Image Details" + label: "Docker Image" + group: "Container Images" + schema: + type: dict + required: true + attrs: + - variable: repository + description: "Docker image repository" + label: "Image repository" + schema: + type: string + default: "minio/minio" + required: true + - variable: tag + description: "Tag to use for specified image" + label: "Image Tag" + schema: + type: string + default: "RELEASE.2020-11-19T23-48-16Z" + - variable: pullPolicy + description: "Docker Image Pull Policy" + label: "Image Pull Policy" + schema: + type: string + default: "IfNotPresent" + enum: + - value: "IfNotPresent" + description: "Only pull image if not present on host" + - value: "Always" + description: "Always pull image even if present on host" + - value: "Never" + description: "Never pull image even if it's not present on host" + + - variable: updateStrategy + label: "Minio update strategy" + group: "Workload Configuration" + schema: + type: string + default: "RollingUpdate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + - variable: extraArgs + label: "Minio Extra Arguments" + group: "Minio Configuration" + schema: + type: list + default: [] + items: + - variable: arg + label: "Argument" + schema: + type: string + + - variable: accessKey + label: "Access Key" + group: "Minio Configuration" + schema: + type: string + required: true + min_length: 5 + max_length: 20 + + - variable: secretKey + label: "Secret Key" + schema: + type: string + required: true + min_length: 8 + max_length: 40 + + - variable: environment + label: "Minio image environment" + group: "Minio Configuration" + schema: + type: dict + additional_attrs: true + + - variable: service + description: "Minio Service Configuration" + label: "Minio Service Configuration" + group: "Minio Configuration" + schema: + type: dict + required: true + attrs: + - variable: nodePort + label: "Node Port to use for Minio" + schema: + type: int + min: 9000 + max: 65535 + default: 9001 + required: true + + - variable: nextcloudDataHostPathEnabled + label: "Configure Host Path for Nextcloud data" + group: "Storage" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: nextcloudHostPath + label: "Specify HostPath for Nextcloud data" + schema: + type: hostpath + + - variable: nextcloudDataVolume + label: "Configure iXVolume" + group: "Storage" + schema: + type: dict + $ref: + - "normalize/ixVolume" + show_if: [["nextcloudDataHostPathEnabled", "=", false]] + attrs: + - variable: mountPath + label: "Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + default: "/var/www" + - variable: datasetName + label: "Dataset Name" + schema: + type: string + default: "ix-nextcloud_data" + editable: false diff --git a/test/minio/8.0.5/templates/deployment.yaml b/test/minio/8.0.5/templates/deployment.yaml index 5e5f12f1e4f..eaf323a290f 100644 --- a/test/minio/8.0.5/templates/deployment.yaml +++ b/test/minio/8.0.5/templates/deployment.yaml @@ -1,5 +1,4 @@ {{ $scheme := "http" }} -{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }} apiVersion: {{ template "minio.deployment.apiVersion" . }} kind: Deployment metadata: @@ -34,11 +33,11 @@ spec: command: - "/bin/sh" - "-ce" - - "/usr/bin/docker-entrypoint.sh minio -S server {{ $bucketRoot }} {{- template "minio.extraArgs" . }}" + - "/usr/bin/docker-entrypoint.sh minio -S server /export {{- template "minio.extraArgs" . }}" volumeMounts: {{- if .Values.persistence.enabled }} - name: export - mountPath: {{ .Values.mountPath }} + mountPath: /export {{- if .Values.persistence.subPath }} subPath: "{{ .Values.persistence.subPath }}" {{- end }} diff --git a/test/minio/8.0.5/values.yaml b/test/minio/8.0.5/values.yaml index 5c07fbb2089..4265d5f848a 100644 --- a/test/minio/8.0.5/values.yaml +++ b/test/minio/8.0.5/values.yaml @@ -17,12 +17,6 @@ updateStrategy: RollingUpdate ## accessKey: "" secretKey: "" -mountPath: "/export" - -## Override the root directory which the minio server should serve from. -## If left empty, it defaults to the value of {{ .Values.mountPath }} -## If defined, it must be a sub-directory of the path specified in {{ .Values.mountPath }} -bucketRoot: "" ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ diff --git a/test/minio/item.yaml b/test/minio/item.yaml new file mode 100644 index 00000000000..4f175acf54a --- /dev/null +++ b/test/minio/item.yaml @@ -0,0 +1,4 @@ +categories: + - storage + - S3 +icon_url: https://min.io/resources/img/logo/MINIO_wordmark.png