-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Instead of installing minio operator and install the minio instance in the init container, this refactor uses the minio upstream chart as a subchart of this chart to install minio instance. The bundled minio chart has been bumpted to stable/minio 5.0.12.
- Loading branch information
Showing
30 changed files
with
1,840 additions
and
202 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# 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 | ||
*~ | ||
# Various IDEs | ||
.project | ||
.idea/ | ||
*.tmproj |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
apiVersion: v1 | ||
appVersion: master | ||
description: MinIO is a high performance data infrastructure for machine learning, | ||
analytics and application data workloads. | ||
home: https://min.io | ||
icon: https://min.io/resources/img/logo/MINIO_wordmark.png | ||
keywords: | ||
- storage | ||
- object-storage | ||
- S3 | ||
maintainers: | ||
- email: dev@minio.io | ||
name: Minio | ||
- email: hello@acale.ph | ||
name: Acaleph | ||
name: minio | ||
sources: | ||
- https://github.com/minio/minio | ||
version: 5.0.12 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
approvers: | ||
- krisis | ||
- harshavardhana | ||
- nitisht | ||
- wlan0 | ||
- dvaldivia | ||
reviewers: | ||
- krisis | ||
- harshavardhana | ||
- nitisht | ||
- wlan0 | ||
- dvaldivia | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
This chart is based on stable/minio 5.0.12. | ||
|
||
The extra patches we applied are listed under `patches/`. |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
mode: distributed |
10 changes: 10 additions & 0 deletions
10
staging/velero/charts/minio/patches/01-ingress-allow-empty-host-rule.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
diff -r minio/templates/ingress.yaml minio-velero/templates/ingress.yaml | ||
35,36c35 | ||
< - host: {{ . | quote }} | ||
< http: | ||
--- | ||
> - http: | ||
41a41,43 | ||
> {{- if . }} | ||
> host: {{ . | quote }} | ||
> {{- end }} |
44 changes: 44 additions & 0 deletions
44
staging/velero/charts/minio/patches/02-allow-upgrade-from-previous-version.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
diff -r minio/templates/_helpers.tpl minio-velero/templates/_helpers.tpl | ||
67a68,78 | ||
> Return the appropriate name for statefulset. | ||
> */}} | ||
> {{- define "minio.statefulset.name" -}} | ||
> {{- if .Values.statefulSetNameOverride -}} | ||
> {{- printf "%s" .Values.statefulSetNameOverride | trunc 63 | trimSuffix "-" -}} | ||
> {{- else -}} | ||
> {{ template "minio.fullname" . }} | ||
> {{- end -}} | ||
> {{- end -}} | ||
> | ||
> {{/* | ||
diff -r minio/templates/statefulset.yaml minio-velero/templates/statefulset.yaml | ||
43c43 | ||
< name: {{ template "minio.fullname" . }} | ||
--- | ||
> name: {{ template "minio.statefulset.name" . }} | ||
92c92 | ||
< "/usr/bin/docker-entrypoint.sh minio -S {{ .Values.certsPath }} server {{- range $i := until $zoneCount }}{{ $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}}" | ||
--- | ||
> "/usr/bin/docker-entrypoint.sh minio -S {{ .Values.certsPath }} server {{- range $i := until $zoneCount }}{{ $factor := mul $i $nodeCount }}{{ $endIndex := add $factor $nodeCount }}{{ $beginIndex := mul $i $nodeCount }} {{ $scheme }}://{{ template `minio.statefulset.name` $ }}-{{ `{` }}{{ $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}}" | ||
98c98 | ||
< - name: export-{{ $i }} | ||
--- | ||
> - name: {{ .Values.persistence.volumeTemplatePrefix }}-{{ $i }} | ||
105c105 | ||
< - name: export | ||
--- | ||
> - name: {{ .Values.persistence.volumeTemplatePrefix }} | ||
209c209 | ||
< name: export-{{ $diskId }} | ||
--- | ||
> name: {{ .Values.persistence.volumeTemplatePrefix }}-{{ $diskId }} | ||
221c221 | ||
< name: export | ||
--- | ||
> name: {{ .Values.persistence.volumeTemplatePrefix }} | ||
diff -r minio/values.yaml minio-velero/values.yaml | ||
104a105 | ||
> volumeTemplatePrefix: "export" | ||
328a330,331 | ||
> | ||
> # statefulSetNameOverride: minio |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
{{- if eq .Values.service.type "ClusterIP" "NodePort" }} | ||
Minio can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster: | ||
{{ template "minio.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local | ||
|
||
To access Minio from localhost, run the below commands: | ||
|
||
1. export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") | ||
|
||
2. kubectl port-forward $POD_NAME 9000 --namespace {{ .Release.Namespace }} | ||
|
||
Read more about port forwarding here: http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/ | ||
|
||
You can now access Minio server on http://localhost:9000. Follow the below steps to connect to Minio server with mc client: | ||
|
||
1. Download the Minio mc client - https://docs.minio.io/docs/minio-client-quickstart-guide | ||
|
||
2. mc config host add {{ template "minio.fullname" . }}-local http://localhost:9000 {{ .Values.accessKey }} {{ .Values.secretKey }} S3v4 | ||
|
||
3. mc ls {{ template "minio.fullname" . }}-local | ||
|
||
Alternately, you can use your browser or the Minio SDK to access the server - https://docs.minio.io/categories/17 | ||
{{- end }} | ||
{{- if eq .Values.service.type "LoadBalancer" }} | ||
Minio can be accessed via port {{ .Values.service.port }} on an external IP address. Get the service external IP address by: | ||
kubectl get svc --namespace {{ .Release.Namespace }} -l app={{ template "minio.fullname" . }} | ||
|
||
Note that the public IP may take a couple of minutes to be available. | ||
|
||
You can now access Minio server on http://<External-IP>:9000. Follow the below steps to connect to Minio server with mc client: | ||
|
||
1. Download the Minio mc client - https://docs.minio.io/docs/minio-client-quickstart-guide | ||
|
||
2. mc config host add {{ template "minio.fullname" . }}-local http://<External-IP>:{{ .Values.service.port }} {{ .Values.accessKey }} {{ .Values.secretKey }} S3v4 | ||
|
||
3. mc ls {{ template "minio.fullname" . }}-local | ||
|
||
Alternately, you can use your browser or the Minio SDK to access the server - https://docs.minio.io/categories/17 | ||
{{- end }} | ||
|
||
{{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} | ||
Note: Since NetworkPolicy is enabled, only pods with label | ||
{{ template "minio.fullname" . }}-client=true" | ||
will be able to connect to this minio cluster. | ||
{{- end }} |
96 changes: 96 additions & 0 deletions
96
staging/velero/charts/minio/templates/_helper_create_bucket.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
#!/bin/sh | ||
set -e ; # Have script exit in the event of a failed command. | ||
|
||
{{- if .Values.configPathmc }} | ||
MC_CONFIG_DIR="{{ .Values.configPathmc }}" | ||
MC="/usr/bin/mc --config-dir ${MC_CONFIG_DIR}" | ||
{{- else }} | ||
MC="/usr/bin/mc" | ||
{{- end }} | ||
|
||
# connectToMinio | ||
# Use a check-sleep-check loop to wait for Minio service to be available | ||
connectToMinio() { | ||
SCHEME=$1 | ||
ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts | ||
set -e ; # fail if we can't read the keys. | ||
ACCESS=$(cat /config/accesskey) ; SECRET=$(cat /config/secretkey) ; | ||
set +e ; # The connections to minio are allowed to fail. | ||
echo "Connecting to Minio server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ; | ||
MC_COMMAND="${MC} config host add myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ; | ||
$MC_COMMAND ; | ||
STATUS=$? ; | ||
until [ $STATUS = 0 ] | ||
do | ||
ATTEMPTS=`expr $ATTEMPTS + 1` ; | ||
echo \"Failed attempts: $ATTEMPTS\" ; | ||
if [ $ATTEMPTS -gt $LIMIT ]; then | ||
exit 1 ; | ||
fi ; | ||
sleep 2 ; # 1 second intervals between attempts | ||
$MC_COMMAND ; | ||
STATUS=$? ; | ||
done ; | ||
set -e ; # reset `e` as active | ||
return 0 | ||
} | ||
|
||
# checkBucketExists ($bucket) | ||
# Check if the bucket exists, by using the exit code of `mc ls` | ||
checkBucketExists() { | ||
BUCKET=$1 | ||
CMD=$(${MC} ls myminio/$BUCKET > /dev/null 2>&1) | ||
return $? | ||
} | ||
|
||
# createBucket ($bucket, $policy, $purge) | ||
# Ensure bucket exists, purging if asked to | ||
createBucket() { | ||
BUCKET=$1 | ||
POLICY=$2 | ||
PURGE=$3 | ||
|
||
# Purge the bucket, if set & exists | ||
# Since PURGE is user input, check explicitly for `true` | ||
if [ $PURGE = true ]; then | ||
if checkBucketExists $BUCKET ; then | ||
echo "Purging bucket '$BUCKET'." | ||
set +e ; # don't exit if this fails | ||
${MC} rm -r --force myminio/$BUCKET | ||
set -e ; # reset `e` as active | ||
else | ||
echo "Bucket '$BUCKET' does not exist, skipping purge." | ||
fi | ||
fi | ||
|
||
# Create the bucket if it does not exist | ||
if ! checkBucketExists $BUCKET ; then | ||
echo "Creating bucket '$BUCKET'" | ||
${MC} mb myminio/$BUCKET | ||
else | ||
echo "Bucket '$BUCKET' already exists." | ||
fi | ||
|
||
# At this point, the bucket should exist, skip checking for existence | ||
# Set policy on the bucket | ||
echo "Setting policy of bucket '$BUCKET' to '$POLICY'." | ||
${MC} policy set $POLICY myminio/$BUCKET | ||
} | ||
|
||
# Try connecting to Minio instance | ||
{{- if .Values.tls.enabled }} | ||
scheme=https | ||
{{- else }} | ||
scheme=http | ||
{{- end }} | ||
connectToMinio $scheme | ||
|
||
{{- if or .Values.defaultBucket.enabled }} | ||
# Create the bucket | ||
createBucket {{ .Values.defaultBucket.name }} {{ .Values.defaultBucket.policy }} {{ .Values.defaultBucket.purge }} | ||
{{ else if .Values.buckets }} | ||
# Create the buckets | ||
{{- range .Values.buckets }} | ||
createBucket {{ .name }} {{ .policy }} {{ .purge }} | ||
{{- end }} | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
{{/* vim: set filetype=mustache: */}} | ||
{{/* | ||
Expand the name of the chart. | ||
*/}} | ||
{{- define "minio.name" -}} | ||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create a default fully qualified app name. | ||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | ||
If release name contains chart name it will be used as a full name. | ||
*/}} | ||
{{- define "minio.fullname" -}} | ||
{{- if .Values.fullnameOverride -}} | ||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- $name := default .Chart.Name .Values.nameOverride -}} | ||
{{- if contains $name .Release.Name -}} | ||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create chart name and version as used by the chart label. | ||
*/}} | ||
{{- define "minio.chart" -}} | ||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for networkpolicy. | ||
*/}} | ||
{{- define "minio.networkPolicy.apiVersion" -}} | ||
{{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.GitVersion -}} | ||
{{- print "extensions/v1beta1" -}} | ||
{{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion -}} | ||
{{- print "networking.k8s.io/v1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for deployment. | ||
*/}} | ||
{{- define "minio.deployment.apiVersion" -}} | ||
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}} | ||
{{- print "apps/v1beta2" -}} | ||
{{- else -}} | ||
{{- print "apps/v1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for statefulset. | ||
*/}} | ||
{{- define "minio.statefulset.apiVersion" -}} | ||
{{- if .Capabilities.APIVersions.Has "apps/v1beta2" -}} | ||
{{- print "apps/v1beta2" -}} | ||
{{- else -}} | ||
{{- print "apps/v1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate name for statefulset. | ||
*/}} | ||
{{- define "minio.statefulset.name" -}} | ||
{{- if .Values.statefulSetNameOverride -}} | ||
{{- printf "%s" .Values.statefulSetNameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{ template "minio.fullname" . }} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for ingress. | ||
*/}} | ||
{{- define "minio.ingress.apiVersion" -}} | ||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} | ||
{{- print "extensions/v1beta1" -}} | ||
{{- else -}} | ||
{{- print "networking.k8s.io/v1beta1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Determine service account name for deployment or statefulset. | ||
*/}} | ||
{{- define "minio.serviceAccountName" -}} | ||
{{- if .Values.serviceAccount.create -}} | ||
{{- default (include "minio.fullname" .) .Values.serviceAccount.name | replace "+" "_" | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- default "default" .Values.serviceAccount.name -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Properly format optional additional arguments to Minio binary | ||
*/}} | ||
{{- define "minio.extraArgs" -}} | ||
{{- range .Values.extraArgs -}} | ||
,{{ . | quote }} | ||
{{- end -}} | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
apiVersion: v1 | ||
kind: ConfigMap | ||
metadata: | ||
name: {{ template "minio.fullname" . }} | ||
labels: | ||
app: {{ template "minio.name" . }} | ||
chart: {{ template "minio.chart" . }} | ||
release: {{ .Release.Name }} | ||
heritage: {{ .Release.Service }} | ||
data: | ||
initialize: |- | ||
{{ include (print $.Template.BasePath "/_helper_create_bucket.txt") . | indent 4 }} |
Oops, something went wrong.