krakatoa / minio-operator

MinIO Operator for kubernetes (k8s) https://kubernetes.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MinIO Operator Guide Slack Docker Pulls

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.

MinIO-Operator brings native MinIO, MCS, and KES support to Kubernetes. MinIO-Operator currently supports following features:

Feature Reference Document
Create and delete highly available distributed MinIO clusters Create a MinIO Instance.
Automatic TLS for MinIO Automatic TLS for MinIO Instance.
Expand an existing MinIO cluster Expand a MinIO Cluster.
Use a custom template for hostname discovery Custom Hostname Discovery.
Use PodSecurityPolicy for MinIO Pods Apply PodSecurityPolicy.
Deploy MCS with MinIO cluster Deploy MinIO Instance with MCS.
Deploy KES with MinIO cluster Deploy MinIO Instance with KES.

Getting Started

Prerequisites

  • Kubernetes version v1.17.0 and above for compatibility. MinIO Operator uses k8s/client-go v0.18.0.
  • kubectl configured to refer to a Kubernetes cluster.
  • Create the required PVs as explained here.
  • Optional: kustomize installed as explained here.

Create Operator Deployment

To start MinIO-Operator with default configuration, use the minio-operator.yaml file.

kubectl apply -f https://raw.githubusercontent.com/minio/minio-operator/master/minio-operator.yaml

Advanced users can leverage kustomize to customize operator configuration

git clone https://github.com/minio/minio-operator
cd operator-deployment
kustomize build | kubectl apply -f -

Create a MinIO instance

Once MinIO-Operator deployment is running, you can create MinIO instances using the below command

kubectl apply -f https://raw.githubusercontent.com/minio/minio-operator/master/examples/minioinstance.yaml

Access MinIOInstance via Service

Add an external service in MinIOInstance definition to enable Service based access to the MinIOInstance pods. Refer the example here for details on how to setup service based access for MinIOInstance pods.

Advanced: Expose MinIO via Istio

Istio >= 1.4 has support for headless Services, so instead of creating an explicit Service for the created MinIO instance, you can also directly target the headless Service that is created by the operator.

For example, to expose the created headless Service minio-hl-svc on http://minio.example.com:

kubectl apply -f https://raw.githubusercontent.com/minio/minio-operator/master/examples/expose-via-istio.yaml

Environment variables

These variables may be passed to operator Deployment in order to modify some of its parameters

Name Default Description
WATCHED_NAMESPACE If set, the operator will watch only MinIO resources deployed in the specified namespace. All namespaces are watched if empty
CLUSTER_DOMAIN cluster.local Cluster Domain of the Kubernetes cluster

Explore Further

About

MinIO Operator for kubernetes (k8s) https://kubernetes.io/

License:GNU Affero General Public License v3.0


Languages

Language:Go 99.1%Language:Makefile 0.8%Language:Dockerfile 0.1%