Deploy MinIO Operator on Amazon Elastic Kubernetes Service
Overview
Amazon® Elastic Kubernetes Service® (EKS) is an enterprise-ready Kubernetes container platform with full-stack automated operations to manage hybrid cloud, multi-cloud, and edge deployments. The MinIO Kubernetes Operator supports deploying MinIO Tenants onto EKS infrastructure using the MinIO Operator Console or by using kustomize for YAML-defined deployments.
MinIO supports the following methods for installing the MinIO Operator onto your EKS clusters:
- Through the AWS Marketplace
MinIO maintains an AWS Marketplace listing through which you can register your EKS cluster with MinIO SUBNET. Any tenant you deploy through Marketplace-connected clusters can take advantage of SUBNET registration, including 24/7 direct access to MinIO engineers.
This page documents deploying the MinIO Operator through the CLI using Kustomize. For instructions on deploying the MinIO Operator through the AWS Marketplace, see Deploy MinIO through EKS
This documentation assumes familiarity with all referenced Kubernetes and Elastic Kubernetes Service concepts, utilities, and procedures. While this documentation may provide guidance for configuring or deploying Kubernetes-related or Elastic Kubernetes Service-related resources on a best-effort basis, it is not a replacement for the official Kubernetes Documentation.
Prerequisites
Existing EKS Cluster
This procedure assumes an existing EKS cluster onto which you can deploy the MinIO Operator.
The Operator by default deploys pods and services with two replicas each and pod anti-affinity. The GKE cluster should therefore have at least two nodes available for scheduling Operator pods and services. While these nodes may be the same nodes intended for use by MinIO Tenants, co-locating Operator and Tenant pods may increase the risk of service interruptions due to the loss of any one node.
kubectl
Access to the EKS Cluster
Ensure your host machine has a kubectl
installation compatible with the target EKS cluster.
For guidance on connecting kubectl
to EKS, see Creating or updating a kubeconfig file for an Amazon EKS cluster.
Your kubectl
configuration must include authentication as a user with the correct permissions.
MinIO provides an example IAM policy for Marketplace-based installations in the MinIO Operator github repository.
You can use this policy as a baseline for manual Operator installations.
Procedure
The following steps deploy Operator using Kustomize and a kustomization.yaml
file from the MinIO Operator GitHub repository.
Install the MinIO Operator using Kustomize
The following procedure uses kubectl -k
to install the Operator from the MinIO Operator GitHub repository.
kubectl -k
and kubectl --kustomize
are aliases that perform the same command.
Important
If you use Kustomize to install the Operator, you must use Kustomize to manage or upgrade that installation.
Do not use kubectl krew
, a Helm chart, or similar methods to manage or upgrade a MinIO Operator installation deployed with Kustomize.
You can, however, use Kustomize to upgrade a previous version of Operator (5.0.14 or earlier) installed with the MinIO Kubernetes Plugin.
Install the latest version of Operator
The following command installs the Operator to the
minio-operator
namespace:kubectl apply -k "github.com/minio/operator?ref=v6.0.4"
The command outputs a list of installed resources.
Verify the Operator pods are running:
kubectl get pods -n minio-operator
The output resembles the following:
NAME READY STATUS RESTARTS AGE minio-operator-6c758b8c45-nkhlx 1/1 Running 0 2m42s minio-operator-6c758b8c45-dgd8n 1/1 Running 0 2m42s
In this example, the
minio-operator
pod is MinIO Operator and theconsole
pod is the Operator Console.You can modify your Operator deployment by applying kubectl patches. You can find examples for common configurations in the Operator GitHub repository.
Verify the Operator installation
Check the contents of the specified namespace (
minio-operator
) to ensure all pods and services have started successfully.kubectl get all -n minio-operator
The response should resemble the following:
NAME READY STATUS RESTARTS AGE pod/minio-operator-6c758b8c45-nkhlx 1/1 Running 0 5m20s pod/minio-operator-6c758b8c45-dgd8n 1/1 Running 0 5m20s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/operator ClusterIP 10.43.135.241 <none> 4221/TCP 5m20s service/sts ClusterIP 10.43.117.251 <none> 4223/TCP 5m20s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/minio-operator 2/2 2 2 5m20s NAME DESIRED CURRENT READY AGE replicaset.apps/minio-operator-6c758b8c45 2 2 2 5m20s
Next Steps
You can deploy MinIO tenants using the MinIO CRD and Kustomize. MinIO also provides a Helm chart for deploying Tenants.
MinIO recommends using the same method of Tenant deployment and management used to install the Operator. Mixing Kustomize and Helm for Operator or Tenant management may increase operational complexity.