1
0
mirror of https://github.com/minio/docs.git synced 2025-07-20 00:43:24 +03:00

Alpha Release Work

This commit is contained in:
ravindk89
2020-09-29 18:57:09 -04:00
parent d2657ec80a
commit e3e9caf593
76 changed files with 1115 additions and 1152 deletions

View File

@ -22,7 +22,7 @@ html {
body { body {
font-family: Mark, Helvetica, sans-serif; font-family: Mark, Helvetica, sans-serif;
font-size: 100%; font-size: 15px;
} }
div.flexwrapper { div.flexwrapper {
@ -41,20 +41,32 @@ body :target {
/* Left Column CSS */ /* Left Column CSS */
body div.left { body div.left {
width: 250px; width: 300px;
/* flex-shrink: 0; */ /* flex-shrink: 0; */
position: fixed; position: fixed;
display: block; display: block;
left: 0px; left: 0px;
top: 85px; top: 90px;
color: var(--minio-meridian); color: var(--minio-meridian);
z-index: 5; z-index: 5;
border-right: 1px solid var(--minio-glacier); background: #f9f9f9 0% 0% no-repeat padding-box;
opacity: 1;
height: 100vh;
}
body div.left a.active {
color: var(--minio-meridian);
} }
body div.left li.toctree-l1 a { body div.left li.toctree-l1 a {
color: var(--minio-meridian); color: #1C1C1C;
} }
body div.left li.toctree-l2 a {
color: #2b2b2b;
font-size: 14px;
}
body div.left div.sphinxsidebarwrapper { body div.left div.sphinxsidebarwrapper {
padding: 0 0 0 5px; padding: 0 0 0 5px;
margin-top: 15px; margin-top: 15px;
@ -70,17 +82,15 @@ body div.left button.sphinxsidebarbutton {
background: none; background: none;
border: none; border: none;
position: fixed; position: fixed;
left: 115px; left: 200px;
top: 75px; top: 90px;
color: gray;
} }
body div.left div.sphinxsidebarwrapper a.current.reference.internal { body div.left div.sphinxsidebarwrapper a.current.reference.internal {
color: var(--minio-red); color: var(--minio-red);
font-weight: bold; font-weight: bold;
position: relative; position: relative;
border-left: 5px solid var(--minio-red);
padding-left: 5px;
margin-left: -10px;
} }
@ -93,7 +103,6 @@ body div.left div.sphinxsidebarwrapper li.toctree-l1 {
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; margin-bottom: 10px;
padding-bottom: 5px; padding-bottom: 5px;
border-bottom: 1px solid var(--table-border-color);
list-style: none; list-style: none;
} }
@ -102,7 +111,17 @@ body div.left a.reference {
border: none; border: none;
} }
body div.left li.toctree-l2 {
margin: 10px 0 10px 0;
}
body div.left div.searchformwrapper {
margin-top: 25px;
}
#docs-search {
padding-left: 10px;
}
/* Center Column CSS */ /* Center Column CSS */
@ -122,8 +141,8 @@ body div.center {
flex-grow: 9; flex-grow: 9;
flex-shrink: 4; flex-shrink: 4;
z-index: 0; z-index: 0;
margin-left: 250px; margin-left: 300px;
margin-top: 85px; margin-top: 90px;
scroll-margin-top: 85px; scroll-margin-top: 85px;
height: 100%; height: 100%;
padding-left: 10px; padding-left: 10px;
@ -194,8 +213,22 @@ body div.center table.docutils th {
border-right: none; border-right: none;
} }
body div.center p { body div.center dl dd {
padding-left: 10px; margin-left: 15px;
}
body div.center div.footer {
text-align: center;
width: auto;
/*
Future work: Force padding up so that H3s can still scroll within the
IntersectionObserver window. Useful for ensuring short sections at the
bottom of the page still get picked up. Might be useful for auto-hide of
l2 content.
padding-top: 100px;
*/
} }
/* Right-Column CSS */ /* Right-Column CSS */
@ -204,8 +237,9 @@ body div.right {
flex: 3; flex: 3;
flex-shrink: 0; flex-shrink: 0;
margin-left: 10px; margin-left: 10px;
margin-top: 85px; margin-top: 90px;
border-left: 1px solid var(--minio-glacier); border-left: 1px solid var(--minio-glacier);
font-size: 13px;
} }
body div.right div.topic { body div.right div.topic {
@ -223,8 +257,6 @@ body div.right ul.simple {
} }
body div.right ul li { body div.right ul li {
border-top: 1px solid var(--minio-glacier);
border-bottom: 1px solid var(--minio-glacier);
padding-top: 5px; padding-top: 5px;
padding-bottom: 5px; padding-bottom: 5px;
} }
@ -253,7 +285,7 @@ body div.right p.active-p {
/* Collapse CSS */ /* Collapse CSS */
body div.left.collapsed { body div.left.collapsed {
left: -300px; left: -350px;
} }
body div.left button.sphinxsidebarbutton.collapsed { body div.left button.sphinxsidebarbutton.collapsed {
@ -278,9 +310,9 @@ nav.navigation {
position: fixed; position: fixed;
background-color: black; background-color: black;
width: 100%; width: 100%;
height: 75px; height: 90px;
top: 0px; top: 0px;
z-index: 1; z-index: 1;
} }
/* Admonition CSS TODO*/ /* Admonition CSS TODO*/

View File

@ -1,11 +1,11 @@
window.addEventListener('DOMContentLoaded', (event) => { window.addEventListener('DOMContentLoaded', (event) => {
console.log('DOM fully loaded and parsed'); console.log('DOM fully loaded and parsed');
var topic = document.getElementById('on-this-page'); var topic = document.getElementById('table-of-contents');
if (topic != null) { if (topic != null) {
document.getElementById('localtoc').appendChild( document.getElementById('localtoc').appendChild(
document.getElementById('on-this-page') document.getElementById('table-of-contents')
); );
console.log("moving local toc"); console.log("moving local toc");
@ -17,45 +17,47 @@ window.addEventListener('DOMContentLoaded', (event) => {
// this from working, especially if the 'section' is really long. Not sure // this from working, especially if the 'section' is really long. Not sure
// how to resolve that. // how to resolve that.
let options = { // Removing this from the logic flow until we have better / cleaner logic.
rootMargin: '-85px 0px 0px 0px'
}
const observer = new IntersectionObserver(entries => { // let options = {
entries.forEach(entry => { // rootMargin: '-100px 0px 0px -100px'
const id = entry.target.getAttribute('id'); // }
// const observer = new IntersectionObserver(entries => {
// entries.forEach(entry => {
// const id = entry.target.getAttribute('id');
if (id == document.querySelector('.section[id]').getAttribute('id')) // if (id == document.querySelector('.section[id]').getAttribute('id'))
return 0 // return 0
if (entry.intersectionRatio > 0) { // if (entry.intersectionRatio > 0) {
pElement = document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement; // pElement = document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement;
liElement = document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement; // liElement = document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement;
liElement.classList.add('active'); // liElement.classList.add('active');
pElement.classList.add('active-p'); // pElement.classList.add('active-p');
liElementParent = liElement.parentElement.parentElement // liElementParent = liElement.parentElement.parentElement
if (liElementParent.tagName == "LI") { // if (liElementParent.tagName == "LI") {
//liElementParent.classList.remove("active") // //liElementParent.classList.remove("active")
// Need to re-visit this logic // // Need to re-visit this logic
} // }
} else { // } else {
document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement.classList.remove('active'); // document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.parentElement.classList.remove('active');
document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.classList.remove('active-p'); // document.querySelector(`#on-this-page li a[href="#${id}"]`).parentElement.classList.remove('active-p');
} // }
}); // });
},options); // },options);
// Track all sections that have an `id` applied // // Track all sections that have an `id` applied
document.querySelectorAll('.section[id]').forEach((section) => { // document.querySelectorAll('.section[id]').forEach((section) => {
observer.observe(section); // observer.observe(section);
}); // });
const leftcolumn = document.querySelector('.left'); const leftcolumn = document.querySelector('.left');
const centercolumn = document.querySelector('.center'); const centercolumn = document.querySelector('.center');

View File

@ -0,0 +1,2 @@
{{ toctree(includehidden=theme_sidebar_includehidden, collapse=theme_sidebar_collapse) }}

View File

@ -0,0 +1,11 @@
{%- if pagename != "search" and builder != "singlehtml" %}
<div id="searchbox" style="display: none" role="search">
<div class="searchformwrapper">
<form class="search" action="{{ pathto('search') }}" method="get">
<input type="text" id="docs-search" name="q" aria-labelledby="searchlabel" placeholder="Search documentation" />
<input type="submit" value="{{ _('Go') }}" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
{%- endif %}

View File

@ -0,0 +1,363 @@
.. _minio-baremetal:
====================
MinIO for Bare Metal
====================
.. default-domain:: minio
.. contents:: Table of Contents
:local:
:depth: 2
MinIO is a high performance distributed object storage server, designed for
large-scale private cloud infrastructure. MinIO fully supports deployment onto
bare-metal hardware with or without containerization for process management.
Standalone Installation
-----------------------
Standalone MinIO deployments consist of a single ``minio`` server process with
one or more disks. Standalone deployments are best suited for local development
environments.
1) Install the ``minio`` Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Install the :program:`minio` server onto the host machine. Select the tab that
corresponds to the host machine operating system or environment:
.. include:: /includes/minio-server-installation.rst
2) Add TLS/SSL Certificates (Optional)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enable TLS/SSL connectivity to the MinIO server by specifying a private key
(``.key``) and public certificate (``.crt``) to the MinIO ``certs`` directory:
- For Linux/MacOS: ``${HOME}/.minio/certs``
- For Windows: ``%%USERPROFILE%%\.minio\certs``
The MinIO server automatically enables TLS/SSL connectivity if it detects
the required certificates in the ``certs`` directory.
.. note::
The MinIO documentation makes a best-effort to provide generally applicable
and accurate information on TLS/SSL connectivity in the context of MinIO
products and services, and is not intended as a complete guide to the larger
topic of TLS/SSL certificate creation and management.
3) Run the ``minio`` Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Issue the following command to start the :program:`minio` server. The following
example assumes the host machine has *at least* four disks, which is the minimum
required number of disks to enable :ref:`erasure coding <minio-erasure-coding>`:
.. code-block:: shell
:class: copyable
export MINIO_ACCESS_KEY=minio-admin
export MINIO_SECRET_KEY=minio-secret-key-CHANGE-ME
minio server /mnt/disk{1...4}/data
The example command breaks down as follows:
.. list-table::
:widths: 40 60
:width: 100%
* - :envvar:`MINIO_ACCESS_KEY`
- The access key for the :ref:`root <minio-auth-authz-root>` user.
Replace this value with a unique, random, and long string.
* - :envvar:`MINIO_SECRET_KEY`
- The corresponding secret key to use for the
:ref:`root <minio-auth-authz-root>` user.
Replace this value with a unique, random, and long string.
* - ``/mnt/disk{1...4}/data``
- The path to each disk on the host machine.
``/data`` is an optional folder in which the ``minio`` server stores
all information related to the deployment.
See :mc-cmd:`minio server DIRECTORIES` for more information on
configuring the backing storage for the :mc:`minio server` process.
The command uses MinIO expansion notation ``{x...y}`` to denote a sequential
series. Specifically, ``/mnt/disk{1...4}/data`` expands to:
- ``/mnt/disk1/data``
- ``/mnt/disk2/data``
- ``/mnt/disk3/data``
- ``/mnt/disk4/data``
4) Connect to the Server
~~~~~~~~~~~~~~~~~~~~~~~~
Use the :mc-cmd:`mc alias set` command from a machine with connectivity to
the host running the ``minio`` server. See :ref:`mc-install` for documentation
on installing :program:`mc`.
.. code-block:: shell
:class: copyable
mc alias set mylocalminio 192.0.2.10:9000 minioadmin minio-secret-key-CHANGE-ME
Replace the IP address and port with one of the ``minio`` servers endpoints.
See :ref:`minio-mc-commands` for a list of commands you can run on the
MinIO server.
Distributed Installation
------------------------
Distributed MinIO deployments consist of multiple ``minio`` servers with
one or more disks each. Distributed deployments are best suited for
staging and production environments.
MinIO *requires* using sequentially-numbered hostnames to represent each
``minio`` server in the deployment. For example, the following hostnames support
a 4-node distributed deployment:
- ``minio1.example.com``
- ``minio2.example.com``
- ``minio3.example.com``
- ``minio4.example.com``
Create the necessary DNS hostname mappings *prior* to starting this
procedure.
1) Install the ``minio`` Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Install the :program:`minio` server onto each host machine in the deployment.
Select the tab that corresponds to the host machine operating system or
environment:
.. include:: /includes/minio-server-installation.rst
2) Add TLS/SSL Certificates (Optional)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enable TLS/SSL connectivity to the MinIO server by specifying a private key
(``.key``) and public certificate (``.crt``) to the MinIO ``certs`` directory:
- For Linux/MacOS: ``${HOME}/.minio/certs``
- For Windows: ``%%USERPROFILE%%\.minio\certs``
The MinIO server automatically enables TLS/SSL connectivity if it detects
the required certificates in the ``certs`` directory.
.. note::
The MinIO documentation makes a best-effort to provide generally applicable
and accurate information on TLS/SSL connectivity in the context of MinIO
products and services, and is not intended as a complete guide to the larger
topic of TLS/SSL certificate creation and management.
3) Run the ``minio`` Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Issue the following command on each host machine in the deployment. The
following example assumes that:
- The deployment has four host machines with sequential hostnames
(i.e. ``minio1.example.com``, ``minio2.example.com``).
- Each host machine has *at least* four disks mounted at ``/data``. 4 disks is
the minimum required for :ref:`erasure coding
<minio-erasure-coding>`.
.. code-block:: shell
:class: copyable
export MINIO_ACCESS_KEY=minio-admin
export MINIO_SECRET_KEY=minio-secret-key-CHANGE-ME
minio server https://minio{1...4}.example.com/mnt/disk{1...4}/data
The example command breaks down as follows:
.. list-table::
:widths: 40 60
:width: 100%
* - :envvar:`MINIO_ACCESS_KEY`
- The access key for the :ref:`root <minio-auth-authz-root>` user.
Replace this value with a unique, random, and long string.
* - :envvar:`MINIO_SECRET_KEY`
- The corresponding secret key to use for the
:ref:`root <minio-auth-authz-root>` user.
Replace this value with a unique, random, and long string.
* - ``https://minio{1...4}.example.com/``
- The DNS hostname of each server in the distributed deployment.
* - ``/mnt/disk{1...4}/data``
- The path to each disk on the host machine.
``/data`` is an optional folder in which the ``minio`` server stores
all information related to the deployment.
See :mc-cmd:`minio server DIRECTORIES` for more information on
configuring the backing storage for the :mc:`minio server` process.
The command uses MinIO expansion notation ``{x...y}`` to denote a sequential
series. Specifically:
- The hostname ``https://minio{1...4}.example.com`` expands to:
- ``https://minio1.example.com``
- ``https://minio2.example.com``
- ``https://minio3.example.com``
- ``https://minio4.example.com``
- ``/mnt/disk{1...4}/data`` expands to
- ``/mnt/disk1/data``
- ``/mnt/disk2/data``
- ``/mnt/disk3/data``
- ``/mnt/disk4/data``
4) Connect to the Server
~~~~~~~~~~~~~~~~~~~~~~~~
Use the :mc-cmd:`mc alias set` command from a machine with connectivity to any
hostname running the ``minio`` server. See :ref:`mc-install` for documentation
on installing :program:`mc`.
.. code-block:: shell
:class: copyable
mc alias set mylocalminio minio1.example.net minioadmin minio-secret-key-CHANGE-ME
See :ref:`minio-mc-commands` for a list of commands you can run on the
MinIO server.
Docker Installation
-------------------
Stable MinIO
~~~~~~~~~~~~
The following ``docker`` command creates a container running the latest stable
version of the ``minio`` server process:
.. code-block:: shell
:class: copyable
docker run -p 9000:9000 \
-e "MINIO_ACCESS_KEY=ROOT_ACCESS_KEY" \
-e "MINIO_SECRET_KEY=SECRET_ACCESS_KEY_CHANGE_ME" \
-v /mnt/disk1:/disk1 \
-v /mnt/disk2:/disk2 \
-v /mnt/disk3:/disk3 \
-v /mnt/disk4:/disk4 \
minio/minio server /disk{1...4}
The command uses the following options:
- ``-e MINIO_ACCESS_KEY`` and ``-e MINIO_SECRET_KEY`` for configuring the
:ref:`root <minio-auth-authz-root>` user credentials.
- ``-v /mnt/disk<int>:/disk<int>`` for configuring each disk the ``minio``
server uses.
Bleeding Edge MinIO
~~~~~~~~~~~~~~~~~~~
*Do not use bleeding-edge deployments of MinIO in production environments*
The following ``docker`` command creates a container running the latest
bleeding-edge version of the ``minio`` server process:
.. code-block:: shell
:class: copyable
docker run -p 9000:9000 \
-e "MINIO_ACCESS_KEY=ROOT_ACCESS_KEY" \
-e "MINIO_SECRET_KEY=SECRET_ACCESS_KEY_CHANGE_ME" \
-v /mnt/disk1:/disk1 \
-v /mnt/disk2:/disk2 \
-v /mnt/disk3:/disk3 \
-v /mnt/disk4:/disk4 \
minio/minio:edge server /disk{1...4}
The command uses the following options:
- ``MINIO_ACCESS_KEY`` and ``MINIO_SECRET_KEY`` for configuring the
:ref:`root <minio-auth-authz-root>` user credentials.
- ``-v /mnt/disk<int>:/disk<int>`` for configuring each disk the ``minio``
server uses.
Deployment Recommendations
--------------------------
Minimum Nodes per Deployment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For all production deployments, MinIO recommends a *minimum* of 4 nodes per
cluster. MinIO deployments with *at least* 4 nodes can tolerate the loss of up
to half the nodes *or* half the disks in the deployment while maintaining
read and write availability.
For example, assuming a 4-node deployment with 4 drives per node, the
cluster can tolerate the loss of:
- Any two nodes, *or*
- Any 8 drives.
The minimum recommendation reflects MinIO's experience with assisting enterprise
customers in deploying on a variety of IT infrastructures while
maintaining the desired SLA/SLO. While MinIO may run on less than the
minimum recommended topology, any potential cost savings come at the risk of
decreased reliability.
Recommended Hardware
~~~~~~~~~~~~~~~~~~~~
For MinIO's recommended hardware, please see
`MinIO Reference Hardware <https://min.io/product/reference-hardware>`__.
Bare Metal Infrastructure
~~~~~~~~~~~~~~~~~~~~~~~~~
A distributed MinIO deployment can only provide as much availability as the
bare metal infrastructure on which it is deployed. In particular, consider the
following potential failure points which could result in cluster downtime
when configuring your bare metal infrastructure:
- Shared networking resources (switches, routers, ISP).
- Shared power resources.
- Shared physical location (rack, datacenter, region).
MinIO deployments using virtual machines or containerized environments should
also consider the following:
- Shared physical hardware (CPU, Memory, Storage)
- Shared orchestration management layer (Kubernetes, Docker Swarm)
FreeBSD
-------
MinIO does not provide an official FreeBSD binary. FreeBSD maintains an
`upstream release <https://www.freshports.org/www/minio>`__ you can
install using `pkg <https://github.com/freebsd/pkg>`__:
.. code-block:: shell
:class: copyable
pkg install minio
sysrc minio_enable=yes
sysrc minio_disks=/path/to/disks
service minio start

View File

@ -85,14 +85,14 @@ html_favicon = '_static/favicon.png'
html_sidebars = { html_sidebars = {
'**' : [ '**' : [
'about.html',
'navigation.html',
'searchbox.html', 'searchbox.html',
'navigation.html',
] ]
} }
html_theme_options = { html_theme_options = {
'fixed_sidebar' : 'true', 'fixed_sidebar' : 'true',
'show_relbars': 'true',
} }
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,

View File

@ -0,0 +1,96 @@
.. tabs::
.. tab:: Linux
The following commands add a *temporary* extension to your system
PATH for running the ``minio`` utility. Defer to your operating system
instructions for making permanent modifications to your system PATH.
Alternatively, execute ``minio`` by navigating to the download folder and
running ``./minio --help``
**64-bit Intel**
.. code-block:: shell
:class: copyable
curl https://dl.min.io/server/minio/release/linux-amd64/minio \
--create-dirs \
-o $HOME/minio-binaries/minio
chmod +x $HOME/minio-binaries/minio
export PATH=$PATH:$HOME/minio-binaries/
minio --help
**64-bit PPC**
.. code-block:: shell
:class: copyable
curl https://dl.min.io/server/minio/release/linux-ppc64le/minio \
--create-dirs \
-o $HOME/minio-binaries/minio
chmod +x $HOME/minio-binaries/minio
export PATH=$PATH:$HOME/minio-binaries/
minio --help
.. tab:: macOS
**Homebrew**
.. code-block:: shell
:class: copyable
brew install minio/stable/minio
minio --help
**Binary Download**
.. code-block:: shell
:class: copyable
curl https://dl.min.io/server/minio/release/darwin-amd64/minio \
--create-dirs \
-o $HOME/minio-binaries/minio
chmod +x $HOME/minio-binaries/minio
export PATH=$PATH:$HOME/minio-binaries/
.. tab:: Windows
Open the following file in a browser:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
Execute the file by double clicking on it, *or* by running the
following in the command prompt or powershell:
.. code-block:: powershell
\path\to\mc.exe --help
.. tab:: Source
Installation from source is intended for developers and advanced users
and requires a working Golang environment. See
`How to install Golang <https://golang.org/doc/install>`__.
Run the following commands in a terminal environment to install ``minio``
from source:
.. code-block:: shell
:class: copyable
go get -d github.com/minio/minio
cd ${GOPATH}/src/github.com/minio/minio
make
To update a source-based installation, use ``go get -u``.
:mc-cmd:`minio update` does not support source-based installations.

View File

@ -12,15 +12,17 @@ First-time users of MinIO *or* object storage services should start with
our :doc:`Introduction </introduction/minio-overview>`. our :doc:`Introduction </introduction/minio-overview>`.
Users deploying onto a Kubernetes cluster should start with our Users deploying onto a Kubernetes cluster should start with our
:doc:`Kubernetes-specific documentation </kubernetes/minio-kubernetes>`. :doc:`Kubernetes documentation </kubernetes/minio-kubernetes-overview>`.
.. toctree:: .. toctree::
:titlesonly: :titlesonly:
:hidden: :hidden:
/introduction/minio-overview /introduction/minio-overview
/minio-features/overview.rst /minio-features/overview
/kubernetes/minio-kubernetes /bare-metal/minio-baremetal-overview
/kubernetes/minio-kubernetes-overview
/security/minio-security /security/minio-security
/minio-cli/minio-mc /minio-cli/minio-mc
/minio-cli/minio-mc-admin /minio-cli/minio-mc-admin
/minio-server/minio-server

View File

@ -1,75 +0,0 @@
.. _minio-bucket:
=======
Buckets
=======
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
A :ref:`bucket <minio-bucket>` is a folder or storage container that can hold an
arbitrary number of :ref:`objects <minio-object>`. Minio buckets provide the
same functionality as an Amazon Web Services (AWS) S3 Bucket. The MinIO API is
fully compatible with the Amazon S3 API, where applications can seamlessly
transition to using the MinIO deployment with minimal code changes.
Bucket Notifications
--------------------
MinIO Bucket Notifications allow you to automatically publish notifications
to one or more configured endpoints when specific events occur in a bucket.
See :doc:`/minio-features/bucket-notifications` for more information.
Push Notifications
~~~~~~~~~~~~~~~~~~
MinIO supports pushing events to the following targets:
- AMQP
- MQTT
- Elasticsearch
- NSQ
- Redis
- NATS
- PostgreSQL
- MySQL
- Apache Kafka
- Webhooks
Use the ``mc admin`` utility to configure the MinIO deployment to actively
push notifications to each configured target. For more complete documentation,
see <logging tbd>
Listener API
~~~~~~~~~~~~
MinIO provides two routes to listen for events for a given bucket:
- The ``mc event`` command.
- The ``BucketNotification`` API.
.. todo: Add more information here as its available.
Write Once Read Many (WORM)
---------------------------
MinIO supports enabling Write-Once Read-Many (WORM) for specific objects
in a bucket *or* for all objects in the bucket. Objects with WORM applied
are immutable, and can only be deleted if the WORM configuration includes an
expiry.
Configure WORM for Bucket
~~~~~~~~~~~~~~~~~~~~~~~~~
ToDo: Enable, Disable WORM
Configure WORM for Specific Objects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ToDo: Enable, Disable WORM per object

View File

@ -2,6 +2,8 @@
Deployment Topologies Deployment Topologies
===================== =====================
.. default-domain:: minio
MinIO supports three deployment topologies: MinIO supports three deployment topologies:
.. list-table:: .. list-table::
@ -25,7 +27,7 @@ MinIO supports three deployment topologies:
* - :ref:`Active-Active <minio-deployment-active-active>` * - :ref:`Active-Active <minio-deployment-active-active>`
- Multiple distributed deployments with intra-deployment - Multiple distributed deployments with intra-deployment
replication to synchronize :ref:`objects <minio-object>` across replication to synchronize :ref:`objects <objects>` across
deployments. deployments.
Active-Active Distributed deployments are ideal for production Active-Active Distributed deployments are ideal for production
@ -43,6 +45,7 @@ TBD:
- Link to deployment tutorials (kubernetes, bare-metal) - Link to deployment tutorials (kubernetes, bare-metal)
.. _minio-deployment-distributed: .. _minio-deployment-distributed:
.. _minio-zones:
Distributed Deployment Distributed Deployment
---------------------- ----------------------
@ -51,6 +54,7 @@ TBD:
- Add a diagram of a distributed deployment - Add a diagram of a distributed deployment
- List the drawbacks (if any) - List the drawbacks (if any)
- Link to deployment tutorials (kubernetes, bare-metal) - Link to deployment tutorials (kubernetes, bare-metal)
- Discuss horizontal expansion / zones
.. _minio-deployment-active-active: .. _minio-deployment-active-active:

View File

@ -4,6 +4,8 @@
Erasure Coding Erasure Coding
============== ==============
.. default-domain:: minio
MinIO protects data with per-object, inline erasure coding, which is written in MinIO protects data with per-object, inline erasure coding, which is written in
assembly code to deliver the highest performance possible. MinIO uses assembly code to deliver the highest performance possible. MinIO uses
Reed-Solomon code to stripe objects into `n/2` data and ``n/2`` parity blocks - Reed-Solomon code to stripe objects into `n/2` data and ``n/2`` parity blocks -

View File

@ -2,6 +2,8 @@
Introduction Introduction
============ ============
.. default-domain:: minio
MinIO is a High Performance Object Storage released under Apache License v2.0. MinIO is a High Performance Object Storage released under Apache License v2.0.
It is API compatible with Amazon S3 cloud storage service. Use MinIO to build It is API compatible with Amazon S3 cloud storage service. Use MinIO to build
high performance infrastructure for machine learning, analytics and application high performance infrastructure for machine learning, analytics and application
@ -10,50 +12,55 @@ data workloads.
What Is Object Storage? What Is Object Storage?
----------------------- -----------------------
Applications create, update, retrieve, and delete data as part of normal .. _objects:
operations. MinIO provides a complete solution for managing the storage
and access of that data as :ref:`objects <minio-object>`. Applications group
objects into one or more :ref:`buckets <minio-bucket>`.
MinIO is fully compatible with the Amazon Web Services Simple Storage Service An :ref:`object <objects>` is binary data, sometimes referred to as a Binary
(AWS S3) API. Applications using the AWS S3 API can seamlessly transition to Large OBject (BLOB). Blobs can be images, audio files, spreadsheets, or even
using a MinIO deployment for managing their application's object storage with binary executable code. Object Storage platforms like MinIO provide dedicated
minimal code changes. tools and capabilities for storing, retrieving, and searching for blobs.
Erasure Coding .. _buckets:
--------------
MinIO Erasure Coding guarantees object retrieval as long as the deployment MinIO Object Storage uses :ref:`buckets <buckets>` to organize objects.
has at least half of its drives operational. Specifically, the deployment A bucket is similar to a folder or directory in a filesystem, where each
can lose `(n/2)-1` drives and still service create, retrieval, update, and bucket can hold an arbitrary number of objects. MinIO buckets provide the
delete operations. same functionality as AWS S3 buckets.
For example, consider a deployment with 12 data drives. MinIO splits the For example, consider an application that hosts a web blog. The application
12 drive set into 6 data drives and 6 parity drives. As long as *at least* 7 needs to store a variety of blobs, including rich multimedia like videos and
drives are online, the MinIO server can guarantee retrieval of any stored images. The structure of objects on the MinIO server might look similar to the
object. following:
For more information on MinIO Erasure Coding, see .. code-block:: shell
:ref:`minio-erasure-coding`.
Bitrot Protection / #root
----------------- /images/
2020-01-02-blog-title.png
2020-01-03-blog-title.png
/videos/
2020-01-03-blog-cool-video.mp4
/blogs/
2020-01-02-blog.md
2020-01-03-blog.md
/comments/
2020-01-02-blog-comments.json
2020-01-02-blog-comments.json
MinIO Bitrot Protection heals objects that have degraded due to Deploying MinIO
disk corruption. When applications request a specific object, MinIO ---------------
automatically checks for corruption and applies a healing algorithm to
reconstruct the object.
For more information on MinIO Bitrot Protection, see For Kubernetes clusters, use the MinIO Kubernetes Operator.
:ref:`minio-bitrot-protection`. See :ref:`minio-kubernetes` for more information.
For bare-metal environments, including private cloud services
or containerized environments, install and run the :mc:`minio server` on
each host in the MinIO deployment. See :ref:`minio-baremetal` for more
information.
.. toctree:: .. toctree::
:hidden: :hidden:
:titlesonly: :titlesonly:
/introduction/buckets.rst
/introduction/objects.rst
/introduction/deployment-topologies.rst /introduction/deployment-topologies.rst
/introduction/erasure-coding.rst /introduction/erasure-coding.rst
/introduction/bitrot-protection.rst /introduction/bitrot-protection.rst

View File

@ -1,15 +0,0 @@
.. _minio-object:
=======
Objects
=======
An :ref:`object <minio-object>` is any kind of data with no limit to its
size, format, or type. Examples of objects include digital images,
text documents, or video files. Applications can store, retrieve, and
delete objects from a MinIO deployment.
MinIO objects provide the same core functionality as an Amazon Web Services (AWS)
S3 Object. The MinIO API is fully compatible with the Amazon S3 API,
where applications can seamlessly transition to using the MinIO deployment
with minimal code changes.

View File

@ -1,87 +0,0 @@
====================================
Deploy MinIO on a Kubernetes Cluster
====================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
Overview
--------
This tutorial uses the MinIO Kubernetes Operator to deploy MinIO to your
Kubernetes cluster in a distributed configuration. Distributed MinIO deployments
are suitable for development, staging, and production environments. For
a tutorial on creating a more simple MinIO deployment for local development
and evaluation, see :doc:`/kubernetes/quickstart`.
By default, this tutorial creates a distributed MinIO deployment with the
following components:
- 4 MinIO server instances with TLS enabled.
- 4 x 1TB storage volumes per MinIO server instance.
- 1 MinIO KES key management instance.
- 1 MinIO Minio Console Service instance.
- 1 MinIO Operator instance.
This tutorial includes instructions for modifying the deployment configuration
for your specific requirements.
You should have basic familiarity with Kubernetes, its associated terminology,
and its command line tools prior to starting this tutorial. While the MinIO
documentation makes a best-effort to address Kubernetes-specific information,
you should review the official Kubernetes :kube-docs:`documentation <>` for more
complete coverage.
.. _minio-kubernetes-deploy-minio-prerequisites:
Prerequisites
-------------
This tutorial requires the following resources:
- The :minio-git:`minio-operator <minio-operator>` github repository.
- A Kubernetes cluster with *at least* **four**
:kube-docs:`node` per MinIO server instance. Each node must have *at least*
**four** persistent volumes.
- A host machine with ``kubectl`` installed. See
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
The host machine should be configured such that ``kubectl`` can access the
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
<tasks/access-application-cluster>` for more information.
Considerations
--------------
.. ToDo:
- Document recommended resource allocation (CPU, RAM, etc.)
- Document recommended number of MinIO pods to Nodes
- Document recommended ratio of PV to Physical Disk
Procedure
---------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````

View File

@ -1,113 +0,0 @@
========================================
Enforce Security for MinIO in Kubernetes
========================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
Overview
--------
This page covers multiple procedures for configuring MinIO security features
using the MinIO Kubernetes Operator.
You should have basic familiarity with Kubernetes, its associated terminology,
and its command line tools prior to starting any of the documented procedures.
While the MinIO documentation makes a best-effort to address Kubernetes-specific
information, you should review the official Kubernetes :kube-docs:`documentation
<>` for more complete coverage.
.. _minio-kubernetes-enforce-security-prerequisites:
Prerequisites
-------------
This tutorial requires the following resources:
- The :minio-git:`minio-operator <minio-operator>` github repository.
- A Kubernetes cluster with *at least* **four**
:kube-docs:`node` per MinIO server instance. Each node must have *at least*
**four** persistent volumes.
- A host machine with ``kubectl`` installed. See
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
The host machine should be configured such that ``kubectl`` can access the
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
<tasks/access-application-cluster>` for more information.
Considerations
--------------
.. ToDo:
- Document recommended resource allocation (CPU, RAM, etc.)
- Document recommended number of MinIO pods to Nodes
- Document recommended ratio of PV to Physical Disk
Enable TLS
----------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
Configure Root Access to MinIO Servers
--------------------------------------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
Another Deployment-Level Security Feature
-----------------------------------------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````

View File

@ -1,77 +0,0 @@
====================================
Expand MinIO in a Kubernetes Cluster
====================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
Overview
--------
This tutorial uses the MinIO Kubernetes Operator to expand an existing
distributed MinIO deployment in your Kubernetes cluster. Specifically,
this tutorial covers:
- Adding additional MinIO server instances to the deployment, *and*
- Adding additional drives to a MinIO server instance.
This tutorial includes instructions for modifying the deployment configuration
for your specific requirements.
You should have basic familiarity with Kubernetes, its associated terminology,
and its command line tools prior to starting this tutorial. While the MinIO
documentation makes a best-effort to address Kubernetes-specific information,
you should review the official Kubernetes :kube-docs:`documentation <>` for more
complete coverage.
.. _minio-kubernetes-expand-minio-prerequisites:
Prerequisites
-------------
This tutorial requires the following resources:
- The :minio-git:`minio-operator <minio-operator>` github repository.
- An existing Kubernetes cluster with a distributed MinIO deployment.
- A host machine with ``kubectl`` installed. See
:kube-docs:`Install and Set Up kubectl <tasks/tools/install-kubectl/>`
The host machine should be configured such that ``kubectl`` can access the
Kubernetes cluster. See :kube-docs:`Access Applications in a Cluster
<tasks/access-application-cluster>` for more information.
Considerations
--------------
.. ToDo:
- Document recommended resource allocation (CPU, RAM, etc.)
- Document recommended number of MinIO pods to Nodes
- Document recommended ratio of PV to Physical Disk
Procedure
---------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````

View File

@ -0,0 +1,27 @@
.. _minio-kubernetes:
=====================
MinIO for Kuberenetes
=====================
.. default-domain:: minio
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 cloud-native environment
to deploy and scale MinIO. The :minio-git:`MinIO Kubernetes Operator
</minio-operator>` brings native MinIO support to Kubernetes.
.. image:: /images/Kubernetes-Minio.svg
:align: center
:width: 90%
:class: no-scaled-link
:alt: Kubernetes Orchestration with the MinIO Operator facilitates automated deployment of MinIO clusters.
More complete documentation for the MinIO Kubernetes Operator is in progress.
See the :minio-git:`MinIO Kubernetes Operator </minio-operator>` Github
Repository for the most up-to-date progress on the project.

View File

@ -1,41 +0,0 @@
=====================
MinIO for Kuberenetes
=====================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
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 cloud-native environment to deploy and
scale MinIO. The :minio-git:`MinIO Kubernetes Operator </minio-operator>` brings
native MinIO support to Kubernetes.
.. image:: /images/Kubernetes-Minio.svg
:align: center
:width: 90%
:class: no-scaled-link
:alt: Kubernetes Orchestration with the MinIO Operator facilitates automated deployment of MinIO clusters.
.. versionchanged:: VERSION.VERSION
This feature was added in VERSION, upgrade to VERSION
.. toctree::
:titlesonly:
:hidden:
/kubernetes/quickstart
/kubernetes/deploy-on-kubernetes
/kubernetes/manage-on-kubernetes
/kubernetes/enforce-security
/kubernetes/operator-kes
/kubernetes/operator-mcs
/kubernetes/operator-reference

View File

@ -1,79 +0,0 @@
========================================
Deploy MinIO KES on a Kubernetes Cluster
========================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
MinIO KES is a stateless and distributed key-management system for
high-performance applications. KES provides a bridge between applications
running in containerized deployments, like Kubernetes, and centralized Key
Mannagement Systems (KMS) like Hashicorp Vault or Amazon Web Services (AWS) KMS. This
tutorial covers the information necessary for using the MinIO Kubernetes
Operator (``minio-operator``) to deploy MinIO KES instances on a Kubernetes
Cluster.
You should have basic familiarity with the Kubernetes ecosystem and your
preferred KMS backend prior to starting this tutorial. Defer to the official
documentation for :kube-docs:`Kubernetes` and your preferred KMS backend for
more complete learning resource. While the MinIO docs make a best-effort
to cover third-party concepts and configurations, you should not depend on
this tutorial as the only source of information on third-party products.
For more complete documentation on MinIO KES, see <future page>.
Prerequisites
-------------
This tutorial requires the following resources:
Kubernetes Cluster
You should have access to a running Kubernetes cluster.
The Kubernetes cluster
- The Kubernetes cluster must have at least one running
:minio-git:`minio-operator <minio-operator>` instance. See
<future minio-operator deployment proc> for installation instructions.
The Kubernetes cluster should have *at least* **one** node with enough
resources to launch additional pods.
- The ``minio-operator`` has TLS configured and enabled. See
<future minio-operator security config docs> for configuration instructions.
- An x.509 Certificate and corresponding private key for MinIO KES to use
for mTLS authentication and authorization.
- A supported Key Management System backend. MinIO KES supports the following KMS providers:
- `Hashicorp Vault <https://www.vaultproject.io/?ref=minio>`__
- `Amazon Web Services KMS <https://aws.amazon.com/kms/?ref=minio>`__
- `Gemalto SafeNet KeySecure <https://www.netapp.com/us/products/storage-security-systems/key-management/keysecure-k460.aspx?ref=minio>`__
Procedure
---------
Procedure
---------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````

View File

@ -1,74 +0,0 @@
===================================================
Deploy MinIO Console Server on a Kubernetes Cluster
===================================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
MinIO Console Server (MCS) is a graphical user interface for administrating
MinIO servers. This tutorial covers the information necessary for using the
MinIO Kubernetes Operator (``minio-operator``) to deploy MinIO MCS instances on
a Kubernetes Cluster.
You should have basic familiarity with the Kubernetes ecosystem prior to
starting this tutorial. Defer to the official documentation for
:kube-docs:`Kubernetes` for more complete learning resources. While the MinIO
docs make a best-effort to cover third-party concepts and configurations, you
should not depend on this tutorial as the only source of information on
third-party products.
For more complete documentation on MinIO MCS, see <future page>.
Prerequisites
-------------
This tutorial requires the following resources:
Kubernetes Cluster
You should have access to a running Kubernetes cluster.
The Kubernetes cluster should have *at least* **one** node with enough
resources to launch additional pods.
MinIO Kubernetes Operator
The Kubernetes cluster must have at least one running
:minio-git:`minio-operator <minio-operator>` instance. See <future
minio-operator deployment proc> for installation instructions.
The MinIO operator *must* have TLS configured and enabled. See <future
security config docs> for configuration instructions.
MinIO Deployment
For a tutorial on deploying MinIO on Kubernetes, see
:doc:`/kubernetes/deploy-on-kubernetes`.
For a shorter tutorial for local development only, see
:doc:`/kubernetes/quickstart`.
The MinIO deployment must have at least one MinIO user with administrative
privileges for the MCS instance to use for authentication and authorization.
See <future security docs> for more information on configuring MinIO users.
Procedure
---------
1) First Step Header
~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````
2) Second Step Header
~~~~~~~~~~~~~~~~~~~~~
a) First Substep
````````````````
b) Second Substep
`````````````````

View File

@ -1,133 +0,0 @@
========================
MinIO Operator Reference
========================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 2
This document explains the various fields supported by MinIO Operator and its
CRD's and how to use these fields to deploy and access MinIO server clusters.
MinIO Operator creates native Kubernetes resources within the cluster. The
operator uses the name of the created MinIO Instance as a prefix for
all resources created by the operator. For example, if deploying a
MinIO instance named ``minioinstance``, the operator creates the following
resources with their associated names:
- Headless Service: ``minioinstance-hl-svc``
- StatefulSet: ``minioinstance``
- Secret: ``minioinstance-tls`` (If :kubeconf:`spec.requestAutoCert` is enabled)
- CertificateSigningRequest: ``minioinstance-csr`` (If :kubeconf:`spec.requestAutoCert` is enabled)
The MinIO Kubernetes Operator is under active development. The contents of
this page may change at any time.
Configuration File Overview
---------------------------
The following example shows all possible MinIO Kubernetes Operator configuration
options.
.. code-block:: yaml
:class: copyable
apiVerison: operator.min.io/v1
kind: "MinIOInstance"
metadata: <object>
scheduler: <string>
spec:
metadata: <object>
image: <string>
zones: <int>
volumesPerServer: <int>
imagePullSecret: <string>
credsSecret: <string>
replicas: <int>
podManagementPolicy: <string>
mountPath: <string>
subPath: <string>
volumeClaimTemplate: <object>
env: <object>
requestAutoCert: <bool>
certConfig: <object>
externalCertSecret: <object>
resources: <object>
liveness: <object>
nodeSelector: <object>
tolerations: <object>
securityContext: <object>
serviceAccountName: <string>
mcs:
image: <string>
replicas: <int>
mcsSecret: <string>
metadata: <object>
kes:
replicas: <int>
image: <string>
configSecret: <string>
metadata: <object>
Configuration Options
---------------------
.. kubeconf:: kind
*Type*: String
Specify ``MinIOInstance``.
.. kubeconf:: metadata
*Type*: Object
Metadata related to the ``MinIOInstance``. For example, the
following sets the ``label`` for the ``MinIOInstance`` object:
.. code-block:: yaml
metadata:
labels: minio
See :kube-api:`#objectmeta-v1-meta` for more complete documentation on
supported metadata options.
.. kubeconf:: spec
*Type*: Object
The specifications used by the MinIO Operator to deploy the MinIO
server cluster.
Options marked as **Required** must be included in the configuration
document.
.. kubeconf:: spec.metadata
*Type* : Object
Metadata related to all pods launched by the MinIO operator. For example, the
following sets the ``label`` for all pods launched by the MinIO instance
.. code-block:: yaml
metadata:
labels: minio
See :kube-api:`metadata reference documentation <#objectmeta-v1-meta>` for
more complete documentation on supported metadata options.
.. kubeconf:: spec.requestAutoCert
*Type*: Boolean
*Defaults*: ``false``
Specify ``true`` to enable automatic TLS certificate generation for each
resource created by the MinIO Operator. The operator uses the root
Certificate Authority (CA) configured for the Kubernetes cluster to generate
the required Certificate Signing Requests (CSR).

View File

@ -1,229 +0,0 @@
============================================
Quickstart: Deploy a Standalone MinIO Server
============================================
.. default-domain:: minio
.. contents:: On This Page
:local:
:depth: 1
Overview
--------
This tutorial uses the MinIO Operator to create a standalone MinIO server on a
local Kubernetes cluster. Standalone MinIO deployments are best suited for local
development of applications using MinIO for object storage. For a tutorial on
creating a production-grade MinIO deployment on a Kubernetes cluster, see
:doc:`/kubernetes/deploy-on-kubernetes`.
By default, this tutorial creates a standalone MinIO deployment with the
following components:
- 1 MinIO server instance with TLS enabled.
- 4 x 100MB storage volumes
- 1 MinIO Minio Console Service instance.
- 1 MinIO Operator instance.
You should have basic familiarity with Kubernetes, its associated terminology,
and its command line tools prior to starting this tutorial. While the MinIO
documentation makes a best-effort to address Kubernetes-specific information,
you should review the official Kubernetes :kube-docs:`documentation <>` for more
complete coverage.
.. _minio-kubernetes-quickstart-prerequisites:
Prerequisites
-------------
This tutorial requires the following resources:
- The :minio-git:`minio-operator <minio-operator>` github repository.
- The `kind <https://kind.sigs.k8s.io/>`__ Kubernetes cluster deployment tool.
Defer to the ``kind``
`Quick Start <https://kind.sigs.k8s.io/docs/user/quick-start/>`__ for
installation instructions and related dependencies.
- A host machine where you have rights to install and run software. The
host machine **must** have *at least* the following available resources:
- 10GB of free storage space.
- 2GB of free system memory (RAM)
- 2 or more physical CPUs.
Procedure
---------
1) Download and Configure Prerequisites
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a\) Clone the ``minio-operator`` github repository
Issue the following command in a terminal or shell on the host machine
to clone the :minio-git:`minio-operator <minio-operator>` github repository.
.. include:: /includes/minio-kubernetes-operator.rst
The github repository contains the MinIO Kubernetes Operator and the example
configuration files used as part of this tutorial.
b\) Install and configure ``kind``
Follow the instructions on the ``kind``
`Quick Start <https://kind.sigs.k8s.io/docs/user/quick-start/>`__ guide.
Once installed, use the following ``kind`` cluster configuration file to
create a Kubernetes cluster that can support a standalone MinIO server:
.. code-block:: yaml
:class: copyable
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
Issue the following command in a terminal or shell on the host machine to
create the local Kubernetes cluster:
.. code-block:: shell
:class: copyable
kind create cluster --name minio-local --config.yaml
To confirm the cluster is available, run the following command:
.. code-block:: shell
:class: copyable
kubectl --cluster-info --context kind-minio-local
Take note of the hostnames assigned to each component in the Kubernetes
cluster.
2) Start the MinIO Kubernetes Operator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Issue the following command in a terminal or shell on the host machine to
start the MinIO Kubernetes Operator.
.. code-block:: shell
:class: copyable
kubectl apply -f ~/minio-kubernetes/git/minio-operator/minio-operator.yaml
The ``minio-operator.yaml`` configuration file creates a
``minio-operator`` deployment in the Kubernetes cluster.
3) Configure the Storage Layer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The example MinIO server configuration used in this tutorial requires four
:kube-docs:`persistent volumes <storage/persistent-volumes/>` to start
successfully. This configuration enables features such as :ref:`erasure coding
<minio-erasure-coding>`.
Create four Kubernetes persistent volumes for use by the MinIO server instance.
MinIO recommends creating :kube-docs:`local <storage/volumes/#local>` persistent
volumes. The following template provides all required fields for creating the
required persistent volumes:
.. code-block:: yaml
:class: copyable
apiVersion: v1
kind: PersistentVolume
metadata:
name: minioexample-pv1
spec:
capacity:
storage: 10Gi # specify the maximum size of the storage device
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage-class
local:
path: /var/export1 # specify path to local volume on host
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minio-local-worker #specify hostname prefix of preferred node
Change the following configuration options as appropriate for the host
machine configuration:
- ``spec.capacity.storage`` ( :kube-docs:`reference <concepts/storage/persistent-volumes/#capacity>`)
- ``spec.local.path`` ( :kube-api:`reference <#localvolumesource-v1-core>`)
- ``spec.nodeAffinity.required.matchExpressions.key.values`` (:kube-api:`reference <#nodeselectorrequirement-v1-core>`)
Issue the following command against each persistent volume configuration file
to create the associated resources. Replace ``<pv-filename>`` with the name
of each persistent volume configuration file.
.. code-block:: shell
kubectl apply -f ~/minio-kubernetes/<pv-filename>.yaml
Issue the following command to check the state of the persistent volumes:
.. code-block:: shell
:class: copyable
kubectl get pv
The output should include the four created persistent volumes.
4) Create the MinIO Server
~~~~~~~~~~~~~~~~~~~~~~~~~~
Issue the following command in a terminal or shell to create the MinIO
standalone instance using the MinIO Kubernetes Operator:
.. code-block:: shell
kubectl apply -f ~/minio-kubernetes/minio-operator/examples/minioinstance-standalone.yaml
Issue the following command to check the state of the minio instance:
.. code-block:: shell
kubectl get pods
The output should include a pod running the MinIO server.
5) Connect to the MinIO Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ``minioinstance-standalone.yaml`` configuration file also creates a
Kubernetes Service to manage communications to and from pods running the MinIO
service. Issue the following command to get the IP address of the service:
.. code-block:: shell
kubectl get services
The default access key is ``minio-admin`` and the default secret key is
``minio-admin``.
You must use the IP address of the ``minio-service`` to access the MinIO
server. For example, if the IP address is ``192.51.100.21``, enter the URL
``http://192.51.100.21:9000`` into your browser to access the MinIO server.
To connect using the ``mc`` client, issue the following command on in a
terminal or shell:
.. code-block:: shell
mc config host add minio http://192.51.100.21 minio-admin minio-admin
Next Steps
~~~~~~~~~~
- Perform CRUD operations on a MinIO Server (ToDo)
-

7
source/meta/404.rst Normal file
View File

@ -0,0 +1,7 @@
:orphan:
==============
Page Not Found
==============
The page you are looking for has moved, been deleted, or does not exist.

View File

@ -4,7 +4,7 @@ MinIO Admin (``mc admin``)
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1
@ -62,8 +62,8 @@ Ensure that the host machine has :command:`mc`
security best practices for your operating system for inputting sensitive security best practices for your operating system for inputting sensitive
information on the command line. information on the command line.
Use the :subcommand:`mc alias add` command to add the Use the :mc-cmd:`mc alias set` command to add the
deployment to the :command:`mc` configuration. deployment to the :program:`mc` configuration.
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
@ -111,7 +111,7 @@ The command has the following syntax:
If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the
command returns information for each MinIO server in the deployment. Use command returns information for each MinIO server in the deployment. Use
:subcommand:`mc alias add` to list the currently configured aliases and their :subcommand:`mc alias set` to list the currently configured aliases and their
corresponding endpoints. corresponding endpoints.
*Display MinIO Server Information* *Display MinIO Server Information*
@ -148,7 +148,7 @@ The command has the following syntax:
If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the If the specified ``<ALIAS>`` corresponds to a distributed MinIO deployment, the
command adds the policy to each MinIO server in the deployment. Use command adds the policy to each MinIO server in the deployment. Use
:subcommand:`mc alias add` to list the currently configured aliases and their :subcommand:`mc alias set` to list the currently configured aliases and their
corresponding endpoints. corresponding endpoints.
MinIO servers include the following canned policies: MinIO servers include the following canned policies:

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -1,10 +1,10 @@
================= =====================
MinIO Client (mc) MinIO Client (``mc``)
================= =====================
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1
@ -21,14 +21,16 @@ support for both filesystems and Amazon S3-compatible cloud storage services
mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] ALIAS mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] ALIAS
.. _mc-install:
Quickstart Quickstart
---------- ----------
1) Install ``mc`` 1) Install ``mc``
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
Ensure that the host machine has :mc-cmd:`mc` Install the :program:`mc` command line tool onto the host machine. Click
:ref:`installed <mc-install>` prior to starting this procedure: the tab that corresponds to the host machine operating system or environment:
.. include:: /includes/minio-mc-installation.rst .. include:: /includes/minio-mc-installation.rst
@ -43,27 +45,25 @@ Ensure that the host machine has :mc-cmd:`mc`
security best practices for your operating system for inputting sensitive security best practices for your operating system for inputting sensitive
information on the command line. information on the command line.
Use the :mc-cmd:`mc alias add` command to add an Amazon S3-compatible host Use the :mc-cmd:`mc alias set` command to add an Amazon S3-compatible service
to the :mc-cmd:`mc` :ref:`configuration <mc-configuration>`. to the :mc-cmd:`mc` :ref:`configuration <mc-configuration>`.
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
bash +o history bash +o history
mc alias add ALIAS ENDPOINT ACCESS_KEY SECRET_KEY --api [S3v2|S3v4] mc alias set ALIAS HOSTNAME ACCESS_KEY SECRET_KEY
bash -o history bash -o history
- Replace ``ALIAS`` with a name to associate to the S3 service. - Replace ``ALIAS`` with a name to associate to the S3 service.
:mc-cmd:`mc` commands typically require ``ALIAS`` as an argument for :mc-cmd:`mc` commands typically require ``ALIAS`` as an argument for
identifying which S3 service to execute against. identifying which S3 service to execute against.
- Replace ``ENDPOINT`` with the URL endpoint of the S3 service. - Replace ``HOSTNAME`` with the URL endpoint or IP address of the S3 service.
- Replace ``ACCESS_KEY`` and ``SECRET_KEY`` with the access and secret - Replace ``ACCESS_KEY`` and ``SECRET_KEY`` with the access and secret
keys for a user on the S3 service. keys for a user on the S3 service.
- The ``--api`` flag is optional and defaults to ``S3v4`` if ommitted.
Replace each argument with the required values. Specifying only the Replace each argument with the required values. Specifying only the
``mc config host add`` command starts an input prompt for entering the ``mc config host add`` command starts an input prompt for entering the
required values. required values.
@ -77,21 +77,21 @@ Each of the following tabs contains a provider-specific example:
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
mc alias add myminio https://minioserver.example.net ACCESS_KEY SECRET KEY mc alias set myminio https://minioserver.example.net ACCESS_KEY SECRET KEY
.. tab:: AWS S3 Storage .. tab:: AWS S3 Storage
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
mc alias add myS3 https://s3.amazon.com/endpoint ACCESS_KEY SECRET KEY mc alias set myS3 https://s3.amazon.com/endpoint ACCESS_KEY SECRET KEY
.. tab:: Google Cloud Storage .. tab:: Google Cloud Storage
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
mc alias add myGCS https://storage.googleapis.com/endpoint ACCESS_KEY SECRET KEY mc alias set myGCS https://storage.googleapis.com/endpoint ACCESS_KEY SECRET KEY
3) Test the Connection 3) Test the Connection
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
@ -118,6 +118,8 @@ unsuccessful, check each of the following:
for more information on user access permissions. For other S3-compatible for more information on user access permissions. For other S3-compatible
services, defer to the documentation for that service. services, defer to the documentation for that service.
.. _minio-mc-commands:
Command Quick Reference Command Quick Reference
----------------------- -----------------------
@ -294,27 +296,6 @@ The following list describes each possible file path location in the order
You can use the ``--config-dir`` You can use the ``--config-dir``
.. _mc-install:
Installation
------------
.. include:: /includes/minio-mc-installation.rst
:mc:`mc` includes a default :mc-cmd:`alias <mc alias>` for the
https://play.min.io MinIO deployment. If the host machine has internet access,
you can use the ``play`` alias for testing and development purposes. For
example, the following lists all buckets on ``https://play.min.io``:
.. code-block:: shell
:class: copyable
mc ls play
The ``play`` MinIO deployment provides a simple sandbox for testing core S3
functionality. Any S3-compatible tool can view and interact with data on
``play``. Any data stored on ``play`` is public-facing and modifyable.
.. _minio-mc-global-options: .. _minio-mc-global-options:
Global Options Global Options
@ -322,6 +303,8 @@ Global Options
.. program:: mc .. program:: mc
All :ref:`commands <minio-mc-commands>` support the following global options:
.. option:: --debug .. option:: --debug
Enables verbose output to the console. Enables verbose output to the console.

View File

@ -4,9 +4,9 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 2
.. mc:: mc alias .. mc:: mc alias
@ -28,43 +28,77 @@ Using :mc-cmd:`mc alias` to add or remove an S3-compatible host is equivalent
to manually editing entries in the :program:`mc` to manually editing entries in the :program:`mc`
:ref:`configuration file <mc-configuration>`. :ref:`configuration file <mc-configuration>`.
.. important:: S3 Access Control and Limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:mc-cmd:`mc alias` requires specifying an access key and corresponding :mc-cmd:`mc alias` requires specifying an access key and corresponding secret
secret key for a user on the S3-compatible host. :program:`mc` can key for a user on the S3-compatible host. :program:`mc` can only perform
only perform operations on that host for which the user has explicit operations on that host for which the user has explicit permission. If the
permission. If the specified user cannot perform an action or access specified user cannot perform an action or access a resource on the S3 host,
a resource on the S3 host, :program:`mc` inherits those restrictions. :program:`mc` inherits those restrictions.
Quick Reference For more information on MinIO Access Control, see
--------------- :ref:`minio-auth-authz-overview`.
:mc-cmd:`mc alias add ALIAS HOSTNAME ACCESSKEY SECRETKEY <mc alias add>` For more complete documentation on S3 Access Control, see
Adds the specified S3-compatible host to the :s3-docs:`Amazon S3 Security <security.html>`.
:program:`mc` :ref:`configuration file <mc-configuration>`.
:program:`mc` commands can access the host using the
specified ``ALIAS``.
:mc-cmd:`mc alias remove ALIAS <mc alias remove>` For all other S3-compatible services, defer to the documentation for that
Removes the S3-compatible host associated to the specified alias from the service.
:program:`mc` :ref:`configuration file <mc-configuration>`.
Common Operations
-----------------
Add an S3-Compatible Service
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use :mc-cmd:`mc alias set` to add an S3-compatible service for use with
:program:`mc`:
.. code-block:: shell
:class: copyable
mc alias set ALIAS HOSTNAME ACCESSKEY SECRETKEY
- Replace ``ALIAS`` with the name of the alias to associate to the S3-compatible service.
- Replace ``HOSTNAME`` with the hostname or IP address of the S3-compatible service.
- Replace ``ACCESSKEY`` and ``SECRETKEY`` with the access and secret key for a
user on the S3-compatible service.
Remove a Configured S3-Compatible Service
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use :mc-cmd:`mc alias remove` to remove an S3-compatible alias from the
:program:`mc` configuration:
.. code-block:: shell
:class: copyable
mc alias remove ALIAS
- Replace ``ALIAS`` with the name of the S3-compatible service to remove.
Use :mc-cmd:`mc alias list` to list the currently configured S3-compatible
services.
List Configured S3-Compatible Services
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use :mc-cmd:`mc alias list` to list all configured S3-compatible aliases:
.. code-block:: shell
:class: copyable
mc alias list
:mc-cmd:`mc alias list <mc alias list>`
Lists all S3-compatible hosts and aliases in the :program:`mc`
:ref:`configuration file <mc-configuration>`.
Syntax Syntax
------ ------
:mc-cmd:`~mc alias` has the following syntax: .. mc-cmd:: set, s
:fullpath:
.. code-block:: shell
mc alias COMMAND [COMMAND FLAGS | -h ] [ARGUMENTS]
:mc-cmd:`~mc alias` supports the following commands:
.. mc-cmd:: add, a
Adds a new S3-compatible host to the configuration file. The command Adds a new S3-compatible host to the configuration file. The command
has the following syntax: has the following syntax:
@ -72,9 +106,9 @@ Syntax
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
mc alias add ALIAS HOSTNAME ACCESS_KEY SECRET_KEY --api [S3v2|S3v4] mc alias set ALIAS HOSTNAME ACCESS_KEY SECRET_KEY --api [S3v2|S3v4]
:mc-cmd:`mc alias add` supports the following arguments: :mc-cmd:`mc alias set` supports the following arguments:
.. mc-cmd:: ALIAS .. mc-cmd:: ALIAS
@ -111,6 +145,7 @@ Syntax
.. mc-cmd:: remove, rm .. mc-cmd:: remove, rm
:fullpath:
Removes a host entry from the configuration file. The command has the Removes a host entry from the configuration file. The command has the
following syntax: following syntax:
@ -121,6 +156,7 @@ Syntax
mc alias remove ALIAS mc alias remove ALIAS
.. mc-cmd:: list, ls .. mc-cmd:: list, ls
:fullpath:
Lists all hosts in the configuration file. The command has the following Lists all hosts in the configuration file. The command has the following
syntax: syntax:
@ -130,9 +166,6 @@ Syntax
mc alias list mc alias list
Behavior
--------
Examples Examples
-------- --------
@ -142,21 +175,4 @@ Add a New S3 Service Alias
.. code-block:: shell .. code-block:: shell
:class: copyable :class: copyable
mc alias add myminio https://myminio.example.net myminioaccesskey myminiosecretkey mc alias set myminio https://myminio.example.net myminioaccesskey myminiosecretkey
Remove an Existing S3 Service Alias
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: shell
:class: copyable
mc alias remove myminio
List All Configured S3 Service Aliases
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: shell
:class: copyable
mc alias list

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -4,7 +4,7 @@
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -6,7 +6,7 @@ Bucket Versioning
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2

View File

@ -0,0 +1,323 @@
========================
MinIO Server (``minio``)
========================
.. default-domain:: minio
.. contents:: Table of Contents
:local:
:depth: 2
.. mc:: minio
The :mc:`minio` command line executable starts either the MinIO Object Storage
process *or* the MinIO Gateway process.
MinIO Server
------------
The :mc:`minio server` command starts the MinIO server process:
.. code-block:: shell
:class: copyable
minio server /mnt/disk{1...4}
For examples of deploying :mc:`minio server` on a bare metal environment,
see :ref:`minio-baremetal`.
For examples of deploying :mc:`minio server` on a Kubernetes environment,
see :ref:`minio-kubernetes`.
Configuration Settings
~~~~~~~~~~~~~~~~~~~~~~
The :mc:`minio server` process stores its configuration in the storage
backend :mc-cmd:`directory <minio server DIRECTORIES>`. You can modify
configuration options using the
:mc-cmd:`mc admin config` command.
Syntax
~~~~~~~
.. mc:: minio server
Starts the ``minio`` server process.
The command has the following syntax:
.. code-block:: shell
:class: copyable
minio server [FLAGS] HOSTNAME/DIRECTORIES [HOSTNAME/DIRECTORIES..]
The command accepts the following arguments:
.. mc-cmd:: HOSTNAME
The hostname of a :mc:`minio server` process.
For standalone deployments, this field is *optional*. You can start a
standalone :mc:`minio <minio server>` process with only the
:mc-cmd:`~minio server DIRECTORIES` argument.
For distributed deployments, specify the hostname of each
:mc:`minio <minio server>` in the deployment.
:mc-cmd:`~minio server HOSTNAME` supports MinIO expansion notation
``{x...y}`` to denote a sequential series of hostnames. For example,
``https://minio{1...4}.example.net`` expands to:
- ``https://minio1.example.net``
- ``https://minio2.example.net``
- ``https://minio3.example.net``
- ``https://minio4.example.net``
The set of :mc:`minio server` processes in :mc-cmd:`~minio server HOSTNAME`
define a single :ref:`zone <minio-zones>`. MinIO *requires* sequential
hostnames to identify each :mc:`minio server` process in the zone.
Each additional ``HOSTNAME/DIRECTORIES`` pair denotes an additional zone for
the purpose of horizontal expansion of the MinIO deployment. For more
information on zones, see :ref:`minio-zones`.
.. mc-cmd:: DIRECTORIES
The directories or disks the :mc:`minio server` process uses as the
storage backend.
:mc-cmd:`~minio server DIRECTORIES` supports MinIO expansion notation
``{x...y}`` to denote a sequential series of folders or disks. For example,
``/mnt/disk{1...4}`` expands to:
- ``/mnt/disk1``
- ``/mnt/disk2``
- ``/mnt/disk3``
- ``/mnt/disk4``
The :mc-cmd:`~minio server DIRECTORIES` path(s) *must* be empty when first
starting the :mc:`minio <minio server>` process.
The :mc:`minio server` process requires *at least* 4 disks or directories
to enable :ref:`erasure coding <minio-erasure-coding>`.
.. important::
MinIO recommends locally-attached disks, where the
:mc-cmd:`~minio server DIRECTORIES` path points to each disk on the
host machine.
For development or evaluation, you can specify multiple logical
directories or partitions on a single physical volume to enable erasure
coding on the deployment.
For production environments, MinIO does **not recommend** using multiple
logical directories or partitions on a single physical disk. While MinIO
supports those configurations, the potential cost savings come at the risk
of decreased reliability.
.. mc-cmd:: address
:option:
*Optional* Binds the :mc:`minio <minio server>` server process to a
specific network address and port number. Specify the address and port as
``ADDRESS:PORT``, where ``ADDRESS`` is an IP address or hostname and
``PORT`` is a valid and open port on the host system.
To change the port number for all IP addresses or hostnames configured
on the host machine, specify ``:PORT`` where ``PORT`` is a valid
and open port on the host.
If omitted, :mc:`minio <minio server>` binds to port ``9000`` on all
configured IP addresses or hostnames on the host machine.
.. mc-cmd:: certs-dir, -S
:option:
*Optional* Specifies the path to the folder containing certificates the
:mc:`minio` process uses for configuring TLS/SSL connectivity.
Omit to use the default directory paths:
- Linux/OSX: ``${HOME}/.minio/certs``
- Windows: ``%%USERPROFILE%%\.minio\certs``.
See :ref:`minio-TLS` for more information on TLS/SSL connectivity.
.. mc-cmd:: quiet
:option:
*Optional* Disables startup information.
.. mc-cmd:: anonymous
:option:
*Optional* Hides sensitive information from logging.
.. mc-cmd:: json
:option:
*Optional* Outputs server logs and startup information in ``JSON``
format.
MinIO Gateway
-------------
Syntax
~~~~~~
.. mc:: minio gateway
Starts the MinIO Gateway process.
The command has the following syntax:
.. code-block:: shell
:class: copyable
minio gateway [FLAGS] SUBCOMMAND [ARGUMENTS]
:mc:`minio gateway` supports the following flags:
.. mc-cmd:: address
:option:
*Optional* Binds the MinIO Gateway to a specific network address and port
number. Specify the address and port as ``ADDRESS:PORT``, where ``ADDRESS``
is an IP address or hostname and ``PORT`` is a valid and open port on the
host system.
To change the port number for all IP addresses or hostnames configured
on the host machine, specify ``:PORT`` where ``PORT`` is a valid
and open port on the host.
.. mc-cmd:: certs-dir, -S
:option:
*Optional* Specifies the path to the folder containing certificates the
MinIO Gateway process uses for configuring TLS/SSL connectivity.
Omit to use the default directory paths:
- Linux/OSX: ``${HOME}/.minio/certs``
- Windows: ``%%USERPROFILE%%\.minio\certs``.
See :ref:`minio-TLS` for more information on TLS/SSL connectivity.
.. mc-cmd:: quiet
:option:
*Optional* Disables startup information.
.. mc-cmd:: anonymous
:option:
*Optional* Hides sensitive information from logging.
.. mc-cmd:: json
:option:
*Optional* Outputs server logs and startup information in ``JSON``
format.
:mc:`minio gateway` supports the following subcommands:
.. mc-cmd:: nas
:fullpath:
Creates a MinIO Gateway process configured for Network-Attached Storage
(NAS).
.. mc-cmd:: azure
:fullpath:
Creates a MinIO Gateway process configured for Microsoft Azure Blob Storage.
.. mc-cmd:: s3
:fullpath:
Creates a MinIO Gateway process configured for Amazon Simple Storage Service
(S3).
.. mc-cmd:: hdfs
:fullpath:
Creates a MinIO Gateway process configured for Hadoop Distributed File
System (HDFS).
.. mc-cmd:: gcs
:fullpath:
Creates a MinIO Gateway process configured for Google Cloud Storage.
Environment Variables
---------------------
The :mc:`minio server` and :mc:`minio gateway` processes can use the following
environment variables when creating its configuration settings:
Root Credentials
~~~~~~~~~~~~~~~~
.. envvar:: MINIO_ACCESS_KEY
The access key for the :ref:`root <minio-auth-authz-root>` user.
.. warning::
If :envvar:`MINIO_ACCESS_KEY` is unset,
:mc:`minio` defaults to ``minioadmin``.
**NEVER** use the default credentials in production environments.
MinIO strongly recommends specifying a unique, long, and random
:envvar:`MINIO_ACCESS_KEY` value for all environments.
.. envvar:: MINIO_SECRET_KEY
The secret key for the :ref:`root <minio-auth-authz-root>` user.
.. warning::
If :envvar:`MINIO_SECRET_KEY` is unset,
:mc:`minio` defaults to ``minioadmin``.
**NEVER** use the default credentials in production environments.
MinIO strongly recommends specifying a unique, long, and random
:envvar:`MINIO_ACCESS_KEY` value for all environments.
.. envvar:: MINIO_ACCESS_KEY_OLD
Used for rotating the :ref:`root <minio-auth-authz-root>` user access
key.
Restart the :mc:`minio server` process with *all* of the following
environment variables to rotate the root credentials:
- :envvar:`MINIO_ACCESS_KEY_OLD` set to the old access key.
- :envvar:`MINIO_ACCESS_KEY` set to the new access key.
- :envvar:`MINIO_SECRET_KEY_OLD` set to the old secret key.
- :envvar:`MINIO_SECRET_KEY` set to the new secret key.
The :mc:`minio server` process automatically detects and re-encrypts
the server configuration with the new credentials. After the process
restarts successfully, you can restart it without
:envvar:`MINIO_ACCESS_KEY_OLD`.
.. envvar:: MINIO_SECRET_KEY_OLD
Used for rotating the :ref:`root <minio-auth-authz-root>` user secret
key.
Restart the :mc:`minio server` process with *all* of the following
environment variables to rotate the root credentials:
- :envvar:`MINIO_ACCESS_KEY_OLD` set to the old access key.
- :envvar:`MINIO_ACCESS_KEY` set to the new access key.
- :envvar:`MINIO_SECRET_KEY_OLD` set to the old secret key.
- :envvar:`MINIO_SECRET_KEY` set to the new secret key.
The :mc:`minio server` process automatically detects and re-encrypts
the server configuration with the new credentials. After the process
restarts successfully, you can restart it without
:envvar:`SECRET_KEY_OLD`.

View File

@ -1,10 +1,12 @@
.. _minio-auth-authz-overview:
================================ ================================
Authentication and Authorization Authentication and Authorization
================================ ================================
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 2 :depth: 2
@ -105,6 +107,8 @@ their assigned groups.
:iam-docs:`Determining Whether a Request is Allowed or Denied Within an Account :iam-docs:`Determining Whether a Request is Allowed or Denied Within an Account
<reference_policies_evaluation-logic.html#policy-eval-denyallow>`. <reference_policies_evaluation-logic.html#policy-eval-denyallow>`.
.. _minio-auth-authz-root:
``root`` User ``root`` User
~~~~~~~~~~~~~ ~~~~~~~~~~~~~

View File

@ -1,10 +1,12 @@
.. _minio-TLS:
============================== ==============================
MinIO Transport Layer Security MinIO Transport Layer Security
============================== ==============================
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -6,7 +6,7 @@ MinIO Security Token Service
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -4,7 +4,7 @@ Server-Side Object Encryption
.. default-domain:: minio .. default-domain:: minio
.. contents:: On This Page .. contents:: Table of Contents
:local: :local:
:depth: 1 :depth: 1

View File

@ -41,7 +41,7 @@ MinIO provides support for the following security features:
:titlesonly: :titlesonly:
:hidden: :hidden:
/security/minio-authentication-authorization-review /security/minio-authentication-authorization
/security/minio-security-TLS-encryption /security/minio-security-TLS-encryption
/security/minio-security-server-side-encryption /security/minio-security-server-side-encryption
/security/minio-security-security-token-service /security/minio-security-security-token-service

View File

@ -533,6 +533,7 @@ class MinIODomain(Domain):
'mc-cmd': ObjType(_('mc-cmd'), 'mc-cmd'), 'mc-cmd': ObjType(_('mc-cmd'), 'mc-cmd'),
'mc-cmd-option': ObjType(_('mc-cmd-option'), 'mc-cmd-option'), 'mc-cmd-option': ObjType(_('mc-cmd-option'), 'mc-cmd-option'),
'policy-action': ObjType(_('policy-action'), 'policy-action'), 'policy-action': ObjType(_('policy-action'), 'policy-action'),
'envvar': ObjType(_('envvar'), 'envvar')
} }
directives = { directives = {
'data': MinioObject, 'data': MinioObject,
@ -543,7 +544,8 @@ class MinIODomain(Domain):
'flag': MinioObject, 'flag': MinioObject,
'mc': MinioMCCommand, 'mc': MinioMCCommand,
'mc-cmd': MinioMCObject, 'mc-cmd': MinioMCObject,
'policy-action': MinioObject 'policy-action': MinioObject,
'envvar': MinioObject
} }
roles = { roles = {
'data': MinioXRefRole(), 'data': MinioXRefRole(),
@ -556,6 +558,7 @@ class MinIODomain(Domain):
'mc-cmd': MinioXRefRole(), 'mc-cmd': MinioXRefRole(),
'mc-cmd-option': MinioCMDOptionXRefRole(), 'mc-cmd-option': MinioCMDOptionXRefRole(),
'policy-action': MinioXRefRole(), 'policy-action': MinioXRefRole(),
'envvar': MinioXRefRole(),
} }
initial_data = { initial_data = {