Javascript is required

s3.rottigni.tech

Screenshot of s3.rottigni.tech GitHub repository

S3 Storage Server powered by Minio and deployed on k8s

Repo #66871620
AuthorLorenzo Rottigni
Created At2025-02-06
Updated At2025-05-16
Pushed At2025-02-11
Sizenull MB
Main Languagedocker
Star count0
Default branchmain
  • Kubernetes

  • Docker

README.md

s3.rottigni.tech

Minio

Deployment

Create the Minio operator:

kubectl apply -f k8s/common/minio-operator.yaml
# or
kubectl apply -k "github.com/minio/operator?ref=v7.0.0"

Localhost (Docker Desktop)

Create a persisted volume for the Minio tenant:

kubectl apply -f k8s/local/minio-tenant.yaml

Create the Minio tenant:

kubectl apply -f k8s/local/minio-volume.yaml

Expose Minio console to the localhost:

kubectl port-forward -n minio-tenant service/myminio-console 9443:9443

Production

Create a persisted volume for the Minio tenant:

kubectl apply -f k8s/prod/minio-tenant.yaml

Create the Minio tenant:

kubectl apply -f k8s/prod/minio-volume.yaml

Create TLS certificate:

kubectl apply -f k8s/prod/certificate.yaml

Expose Minio console via ingress:

kubectl apply -f k8s/prod/ingress.yaml

Configuration

CSI (Container Storage Interface)

It's necessary to manually create a persisted volume with one of the following storage classes:

  • hostpath: simpler CSI suitable for development or small application
  • directpv: CSI tailored for Minio capable to create distributed volumes across different nodes

Minio tenant manifest configures its own persisted volume claim with a configurable size.

Multiple Servers

It's generally recommended to run the s3 object storage across multiple servers.

  • servers: determine the number of minio servers available
  • volumesPerServer: determine the number of volumes for each server

Running more than 1 server requires the following stringData configuration:

export MINIO_STORAGE_CLASS_STANDARD="EC:4" 

Minio Client

Install the Minio client:

brew install minio/stable/mc
mc --help

Connect to an s3 server:

mc alias set s3-rottigni-tech https://s3.rottigni.tech ACCESS_KEY SECRET_KEY

Reset

Development

kubectl delete ns minio-tenant
kubectl create ns minio-tenant
kubectl apply -f k8s/local/minio-volume.yaml
kubectl apply -f k8s/local/minio-tenant.yaml
watch kubectl events -n minio-tenant
watch kubectl get pods -n minio-tenant

Production

kubectl delete ns minio-tenant
kubectl create ns minio-tenant
kubectl apply -f k8s/s3.rottigni.tech/minio-volume.yaml
kubectl apply -f k8s/s3.rottigni.tech/minio-tenant.yaml
watch kubectl events -n minio-tenant
watch kubectl get pods -n minio-tenant