Added chart versions:

minio/minio-operator:
    - 6.0.2
pull/1059/head
github-actions[bot] 2024-08-13 00:50:18 +00:00
parent d5c57a0c5b
commit 2c822f8d4e
17 changed files with 7749 additions and 1 deletions

Binary file not shown.

View File

@ -0,0 +1,22 @@
# 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
.vscode/

View File

@ -0,0 +1,23 @@
annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Minio Operator
catalog.cattle.io/kube-version: '>=1.19-0'
catalog.cattle.io/release-name: minio-operator
apiVersion: v2
appVersion: v6.0.2
description: A Helm chart for MinIO Operator
home: https://min.io
icon: file://assets/icons/minio-operator.png
keywords:
- storage
- object-storage
- S3
kubeVersion: '>=1.19-0'
maintainers:
- email: dev@minio.io
name: MinIO, Inc
name: minio-operator
sources:
- https://github.com/minio/operator
type: application
version: 6.0.2

View File

@ -0,0 +1,45 @@
# MinIO ![license](https://img.shields.io/badge/license-AGPL%20V3-blue)
[MinIO](https://min.io) is a High Performance Object Storage released under GNU AGPLv3 or later. 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.
For more detailed documentation please visit [here](https://docs.minio.io/)
Introduction
------------
This chart bootstraps MinIO Operator on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
Configure MinIO Helm repo
--------------------
```bash
helm repo add minio https://operator.min.io/
```
Installing the Chart
--------------------
Install this chart using:
```bash
helm install \
--namespace minio-operator \
--create-namespace \
minio-operator minio/operator
```
The command deploys MinIO Operator on the Kubernetes cluster in the default configuration.
Creating a Tenant
-----------------
Once the MinIO Operator Chart is successfully installed, create a MinIO Tenant using:
```bash
helm install --namespace tenant-ns \
--create-namespace tenant minio/tenant
```
This creates a 4 Node MinIO Tenant (cluster). To change the default values, take a look at various [values.yaml](https://github.com/minio/operator/blob/master/helm/tenant/values.yaml).

View File

@ -0,0 +1,78 @@
# MinIO Operator
MinIO is a Kubernetes-native high performance object store with an S3-compatible API. The
MinIO Kubernetes Operator supports deploying MinIO Tenants onto private and public
cloud infrastructures ("Hybrid" Cloud).
## Procedure
### 1) Verify installation the MinIO Operator
Run the following command to verify the status of the Operator:
```sh
kubectl get pods -n minio-operator
```
The output resembles the following:
```sh
NAME READY STATUS RESTARTS AGE
console-6b6cf8946c-9cj25 1/1 Running 0 99s
minio-operator-69fd675557-lsrqg 1/1 Running 0 99s
```
The `console-*` pod runs the MinIO Operator Console, a graphical user
interface for creating and managing MinIO Tenants.
The `minio-operator-*` pod runs the MinIO Operator itself.
### 2) Access the Operator Console
Get the service-account token to access the UI:
```sh
kubectl -n minio-operator get secret $(kubectl -n minio-operator get serviceaccount console-sa -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
```
Run the following command to create a local proxy to the MinIO Operator
Console:
```sh
kubectl -n minio-operator port-forward svc/console 9090
```
Open your browser to http://localhost:9090 and use the JWT token to log in
to the Operator Console.
Click **+ Create Tenant** to open the Tenant Creation workflow.
### 3) Build the Tenant Configuration
The Operator Console **Create New Tenant** walkthrough builds out
a MinIO Tenant. The following list describes the basic configuration sections.
- **Name** - Specify the *Name*, *Namespace*, and *Storage Class* for the new Tenant.
The *Storage Class* must correspond to a [Storage Class](#default-storage-class) that corresponds to [Local Persistent Volumes](#local-persistent-volumes) that can support the MinIO Tenant.
The *Namespace* must correspond to an existing [Namespace](#minio-tenant-namespace) that does *not* contain any other MinIO Tenant.
Enable *Advanced Mode* to access additional advanced configuration options.
- **Tenant Size** - Specify the *Number of Servers*, *Number of Drives per Server*, and *Total Size* of the Tenant.
The *Resource Allocation* section summarizes the Tenant configuration
based on the inputs above.
Additional configuration inputs may be visible if *Advanced Mode* was enabled
in the previous step.
- **Preview Configuration** - summarizes the details of the new Tenant.
After configuring the Tenant to your requirements, click **Create** to create the new tenant.
The Operator Console displays credentials for connecting to the MinIO Tenant. You *must* download and secure these credentials at this stage. You cannot trivially retrieve these credentials later.
You can monitor Tenant creation from the Operator Console.

View File

@ -0,0 +1,59 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "minio-operator.name" -}}
{{- default .Chart.Name | 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-operator.fullname" -}}
{{- $name := default .Chart.Name -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Create a default fully qualified console 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-operator.console-fullname" -}}
{{- printf "%s-%s" .Release.Name "console" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "minio-operator.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels for operator
*/}}
{{- define "minio-operator.labels" -}}
helm.sh/chart: {{ include "minio-operator.chart" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- range $key, $val := .Values.operator.additionalLabels }}
{{ $key }}: {{ $val | quote }}
{{- end }}
{{- end -}}
{{/*
Selector labels Operator
*/}}
{{- define "minio-operator.selectorLabels" -}}
app.kubernetes.io/name: {{ include "minio-operator.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,180 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: minio-operator-role
labels: {{- include "minio-operator.labels" . | nindent 4 }}
rules:
- apiGroups:
- "apiextensions.k8s.io"
resources:
- customresourcedefinitions
verbs:
- get
- update
- apiGroups:
- ""
resources:
- persistentvolumeclaims
verbs:
- get
- update
- list
- apiGroups:
- ""
resources:
- namespaces
- nodes
verbs:
- create
- get
- watch
- list
- apiGroups:
- ""
resources:
- pods
- services
- events
- configmaps
verbs:
- get
- watch
- create
- list
- delete
- deletecollection
- update
- patch
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- watch
- create
- update
- list
- delete
- deletecollection
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- roles
- rolebindings
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- statefulsets
- deployments
- deployments/finalizers
verbs:
- get
- create
- list
- patch
- watch
- update
- delete
- apiGroups:
- batch
resources:
- jobs
verbs:
- get
- create
- list
- patch
- watch
- update
- delete
- apiGroups:
- "certificates.k8s.io"
resources:
- "certificatesigningrequests"
- "certificatesigningrequests/approval"
- "certificatesigningrequests/status"
verbs:
- update
- create
- get
- delete
- list
- apiGroups:
- certificates.k8s.io
resourceNames:
- kubernetes.io/legacy-unknown
- kubernetes.io/kube-apiserver-client
- kubernetes.io/kubelet-serving
- beta.eks.amazonaws.com/app-serving
resources:
- signers
verbs:
- approve
- sign
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- minio.min.io
- sts.min.io
- job.min.io
resources:
- "*"
verbs:
- "*"
- apiGroups:
- min.io
resources:
- "*"
verbs:
- "*"
- apiGroups:
- monitoring.coreos.com
resources:
- prometheuses
verbs:
- '*'
- apiGroups:
- "coordination.k8s.io"
resources:
- leases
verbs:
- get
- update
- create
- apiGroups:
- policy
resources:
- poddisruptionbudgets
verbs:
- create
- delete
- get
- list
- patch
- update
- deletecollection

View File

@ -0,0 +1,13 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: minio-operator-binding
labels: {{- include "minio-operator.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: minio-operator-role
subjects:
- kind: ServiceAccount
name: minio-operator
namespace: {{ .Release.Namespace }}

View File

@ -0,0 +1,67 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio-operator
namespace: {{ .Release.Namespace }}
labels: {{- include "minio-operator.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.operator.replicaCount }}
selector:
matchLabels: {{- include "minio-operator.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "minio-operator.labels" . | nindent 8 }}
{{- include "minio-operator.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.operator.imagePullSecrets }}
imagePullSecrets: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.runtimeClassName }}
runtimeClassName: {{ . }}
{{- end }}
serviceAccountName: minio-operator
{{- with .Values.operator.securityContext }}
securityContext: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.affinity }}
affinity: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.topologySpreadConstraints }}
topologySpreadConstraints: {{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.operator.priorityClassName }}
priorityClassName: {{ . }}
{{- end }}
{{- with .Values.operator.initContainers }}
initContainers: {{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.operator.image.repository }}:{{ .Values.operator.image.digest | default .Values.operator.image.tag }}"
imagePullPolicy: {{ .Values.operator.image.pullPolicy }}
args:
- controller
{{- with .Values.operator.env }}
env: {{- toYaml . | nindent 12 }}
{{- end }}
{{- if .Values.operator.sidecarImage }}
- name: "OPERATOR_SIDECAR_IMAGE"
value: "{{ .Values.operator.sidecarImage.repository }}:{{ .Values.operator.sidecarImage.digest | default .Values.operator.sidecarImage.tag }}"
{{- end }}
resources: {{- toYaml .Values.operator.resources | nindent 12 }}
{{- with .Values.operator.containerSecurityContext }}
securityContext: {{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.operator.volumeMounts }}
volumeMounts: {{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.operator.volumes }}
volumes: {{- toYaml . | nindent 8 }}
{{- end }}

View File

@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: operator
namespace: {{ .Release.Namespace }}
labels: {{- include "minio-operator.labels" . | nindent 4 }}
spec:
type: ClusterIP
ports:
- port: 4221
name: http
selector:
operator: leader
{{- include "minio-operator.selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,10 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: minio-operator
namespace: {{ .Release.Namespace }}
labels: {{- include "minio-operator.labels" . | nindent 4 }}
{{- with .Values.operator.serviceAccountAnnotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}

View File

@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: sts
namespace: {{ .Release.Namespace }}
labels: {{- include "minio-operator.labels" . | nindent 4 }}
spec:
type: ClusterIP
ports:
- port: 4223
name: https
selector: {{- include "minio-operator.selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,133 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.15.0
operator.min.io/version: v6.0.2
name: policybindings.sts.min.io
spec:
group: sts.min.io
names:
kind: PolicyBinding
listKind: PolicyBindingList
plural: policybindings
shortNames:
- policybinding
singular: policybinding
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.currentState
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
application:
properties:
namespace:
type: string
serviceaccount:
type: string
required:
- namespace
- serviceaccount
type: object
policies:
items:
type: string
type: array
required:
- application
- policies
type: object
status:
properties:
currentState:
type: string
usage:
nullable: true
properties:
authotizations:
format: int64
type: integer
type: object
required:
- currentState
- usage
type: object
type: object
served: true
storage: false
subresources:
status: {}
- additionalPrinterColumns:
- jsonPath: .status.currentState
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1beta1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
application:
properties:
namespace:
type: string
serviceaccount:
type: string
required:
- namespace
- serviceaccount
type: object
policies:
items:
type: string
type: array
required:
- application
- policies
type: object
status:
properties:
currentState:
type: string
usage:
nullable: true
properties:
authotizations:
format: int64
type: integer
type: object
required:
- currentState
- usage
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@ -0,0 +1,191 @@
###
# Root key for Operator Helm Chart
operator:
###
# An array of environment variables to pass to the Operator deployment.
# Pass an empty array to start Operator with defaults.
#
# For example:
#
# .. code-block:: yaml
#
# env:
# - name: MINIO_OPERATOR_DEPLOYMENT_NAME
# valueFrom:
# fieldRef:
# fieldPath: metadata.labels['app.kubernetes.io/name']
# - name: CLUSTER_DOMAIN
# value: "cluster.domain"
# - name: WATCHED_NAMESPACE
# value: ""
# - name: MINIO_OPERATOR_RUNTIME
# value: "OpenShift"
#
# See `Operator environment variables <https://github.com/minio/operator/blob/master/docs/env-variables.md>`__ for a list of all supported values.
env:
- name: OPERATOR_STS_ENABLED
value: "on"
# An array of additional annotations to be applied to the operator service account
serviceAccountAnnotations: []
# additional labels to be applied to operator resources
additionalLabels: {}
###
# Specify the Operator container image to use for the deployment.
# ``image.tag``
# For example, the following sets the image to the ``quay.io/minio/operator`` repo and the v6.0.2 tag.
# The container pulls the image if not already present:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator
# tag: v6.0.2
# pullPolicy: IfNotPresent
#
# The chart also supports specifying an image based on digest value:
#
# .. code-block:: yaml
#
# image:
# repository: quay.io/minio/operator@sha256
# digest: 28c80b379c75242c6fe793dfbf212f43c602140a0de5ebe3d9c2a3a7b9f9f983
# pullPolicy: IfNotPresent
#
image:
repository: quay.io/minio/operator
tag: v6.0.2
pullPolicy: IfNotPresent
###
# Specify the sidecar container image to deploy on tenant pods for init container and sidecar.
# Only need to change this if want to use a different version that the default, or want to set a custom registry.
# ``sidecarImage.tag``
# For example, the following sets the image to the ``quay.io/minio/operator-sidecar`` repo and the v6.0.2 tag.
# The container pulls the image if not already present:
#
# .. code-block:: yaml
#
# sidecarImage:
# repository: quay.io/minio/operator-sidecar
# tag: v6.0.2
# pullPolicy: IfNotPresent
#
# The chart also supports specifying an image based on digest value:
#
# .. code-block:: yaml
#
# sidecarImage:
# repository: quay.io/minio/operator-sidecar@sha256
# digest: a11947a230b80fb1b0bffa97173147a505d4f1207958f722e348d11ab9e972c1
# pullPolicy: IfNotPresent
#
sidecarImage: {}
###
#
# An array of Kubernetes secrets to use for pulling images from a private ``image.repository``.
# Only one array element is supported at this time.
imagePullSecrets: [ ]
###
#
# The name of a custom `Container Runtime <https://kubernetes.io/docs/concepts/containers/runtime-class/>`__ to use for the Operator pods.
runtimeClassName: ~
###
# An array of `initContainers <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/>`__ to start up before the Operator pods.
# Exercise care as ``initContainer`` failures prevent Operator pods from starting.
# Pass an empty array to start the Operator normally.
initContainers: [ ]
###
# The number of Operator pods to deploy.
# Higher values increase availability in the event of worker node failures.
#
# The cluster must have sufficient number of available worker nodes to fulfill the request.
# Operator pods deploy with pod anti-affinity by default, preventing Kubernetes from scheduling multiple pods onto a single Worker node.
replicaCount: 2
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator resources.
#
# You may need to modify these values to meet your cluster's security and access settings.
securityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
fsGroup: 1000
###
# The Kubernetes `SecurityContext <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/>`__ to use for deploying Operator containers.
# You may need to modify these values to meet your cluster's security and access settings.
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
seccompProfile:
type: RuntimeDefault
###
# An array of `Volumes <https://kubernetes.io/docs/concepts/storage/volumes/>`__ which the Operator can mount to pods.
#
# The volumes must exist *and* be accessible to the Operator pods.
volumes: [ ]
###
# An array of volume mount points associated to each Operator container.
#
# Specify each item in the array as follows:
#
# .. code-block:: yaml
#
# volumeMounts:
# - name: volumename
# mountPath: /path/to/mount
#
# The ``name`` field must correspond to an entry in the ``volumes`` array.
volumeMounts: [ ]
###
# Any `Node Selectors <https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/>`__ to apply to Operator pods.
#
# The Kubernetes scheduler uses these selectors to determine which worker nodes onto which it can deploy Operator pods.
#
# If no worker nodes match the specified selectors, the Operator deployment will fail.
nodeSelector: { }
###
#
# The `Pod Priority <https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/>`__ to assign to Operator pods.
priorityClassName: ""
###
#
# The `affinity <https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/>`__ or anti-affinity settings to apply to Operator pods.
#
# These settings determine the distribution of pods across worker nodes and can help prevent or allow colocating pods onto the same worker nodes.
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: name
operator: In
values:
- minio-operator
topologyKey: kubernetes.io/hostname
###
#
# An array of `Toleration labels <https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/>`__ to associate to Operator pods.
#
# These settings determine the distribution of pods across worker nodes.
tolerations: [ ]
###
#
# An array of `Topology Spread Constraints <https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/>`__ to associate to Operator pods.
#
# These settings determine the distribution of pods across worker nodes.
topologySpreadConstraints: [ ]
###
#
# The `Requests or Limits <https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/>`__ for resources to associate to Operator pods.
#
# These settings can control the minimum and maximum resources requested for each pod.
# If no worker nodes can meet the specified requests, the Operator may fail to deploy.
resources:
requests:
cpu: 200m
memory: 256Mi
ephemeral-storage: 500Mi

View File

@ -24072,6 +24072,33 @@ entries:
- assets/airlock/microgateway-cni-4.2.3.tgz - assets/airlock/microgateway-cni-4.2.3.tgz
version: 4.2.3 version: 4.2.3
minio-operator: minio-operator:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Minio Operator
catalog.cattle.io/kube-version: '>=1.19-0'
catalog.cattle.io/release-name: minio-operator
apiVersion: v2
appVersion: v6.0.2
created: "2024-08-13T00:49:26.923407095Z"
description: A Helm chart for MinIO Operator
digest: d1ecb0c6b1eedbcae9dae74d4aea527eabe846528a913c30cac62e4dd11881da
home: https://min.io
icon: file://assets/icons/minio-operator.png
keywords:
- storage
- object-storage
- S3
kubeVersion: '>=1.19-0'
maintainers:
- email: dev@minio.io
name: MinIO, Inc
name: minio-operator
sources:
- https://github.com/minio/operator
type: application
urls:
- assets/minio/minio-operator-6.0.2.tgz
version: 6.0.2
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Minio Operator catalog.cattle.io/display-name: Minio Operator
@ -39286,4 +39313,4 @@ entries:
urls: urls:
- assets/netfoundry/ziti-host-1.5.1.tgz - assets/netfoundry/ziti-host-1.5.1.tgz
version: 1.5.1 version: 1.5.1
generated: "2024-08-10T00:47:56.831690117Z" generated: "2024-08-13T00:49:23.982205921Z"