6.2 KiB
Quickstart for Kubernetes
minio
This procedure deploys a Single-Node Single-Drive MinIO server onto Kubernetes for early development and evaluation of MinIO Object Storage and its S3-compatible API layer.
Use the MinIO Operator <minio-operator-installation>
to
deploy and manage production-ready MinIO tenants on Kubernetes.
Prerequisites
- An existing Kubernetes deployment where at least one Worker Node has a locally-attached drive.
- A local
kubectl
installation configured to create and access resources on the target Kubernetes deployment. - Familiarity with Kubernetes environments
- Familiarity with using a Terminal or Shell environment
Procedure
Download the MinIO Object
Download the MinIO Kubernetes Object Definition
Download minio-dev.yaml to your host machine:
curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O
The file describes two Kubernetes resources:
- A new namespace
minio-dev
, and - A MinIO pod using a drive or volume on the Worker Node for serving data
Select the
Overview of the MinIO Object YAML
for a more detailed description of the object.Overview of the MinIO Object YAML
The
minio-dev.yaml
contains the following Kubernetes resources:/extra/examples/minio-dev.yaml
The object deploys two resources:
- A new namespace
minio-dev
, and - A MinIO pod using a drive or volume on the Worker Node for serving data
The MinIO resource definition uses Kubernetes
Node Selectors and Labels <concepts/scheduling-eviction/assign-pod-node/#built-in-node-labels>
to restrict the pod to a node with matching hostname label. Usekubectl get nodes --show-labels
to view all labels assigned to each node in the cluster.The MinIO Pod uses a
hostPath <concepts/storage/volumes/#hostpath>
volume for storing data. This path must correspond to a local drive or folder on the Kubernetes worker node.Users familiar with Kubernetes scheduling and volume provisioning may modify the
spec.nodeSelector
,volumeMounts.name
, andvolumes
fields to meet more specific requirements.- A new namespace
Apply the MinIO Object Definition
The following command applies the
minio-dev.yaml
configuration and deploys the objects to Kubernetes:kubectl apply -f minio-dev.yaml
The command output should resemble the following:
namespace/minio-dev created pod/minio created
You can verify the state of the pod by running
kubectl get pods
:kubectl get pods -n minio-dev
The output should resemble the following:
NAME READY STATUS RESTARTS AGE minio 1/1 Running 0 77s
You can also use the following commands to retrieve detailed information on the pod status:
kubectl describe pod/minio -n minio-dev kubectl logs pod/minio -n minio-dev
Temporarily Access the MinIO S3 API and Console
Use the
kubectl port-forward
command to temporarily forward traffic from the MinIO pod to the local machine:kubectl port-forward pod/minio 9000 9090
The command forwards the pod ports
9000
and9090
to the matching port on the local machine while active in the shell. Thekubectl port-forward
command only functions while active in the shell session. Terminating the session closes the ports on the local machine.Note
The following steps of this procedure assume an active
kubectl port-forward
command.To configure long term access to the pod, configure
Ingress <concepts/services-networking/ingress/>
or similar network control components within Kubernetes to route traffic to and from the pod. Configuring Ingress is out of the scope for this documentation.Connect your Browser to the MinIO Server
Access the
minio-console
by opening a browser on the local machine and navigating tohttp://127.0.0.1:9090
.Log in to the Console with the credentials
minioadmin | minioadmin
. These are the defaultroot user <minio-users-root>
credentials.You can use the MinIO Console for general administration tasks like Identity and Access Management, Metrics and Log Monitoring, or Server Configuration. Each MinIO server includes its own embedded MinIO Console.
For more information, see the
minio-console
documentation.(Optional) Connect the MinIO Client
If your local machine has
mc
installed <mc-install>
, use themc alias set
command to authenticate and connect to the MinIO deployment:mc alias set k8s-minio-dev http://127.0.0.1:9000 minioadmin minioadmin mc admin info k8s-minio-dev
- The name of the alias
- The hostname or IP address and port of the MinIO server
- The Access Key for a MinIO
user <minio-users>
- The Secret Key for a MinIO
user <minio-users>
Next Steps
Connect your applications to MinIO <minio-drivers>
Configure Object Retention <minio-object-retention>
Configure Security <minio-authentication-and-identity-management>
Deploy MinIO for Production Environments <deploy-minio-distributed>