Publish Date: 2024-09-30
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).
In our article today we will see how to deploy the minio operator and tenant on top of Openshift 4.16 where this option is not implemented on Operator hub yet (at least at the time of writing this article).
MinIO maintains a Helm-compatible repository at https://operator.min.io.run the following to add this repository to Helm:
helm repo add minio-operator https://operator.min.io
in case helm is not installed in your environment, run the following:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version
version.BuildInfo{Version:"v3.17.2", GitCommit:"cc0bbbd6d6276b83880042c1ecb34087e84d41eb", GitTreeState:"clean", GoVersion:"go1.23.7"}
now after helm is installed, you can validate the repo contents using helm search:
helm search repo minio-operator
The response should resemble the following:
NAME CHART VERSION APP VERSION DESCRIPTION
minio-operator/minio-operator 4.3.7 v4.3.7 A Helm chart for MinIO Operator
minio-operator/operator 6.0.1 v6.0.1 A Helm chart for MinIO Operator
minio-operator/tenant 6.0.1 v6.0.1 A Helm chart for MinIO Operator
N.B:The minio-operator/minio-operator is a legacy chart and should not be installed under normal circumstances.
Run the helm install command to install the Operator. The following command specifies and creates a dedicated namespace "minio-operator" for installation:
helm install \
--namespace minio-operator \
--create-namespace \
operator minio-operator/operator
Check the contents to ensure all pods and services have started successfully
kubectl get all -n minio-operator
NAME READY STATUS RESTARTS AGE
pod/minio-operator-699f797b8b-th5bk 1/1 Running 0 25h
pod/minio-operator-699f797b8b-nkrn9 1/1 Running 0 25h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/operator ClusterIP 10.43.44.204 4221/TCP 25h
service/sts ClusterIP 10.43.70.4 4223/TCP 25h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/minio-operator 2/2 2 2 25h
NAME DESIRED CURRENT READY AGE
replicaset.apps/minio-operator-79f7bfc48 2 2 2 123m
You can now deploy a tenant using Helm Charts.
Create a local copy of the Helm values.yaml for modification
curl -sLo values.yaml https://raw.githubusercontent.com/minio/operator/master/helm/tenant/values.yaml
Open the values.yaml and edit the following fields :
tenant
name: minio
configSecret:
accessKey: minio
secretKey: minio123
pools:
storageClassName: ocs-storagecluster-cephfs
securityContext:
runAsUser: 1000700000
runAsGroup: 1000700000
fsGroup: 1000700000
containerSecurityContext:
runAsUser: 1000700000
runAsGroup: 1000700000
requestAutoCert: false
you can change the name of tenant as you wish, also the access key and the secret key, as well as for the security context which depend on your environment. leave other fields as default
Use helm to install the Tenant Chart using your values.yaml as an override:
helm install \
--namespace minio-tenant \
--create-namespace \
--values values.yaml \
minio minio-operator/tenant
You can check that all resources are deployed successfully:
oc get all -n minio-tenant
----------------------------------
From the OpensShift UI and within the minio-tenant namespace, go to Networking > routes, then create a route using the values as shown in the following picture
now you can open the generated url to access the UI of minio tenant, which depend on your cluster base domain, namespace and tenant name. and it should be as follows:
https://minio-minio-tenant.apps.. /"
once you enter the login credentials as specified earlier during the installation:
username: minio
password: minio123
like in this image:
the following picture show up :
now you can create buckets and upload objects to the minio object store.