-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[helm]: change to forked minio chart
- Loading branch information
1 parent
348d534
commit 320ea98
Showing
28 changed files
with
2,226 additions
and
1 deletion.
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,23 @@ | ||
# 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 | ||
# OWNERS file for Kubernetes | ||
OWNERS |
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,18 @@ | ||
# Copyright (c) Minio https://min.io/ | ||
|
||
apiVersion: v1 | ||
appVersion: master | ||
description: High Performance, Kubernetes Native Object Storage | ||
home: https://min.io | ||
icon: https://min.io/resources/img/logo/MINIO_wordmark.png | ||
keywords: | ||
- storage | ||
- object-storage | ||
- S3 | ||
maintainers: | ||
- email: [email protected] | ||
name: MinIO, Inc | ||
name: minio | ||
sources: | ||
- https://github.com/minio/minio | ||
version: 8.0.10 |
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,3 @@ | ||
# Copyright (c) Minio https://min.io/ | ||
|
||
mode: distributed |
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,47 @@ | ||
{{- 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. Get the ACCESS_KEY=$(kubectl get secret {{ template "minio.secretName" . }} -o jsonpath="{.data.accesskey}" | base64 --decode) and the SECRET_KEY=$(kubectl get secret {{ template "minio.secretName" . }} -o jsonpath="{.data.secretkey}" | base64 --decode) | ||
|
||
3. mc alias set {{ template "minio.fullname" . }}-local http://localhost:{{ .Values.service.port }} "$ACCESS_KEY" "$SECRET_KEY" --api s3v4 | ||
|
||
4. 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. Get the ACCESS_KEY=$(kubectl get secret {{ template "minio.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.accesskey}" | base64 --decode) and the SECRET_KEY=$(kubectl get secret {{ template "minio.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.secretkey}" | base64 --decode) | ||
3. mc alias set {{ template "minio.fullname" . }} http://<External-IP>:{{ .Values.service.port }} "$ACCESS_KEY" "$SECRET_KEY" --api s3v4 | ||
|
||
4. mc ls {{ template "minio.fullname" . }} | ||
|
||
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 }} |
111 changes: 111 additions & 0 deletions
111
chart/dependencies/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,111 @@ | ||
#!/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 --insecure --config-dir ${MC_CONFIG_DIR}" | ||
{{- else }} | ||
MC="/usr/bin/mc --insecure" | ||
{{- 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 | ||
VERSIONING=$4 | ||
|
||
# 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 | ||
|
||
|
||
# set versioning for bucket | ||
if [ ! -z $VERSIONING ] ; then | ||
if [ $VERSIONING = true ] ; then | ||
echo "Enabling versioning for '$BUCKET'" | ||
${MC} version enable myminio/$BUCKET | ||
elif [ $VERSIONING = false ] ; then | ||
echo "Suspending versioning for '$BUCKET'" | ||
${MC} version suspend myminio/$BUCKET | ||
fi | ||
else | ||
echo "Bucket '$BUCKET' versioning unchanged." | ||
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 }} {{ .Values.defaultBucket.versioning }} | ||
{{ else if .Values.buckets }} | ||
# Create the buckets | ||
{{- range .Values.buckets }} | ||
createBucket {{ .name }} {{ .policy }} {{ .purge }} {{ .versioning }} | ||
{{- 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,182 @@ | ||
{{/* 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.Version -}} | ||
{{- print "extensions/v1beta1" -}} | ||
{{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.Version -}} | ||
{{- print "networking.k8s.io/v1beta1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for deployment. | ||
*/}} | ||
{{- define "minio.deployment.apiVersion" -}} | ||
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.Version -}} | ||
{{- print "apps/v1beta2" -}} | ||
{{- else -}} | ||
{{- print "apps/v1" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the appropriate apiVersion for statefulset. | ||
*/}} | ||
{{- define "minio.statefulset.apiVersion" -}} | ||
{{- if semverCompare "<1.16-0" .Capabilities.KubeVersion.Version -}} | ||
{{- print "apps/v1beta2" -}} | ||
{{- else -}} | ||
{{- print "apps/v1" -}} | ||
{{- 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 secret name. | ||
*/}} | ||
{{- define "minio.secretName" -}} | ||
{{- if .Values.existingSecret -}} | ||
{{- .Values.existingSecret }} | ||
{{- else -}} | ||
{{- include "minio.fullname" . -}} | ||
{{- 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 -}} | ||
|
||
{{/* | ||
Determine name for scc role and rolebinding | ||
*/}} | ||
{{- define "minio.sccRoleName" -}} | ||
{{- printf "%s-%s" "scc" (include "minio.fullname" .) | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Properly format optional additional arguments to Minio binary | ||
*/}} | ||
{{- define "minio.extraArgs" -}} | ||
{{- range .Values.extraArgs -}} | ||
{{ " " }}{{ . }} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Return the proper Docker Image Registry Secret Names | ||
*/}} | ||
{{- define "minio.imagePullSecrets" -}} | ||
{{/* | ||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope, | ||
but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic. | ||
Also, we can not use a single if because lazy evaluation is not an option | ||
*/}} | ||
{{- if .Values.global }} | ||
{{- if .Values.global.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{- range .Values.global.imagePullSecrets }} | ||
- name: {{ . }} | ||
{{- end }} | ||
{{- else if .Values.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{ toYaml .Values.imagePullSecrets }} | ||
{{- end -}} | ||
{{- else if .Values.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{ toYaml .Values.imagePullSecrets }} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Formats volumeMount for Minio tls keys and trusted certs | ||
*/}} | ||
{{- define "minio.tlsKeysVolumeMount" -}} | ||
{{- if .Values.tls.enabled }} | ||
- name: cert-secret-volume | ||
mountPath: {{ .Values.certsPath }} | ||
{{- end }} | ||
{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret "") }} | ||
{{- $casPath := printf "%s/CAs" .Values.certsPath | clean }} | ||
- name: trusted-cert-secret-volume | ||
mountPath: {{ $casPath }} | ||
{{- end }} | ||
{{- end -}} | ||
|
||
{{/* | ||
Formats volume for Minio tls keys and trusted certs | ||
*/}} | ||
{{- define "minio.tlsKeysVolume" -}} | ||
{{- if .Values.tls.enabled }} | ||
- name: cert-secret-volume | ||
secret: | ||
secretName: {{ .Values.tls.certSecret }} | ||
items: | ||
- key: {{ .Values.tls.publicCrt }} | ||
path: public.crt | ||
- key: {{ .Values.tls.privateKey }} | ||
path: private.key | ||
{{- end }} | ||
{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret "") }} | ||
{{- $certSecret := eq .Values.trustedCertsSecret "" | ternary .Values.tls.certSecret .Values.trustedCertsSecret }} | ||
{{- $publicCrt := eq .Values.trustedCertsSecret "" | ternary .Values.tls.publicCrt "" }} | ||
- name: trusted-cert-secret-volume | ||
secret: | ||
secretName: {{ $certSecret }} | ||
{{- if ne $publicCrt "" }} | ||
items: | ||
- key: {{ $publicCrt }} | ||
path: public.crt | ||
{{- end }} | ||
{{- end }} | ||
{{- end -}} |
Oops, something went wrong.