MinIO is a high performance distributed object storage server, designed for large-scale private cloud infrastructure. MinIO is designed in a cloud-native manner to scale sustainably in multi-tenant environments. Orchestration platforms like Kubernetes provide perfect launchpad for MinIO to scale. There are multiple options to deploy MinIO on Kubernetes:
-
Helm Chart: MinIO Helm Chart offers customizable and easy MinIO deployment with a single command. Refer MinIO Helm Chart repository documentation for more details.
-
YAML File: MinIO can be deployed with yaml files via kubectl. Refer MinIO yaml file documentation to deploy MinIO using yaml files.
-
MinIO-Operator: Operator creates and manages distributed MinIO deployments running on Kubernetes, using CustomResourceDefinitions and Controller.
- Kubernetes API v1.15 and above.
kubectlconfigured to refer to relevant Kubernetes cluster.
To start MinIO-Operator, use the docs/minio-operator.yaml file.
kubectl create -f https://github.com/minio/minio-operator/blob/master/minio-operator.yaml?raw=true
This will create all relevant resources required for the Operator to work. Here is a list of resources created by above yaml file:
Namespace: Custom namespace for MinIO-Operator. By default it is named asminio-operator-ns.CustomResourceDefinition: Custom resource definition named asminioinstances.miniocontroller.min.io.ClusterRole: A cluster wide role for the controller. It is named asminio-operator-role. This is used for RBAC.ServiceAccount: Service account is used by the custom controller to access the cluster. Account name by default isminio-operator-sa.ClusterRoleBinding: This cluster wide binding binds the service accountminio-operator-sato cluster roleminio-operator-role.Deployment: Deployment creates a pod using the MinIO-Operator Docker image. This is where the custom controller runs and looks after any changes in custom resource.
Once MinIO-Operator deployment is running, you can create MinIO instances using the below command
kubectl create -f https://github.com/minio/minio-operator/blob/master/examples/minioinstance.yaml?raw=true
MinIO-Operator currently supports following features:
- Create and delete highly available distributed MinIO clusters.
- Upgrading existing distributed MinIO clusters.
Refer minioinstance.yaml for details on how to pass supported fields to the operator.
- Federation and CoreDNS
- Continuous remote site mirroring with
mc mirror