From aff196ae57df2badf730ebd618cb64afd77fb585 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 1 Sep 2021 16:27:12 -0700 Subject: [PATCH] add helm chart support for gateway --- helm/minio/Chart.yaml | 10 +- helm/minio/templates/deployment.yaml | 2 +- helm/minio/templates/gateway-deployment.yaml | 125 +++++++++++++++++++ helm/minio/templates/statefulset.yaml | 2 +- helm/minio/values.yaml | 14 ++- index.yaml | 40 ++++-- 6 files changed, 175 insertions(+), 18 deletions(-) create mode 100644 helm/minio/templates/gateway-deployment.yaml diff --git a/helm/minio/Chart.yaml b/helm/minio/Chart.yaml index 80b4452a3..e74d903de 100644 --- a/helm/minio/Chart.yaml +++ b/helm/minio/Chart.yaml @@ -1,12 +1,14 @@ apiVersion: v1 description: Multi-Cloud Object Storage name: minio -version: 2.0.1 +version: 3.0.0 appVersion: RELEASE.2021-08-31T05-46-54Z keywords: -- storage -- object-storage -- S3 + - minio + - storage + - object-storage + - s3 + - cluster home: https://min.io icon: https://min.io/resources/img/logo/MINIO_wordmark.png sources: diff --git a/helm/minio/templates/deployment.yaml b/helm/minio/templates/deployment.yaml index 9a94f50eb..b69473de7 100644 --- a/helm/minio/templates/deployment.yaml +++ b/helm/minio/templates/deployment.yaml @@ -65,7 +65,7 @@ spec: command: - "/bin/sh" - "-ce" - - "/usr/bin/docker-entrypoint.sh minio -S {{ .Values.certsPath }} server --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{ $bucketRoot }} {{- template "minio.extraArgs" . }}" + - "/usr/bin/docker-entrypoint.sh minio server {{ $bucketRoot }} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template "minio.extraArgs" . }}" volumeMounts: {{- if .Values.persistence.enabled }} - name: export diff --git a/helm/minio/templates/gateway-deployment.yaml b/helm/minio/templates/gateway-deployment.yaml new file mode 100644 index 000000000..5196380b1 --- /dev/null +++ b/helm/minio/templates/gateway-deployment.yaml @@ -0,0 +1,125 @@ +{{- if eq .Values.mode "gateway" }} +{{ $scheme := "http" }} +{{- if .Values.tls.enabled }} +{{ $scheme = "https" }} +{{ end }} +{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }} +apiVersion: {{ template "minio.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "minio.fullname" . }} + labels: + app: {{ template "minio.name" . }} + chart: {{ template "minio.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- if .Values.additionalLabels }} +{{ toYaml .Values.additionalLabels | trimSuffix "\n" | indent 4 }} +{{- end }} +{{- if .Values.additionalAnnotations }} + annotations: +{{ toYaml .Values.additionalAnnotations | trimSuffix "\n" | indent 4 }} +{{- end }} +spec: + strategy: + type: {{ .Values.DeploymentUpdate.type }} + {{- if eq .Values.DeploymentUpdate.type "RollingUpdate" }} + rollingUpdate: + maxSurge: {{ .Values.DeploymentUpdate.maxSurge }} + maxUnavailable: {{ .Values.DeploymentUpdate.maxUnavailable }} + {{- end}} + replicas: {{ .Values.gateway.replicas }} + selector: + matchLabels: + app: {{ template "minio.name" . }} + release: {{ .Release.Name }} + template: + metadata: + name: {{ template "minio.fullname" . }} + labels: + app: {{ template "minio.name" . }} + release: {{ .Release.Name }} +{{- if .Values.podLabels }} +{{ toYaml .Values.podLabels | indent 8 }} +{{- end }} + annotations: + checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} +{{- if .Values.podAnnotations }} +{{ toYaml .Values.podAnnotations | trimSuffix "\n" | indent 8 }} +{{- end }} + spec: + {{- if .Values.priorityClassName }} + priorityClassName: "{{ .Values.priorityClassName }}" + {{- end }} +{{- if and .Values.securityContext.enabled .Values.persistence.enabled }} + securityContext: + runAsUser: {{ .Values.securityContext.runAsUser }} + runAsGroup: {{ .Values.securityContext.runAsGroup }} + fsGroup: {{ .Values.securityContext.fsGroup }} +{{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - "/bin/sh" + - "-ce" + - "/usr/bin/docker-entrypoint.sh minio gateway nas {{ $bucketRoot }} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template "minio.extraArgs" . }} " + volumeMounts: + {{- if .Values.persistence.enabled }} + - name: export + mountPath: {{ .Values.mountPath }} + {{- if .Values.persistence.subPath }} + subPath: "{{ .Values.persistence.subPath }}" + {{- end }} + {{- end }} + {{- include "minio.tlsKeysVolumeMount" . | indent 12 }} + ports: + - name: {{ $scheme }} + containerPort: {{ .Values.minioAPIPort }} + - name: {{ $scheme }}-console + containerPort: {{ .Values.minioConsolePort }} + env: + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: {{ template "minio.secretName" . }} + key: rootUser + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "minio.secretName" . }} + key: rootPassword + {{- range $key, $val := .Values.environment }} + - name: {{ $key }} + value: {{ $val | quote }} + {{- end}} + resources: +{{ toYaml .Values.resources | indent 12 }} +{{- with .Values.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} +{{- end }} +{{- include "minio.imagePullSecrets" . | indent 6 }} +{{- with .Values.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + volumes: + - name: export + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "minio.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end }} + - name: minio-user + secret: + secretName: {{ template "minio.secretName" . }} + {{- include "minio.tlsKeysVolume" . | indent 8 }} +{{- end }} diff --git a/helm/minio/templates/statefulset.yaml b/helm/minio/templates/statefulset.yaml index 11c53a288..c82f57bca 100644 --- a/helm/minio/templates/statefulset.yaml +++ b/helm/minio/templates/statefulset.yaml @@ -91,7 +91,7 @@ spec: command: [ "/bin/sh", "-ce", - "/usr/bin/docker-entrypoint.sh minio -S {{ .Values.certsPath }} server --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- range $i := until $poolCount }}{{ $factor := mul $i $nodeCount }}{{ $endIndex := add $factor $nodeCount }}{{ $beginIndex := mul $i $nodeCount }} {{ $scheme }}://{{ template `minio.fullname` $ }}-{{ `{` }}{{ $beginIndex }}...{{ sub $endIndex 1 }}{{ `}`}}.{{ template `minio.fullname` $ }}-svc.{{ $.Release.Namespace }}.svc.{{ $.Values.clusterDomain }}{{if (gt $drivesPerNode 1)}}{{ $bucketRoot }}-{{ `{` }}0...{{ sub $drivesPerNode 1 }}{{ `}` }}{{else}}{{ $bucketRoot }}{{end}}{{- end}}{{- template `minio.extraArgs` . }}" ] + "/usr/bin/docker-entrypoint.sh minio server {{- range $i := until $poolCount }}{{ $factor := mul $i $nodeCount }}{{ $endIndex := add $factor $nodeCount }}{{ $beginIndex := mul $i $nodeCount }} {{ $scheme }}://{{ template `minio.fullname` $ }}-{{ `{` }}{{ $beginIndex }}...{{ sub $endIndex 1 }}{{ `}`}}.{{ template `minio.fullname` $ }}-svc.{{ $.Release.Namespace }}.svc.{{ $.Values.clusterDomain }}{{if (gt $drivesPerNode 1)}}{{ $bucketRoot }}-{{ `{` }}0...{{ sub $drivesPerNode 1 }}{{ `}` }}{{else}}{{ $bucketRoot }}{{end}}{{- end}} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template `minio.extraArgs` . }}" ] volumeMounts: {{- if $penabled }} {{- if (gt $drivesPerNode 1) }} diff --git a/helm/minio/values.yaml b/helm/minio/values.yaml index 35c545395..84934d4bd 100644 --- a/helm/minio/values.yaml +++ b/helm/minio/values.yaml @@ -14,7 +14,7 @@ clusterDomain: cluster.local ## image: repository: minio/minio - tag: RELEASE.2021-08-20T18-32-01Z + tag: RELEASE.2021-08-31T05-46-54Z pullPolicy: IfNotPresent imagePullSecrets: [] @@ -28,11 +28,13 @@ mcImage: tag: RELEASE.2021-07-27T06-46-19Z pullPolicy: IfNotPresent -## minio server mode, i.e. standalone or distributed. +## minio mode, i.e. standalone or distributed or gateway (nas) ## Distributed MinIO ref: https://docs.minio.io/docs/distributed-minio-quickstart-guide -## +## NAS Gateway MinIO ref: https://docs.min.io/docs/minio-gateway-for-nas.html mode: distributed +## NOTE: currently only "nas" gateway is supported. + ## Additional labels to include with deployment or statefulset additionalLabels: [] @@ -101,6 +103,11 @@ replicas: 16 # Number of expanded MinIO clusters pools: 1 +# Deploy if 'mode == gateway' - 4 replicas. +gateway: + type: "nas" # currently only "nas" is supported. + replicas: 4 + ## TLS Settings for MinIO tls: enabled: false @@ -249,6 +256,7 @@ users: secretKey: console123 policy: consoleAdmin + ## Additional Annotations for the Kubernetes Job makeUserJob makeUserJob: podAnnotations: diff --git a/index.yaml b/index.yaml index f56c222d0..532e2a6e7 100644 --- a/index.yaml +++ b/index.yaml @@ -3,7 +3,29 @@ entries: minio: - apiVersion: v1 appVersion: RELEASE.2021-08-31T05-46-54Z - created: "2021-08-31T02:08:47.597979912-07:00" + created: "2021-09-01T16:26:38.615806044-07:00" + description: Multi-Cloud Object Storage + digest: 6d2ee1336c412affaaf209fdb80215be2a6ebb23ab2443adbaffef9e7df13fab + home: https://min.io + icon: https://min.io/resources/img/logo/MINIO_wordmark.png + keywords: + - minio + - storage + - object-storage + - s3 + - cluster + maintainers: + - email: dev@minio.io + name: MinIO, Inc + name: minio + sources: + - https://github.com/minio/minio + urls: + - https://charts.min.io/helm-releases/minio-3.0.0.tgz + version: 3.0.0 + - apiVersion: v1 + appVersion: RELEASE.2021-08-31T05-46-54Z + created: "2021-09-01T16:26:38.614500366-07:00" description: Multi-Cloud Object Storage digest: 0a004aaf5bb61deed6a5c88256d1695ebe2f9ff1553874a93e4acfd75e8d339b home: https://min.io @@ -23,7 +45,7 @@ entries: version: 2.0.1 - apiVersion: v1 appVersion: RELEASE.2021-08-25T00-41-18Z - created: "2021-08-31T02:08:47.596714596-07:00" + created: "2021-09-01T16:26:38.61318714-07:00" description: Multi-Cloud Object Storage digest: fcd944e837ee481307de6aa3d387ea18c234f995a84c15abb211aab4a4054afc home: https://min.io @@ -43,7 +65,7 @@ entries: version: 2.0.0 - apiVersion: v1 appVersion: RELEASE.2021-08-25T00-41-18Z - created: "2021-08-31T02:08:47.595417841-07:00" + created: "2021-09-01T16:26:38.611936667-07:00" description: Multi-Cloud Object Storage digest: 7b6c033d43a856479eb493ab8ca05b230f77c3e42e209e8f298fac6af1a9796f home: https://min.io @@ -63,7 +85,7 @@ entries: version: 1.0.5 - apiVersion: v1 appVersion: RELEASE.2021-08-25T00-41-18Z - created: "2021-08-31T02:08:47.594134317-07:00" + created: "2021-09-01T16:26:38.610690097-07:00" description: Multi-Cloud Object Storage digest: abd221245ace16c8e0c6c851cf262d1474a5219dcbf25c4b2e7b77142f9c59ed home: https://min.io @@ -83,7 +105,7 @@ entries: version: 1.0.4 - apiVersion: v1 appVersion: RELEASE.2021-08-20T18-32-01Z - created: "2021-08-31T02:08:47.592501007-07:00" + created: "2021-09-01T16:26:38.609363372-07:00" description: Multi-Cloud Object Storage digest: 922a333f5413d1042f7aa81929f43767f6ffca9b260c46713f04ce1dda86d57d home: https://min.io @@ -103,7 +125,7 @@ entries: version: 1.0.3 - apiVersion: v1 appVersion: RELEASE.2021-08-20T18-32-01Z - created: "2021-08-31T02:08:47.591238986-07:00" + created: "2021-09-01T16:26:38.608091516-07:00" description: High Performance, Kubernetes Native Object Storage digest: 10e22773506bbfb1c66442937956534cf4057b94f06a977db78b8cd223588388 home: https://min.io @@ -123,7 +145,7 @@ entries: version: 1.0.2 - apiVersion: v1 appVersion: RELEASE.2021-08-20T18-32-01Z - created: "2021-08-31T02:08:47.589729771-07:00" + created: "2021-09-01T16:26:38.606857324-07:00" description: High Performance, Kubernetes Native Object Storage digest: ef86ab6df23d6942705da9ef70991b649638c51bc310587d37a425268ba4a06c home: https://min.io @@ -143,7 +165,7 @@ entries: version: 1.0.1 - apiVersion: v1 appVersion: RELEASE.2021-08-17T20-53-08Z - created: "2021-08-31T02:08:47.588449802-07:00" + created: "2021-09-01T16:26:38.60555051-07:00" description: High Performance, Kubernetes Native Object Storage digest: 1add7608692cbf39aaf9b1252530e566f7b2f306a14e390b0f49b97a20f2b188 home: https://min.io @@ -161,4 +183,4 @@ entries: urls: - https://charts.min.io/helm-releases/minio-1.0.0.tgz version: 1.0.0 -generated: "2021-08-31T02:08:46.901292422-07:00" +generated: "2021-09-01T16:26:38.172265139-07:00"