mirror of
https://github.com/minio/docs.git
synced 2025-04-25 17:22:39 +03:00
As state in https://github.com/minio/minio/pull/18561#issuecomment-1833303435 , consistent use 9001 as the console port, to avoid confusion for new users.
175 lines
6.6 KiB
ReStructuredText
175 lines
6.6 KiB
ReStructuredText
.. _quickstart-kubernetes:
|
|
|
|
================================
|
|
Quickstart: MinIO for Kubernetes
|
|
================================
|
|
|
|
.. default-domain:: minio
|
|
|
|
.. container:: extlinks-video
|
|
|
|
- `Object Storage Essentials <https://www.youtube.com/playlist?list=PLFOIsHSSYIK3WitnqhqfpeZ6fRFKHxIr7>`__
|
|
|
|
- `How to Connect to MinIO with JavaScript <https://www.youtube.com/watch?v=yUR4Fvx0D3E&list=PLFOIsHSSYIK3Dd3Y_x7itJT1NUKT5SxDh&index=5>`__
|
|
|
|
.. |OS| replace:: Kubernetes
|
|
|
|
This procedure deploys a Single-Node Single-Drive MinIO server onto |OS| for early development and evaluation of MinIO Object Storage and its S3-compatible API layer.
|
|
|
|
Use the :ref:`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**
|
|
|
|
.. tab-set::
|
|
|
|
.. tab-item:: Download the MinIO Kubernetes Object Definition
|
|
|
|
Download `minio-dev.yaml <https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml>`__ to your host machine:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
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 :guilabel:`Overview of the MinIO Object YAML` for a more detailed description of the object.
|
|
|
|
.. tab-item:: Overview of the MinIO Object YAML
|
|
|
|
The ``minio-dev.yaml`` contains the following Kubernetes resources:
|
|
|
|
.. literalinclude:: /extra/examples/minio-dev.yaml
|
|
:language: 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 :kube-docs:`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.
|
|
Use ``kubectl get nodes --show-labels`` to view all labels assigned to each node in the cluster.
|
|
|
|
The MinIO Pod uses a :kube-docs:`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``, and ``volumes`` fields to meet more specific requirements.
|
|
|
|
#. **Apply the MinIO Object Definition**
|
|
|
|
The following command applies the ``minio-dev.yaml`` configuration and deploys the objects to Kubernetes:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
kubectl apply -f minio-dev.yaml
|
|
|
|
The command output should resemble the following:
|
|
|
|
.. code-block:: shell
|
|
|
|
namespace/minio-dev created
|
|
pod/minio created
|
|
|
|
You can verify the state of the pod by running ``kubectl get pods``:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
kubectl get pods -n minio-dev
|
|
|
|
The output should resemble the following:
|
|
|
|
.. code-block:: shell
|
|
|
|
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:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
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:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
kubectl port-forward pod/minio 9000 9090 -n minio-dev
|
|
|
|
The command forwards the pod ports ``9000`` and ``9090`` to the matching port on the local machine while active in the shell.
|
|
The ``kubectl 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 :kube-docs:`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 :ref:`minio-console` by opening a browser on the local machine and navigating to ``http://127.0.0.1:9001``.
|
|
|
|
Log in to the Console with the credentials ``minioadmin | minioadmin``.
|
|
These are the default :ref:`root user <minio-users-root>` credentials.
|
|
|
|
.. image:: /images/minio-console/console-login.png
|
|
:width: 600px
|
|
:alt: MinIO Console displaying login screen
|
|
:align: center
|
|
|
|
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.
|
|
|
|
.. image:: /images/minio-console/minio-console.png
|
|
:width: 600px
|
|
:alt: MinIO Console displaying bucket start screen
|
|
:align: center
|
|
|
|
For more information, see the :ref:`minio-console` documentation.
|
|
|
|
#. **(Optional) Connect the MinIO Client**
|
|
|
|
If your local machine has :mc:`mc` :ref:`installed <mc-install>`, use the :mc:`mc alias set` command to authenticate and connect to the MinIO deployment:
|
|
|
|
.. code-block:: shell
|
|
:class: copyable
|
|
|
|
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 :ref:`user <minio-users>`
|
|
- The Secret Key for a MinIO :ref:`user <minio-users>`
|
|
|
|
.. rst-class:: section-next-steps
|
|
|
|
Next Steps
|
|
----------
|
|
|
|
- :ref:`Connect your applications to MinIO <minio-drivers>`
|
|
- :ref:`Configure Object Retention <minio-object-retention>`
|
|
- :ref:`Configure Security <minio-authentication-and-identity-management>`
|
|
- :ref:`Deploy MinIO for Production Environments <deploy-minio-distributed>`
|