Skip to main content

Overview

MinIO is a high-performance, S3-compatible object storage system. This template deploys a distributed MinIO cluster with erasure coding across multiple replicas for durability and fault tolerance, backed by persistent storage and an optional autoscaling volume set.

What Gets Created

  • Stateful Workload — A distributed MinIO cluster with a configurable number of replicas (minimum 4, must be even).
  • Volume Set — Persistent storage per replica with optional autoscaling.
  • Secrets — An opaque startup script secret that configures the distributed server list and handles node initialization, and a dictionary secret storing the admin username and password.
  • Identity & Policy — An identity bound to the workload with reveal access to both secrets.
This template does not create a GVC. You must deploy it into an existing GVC.

Installation

This template has no external prerequisites. To install, follow the instructions for your preferred method:

Configuration

The default values.yaml for this template:
image: minio/minio:RELEASE.2025-09-07T16-13-09Z

replicas: 6 # Must be at least 4 and an even number

admin: # MinIO admin credentials
  username: myuser
  password: mypassword123

resources: # Defaults are set for minimal production usage
  minCpu: 1
  minMemory: 2Gi
  maxCpu: 2
  maxMemory: 4Gi

volumeset:
  capacity: 10 # initial capacity in GiB (minimum is 10)
  autoscaling:
    enabled: false
    maxCapacity: 100 # Maximum capacity in GiB
    minFreePercentage: 10 # Trigger scaling when free space drops below this percentage
    scalingFactor: 1.2 # Multiply current capacity by this factor when scaling up

internalAccess:
  type: same-gvc # options: none, same-gvc, same-org, workload-list
  workloads: # Note: can only be used if type is same-gvc or workload-list
    #- //gvc/GVC_NAME/workload/WORKLOAD_NAME

Credentials

  • admin.username — MinIO admin username. Change before deploying to production.
  • admin.password — MinIO admin password. Change before deploying to production.

Replicas

  • replicas — Number of MinIO instances in the distributed cluster (minimum 4, must be even).
MinIO requires at least 4 replicas to form a distributed cluster with erasure coding. For production workloads, 6 or more replicas are recommended. Depending on your organization’s default quotas, you may need to request higher limits.

Resources

  • resources.minCpu / resources.minMemory — Minimum CPU and memory guaranteed to each replica.
  • resources.maxCpu / resources.maxMemory — Maximum CPU and memory each replica can use.

Storage

  • volumeset.capacity — Initial volume size in GiB per replica (minimum 10).
  • volumeset.autoscaling.enabled — Automatically expand each volume as it fills. When enabled:
    • maxCapacity — Maximum volume size in GiB.
    • minFreePercentage — Trigger a scale-up when free space drops below this percentage.
    • scalingFactor — Multiply the current capacity by this factor when scaling up.

Internal Access

  • internalAccess.type — Controls which workloads can connect to MinIO on ports 9000 and 9001:
TypeDescription
noneNo internal access allowed
same-gvcAllow access from all workloads in the same GVC
same-orgAllow access from all workloads in the same organization
workload-listAllow access only from specific workloads listed in workloads
Do not set internalAccess.type to none. MinIO replicas must be able to communicate with each other for distributed mode to function.

Connecting to MinIO

Once deployed, connect to the MinIO S3 API from within the same GVC using the MinIO client:
mc alias set minio http://RELEASE_NAME-minio:9000 USERNAME PASSWORD
The web console is available on port 9001 at:
https://RELEASE_NAME-minio.GVC_NAME.cpln.app

External References