diff --git a/.gitignore b/.gitignore index 040f227b..20a27003 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ main.css objects.inv output.log .DS_Store -source/conf.py \ No newline at end of file +source/conf.py +package-lock.json \ No newline at end of file diff --git a/Makefile b/Makefile index a8c37fbb..768266f6 100644 --- a/Makefile +++ b/Makefile @@ -62,11 +62,38 @@ k8s: @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@ @npm run build +sync-operator-version: + @echo "Retrieving latest Operator version" + $(shell wget -O /tmp/downloads-operator.json https://api.github.com/repos/minio/operator/releases/latest) + $(eval OPERATOR = $(shell cat /tmp/downloads-operator.json | jq '.tag_name[1:]')) + + @echo "Replacing variables" + + @cp source/default-conf.py source/conf.py + + @case "${kname}" in \ + "Darwin") \ + sed -i "" "s|OPERATOR|${OPERATOR}|g" source/conf.py;\ + ;; \ + *) \ + sed -i "s|OPERATOR|${OPERATOR}|g" source/conf.py; \ + ;; \ + esac + sync-kes-version: @echo "Retrieving latest stable KES version" @$(eval KES = $(shell curl --retry 10 -Ls -o /dev/null -w "%{url_effective}" https://github.com/minio/kes/releases/latest | sed "s/https:\/\/github.com\/minio\/kes\/releases\/tag\///")) - @sed -i "s|KESLATEST|${KES}|g" source/conf.py + @$(eval kname = $(shell uname -s)) + + @case "${kname}" in \ + "Darwin") \ + sed -i "" "s|KESLATEST|${KES}|g" source/conf.py;\ + ;; \ + *) \ + sed -i "s|KESLATEST|${KES}|g" source/conf.py; \ + ;; \ + esac sync-minio-version: @echo "Retrieving current MinIO version" @@ -77,9 +104,10 @@ sync-minio-version: @cp source/default-conf.py source/conf.py - @kname=$(uname -s) + @$(eval kname = $(shell uname -s)) + @case "${kname}" in \ - Darwin) \ + "Darwin") \ sed -i "" "s|MINIOLATEST|${MINIO}|g" source/conf.py; \ sed -i "" "s|DEBURL|${DEB}|g" source/conf.py; \ sed -i "" "s|RPMURL|${RPM}|g" source/conf.py; \ @@ -91,13 +119,6 @@ sync-minio-version: ;; \ esac - @if [ "$(shell git diff --name-only | grep 'conf.py')" == "" ]; then \ - echo "MinIO Server Version already latest"; \ - else \ - echo "New MinIO Server Version available ${MINIO}" ; \ - #git add source/conf.py && git commit -m "Updating MinIO server to ${MINIO}"; \ - fi - sync-java-docs: @echo "Retrieving Java docs from github.com/minio/minio-java" @$(eval LATEST = $(shell wget -q https://api.github.com/repos/minio/minio-java/releases/latest -O - | jq -r '.tag_name')) diff --git a/source/default-conf.py b/source/default-conf.py index ff07593b..295e8a86 100644 --- a/source/default-conf.py +++ b/source/default-conf.py @@ -110,6 +110,19 @@ if tags.has("linux"): 'operations/install-deploy-manage/upgrade-minio-operator.rst', 'operations/install-deploy-manage/delete-minio-tenant.rst', 'operations/deploy-manage-tenants.rst', + 'reference/kubectl-minio-plugin.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-init.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-proxy.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-version.rst', ] elif tags.has("macos"): excludes = [ @@ -120,6 +133,19 @@ elif tags.has("macos"): 'operations/install-deploy-manage/upgrade-minio-operator.rst', 'operations/install-deploy-manage/delete-minio-tenant.rst', 'operations/deploy-manage-tenants.rst', + 'reference/kubectl-minio-plugin.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-init.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-proxy.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-version.rst', ] elif tags.has("windows"): excludes = [ @@ -130,6 +156,19 @@ elif tags.has("windows"): 'operations/install-deploy-manage/upgrade-minio-operator.rst', 'operations/install-deploy-manage/delete-minio-tenant.rst', 'operations/deploy-manage-tenants.rst', + 'reference/kubectl-minio-plugin.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-init.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-proxy.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-tenant.rst', + 'reference/kubectl-minio-plugin/kubectl-minio-version.rst', ] elif tags.has("k8s"): excludes = [ @@ -149,6 +188,11 @@ exclude_patterns.extend(excludes) # This should suppress myst warnings, but it doesn't seem to work. +intersphinx_mapping = { + 'k8s' : ('https://docs.min.io/minio/k8s/', None), + 'baremetal': ('https://docs.min.io/minio/baremetal', None), +} + # Copy-Button Customization copybutton_selector = "div.copyable pre" @@ -207,6 +251,7 @@ rst_prolog = """ .. |kes-tag| replace:: `KESLATEST `__ .. |kes-stable| replace:: KESLATEST +.. |operator-version-stable| replace:: OPERATOR .. |minio-tag| replace:: `MINIOLATEST `__ .. |minio-latest| replace:: MINIOLATEST diff --git a/source/images/minio-k8s.svg b/source/images/minio-k8s.svg new file mode 100644 index 00000000..47f351de --- /dev/null +++ b/source/images/minio-k8s.svg @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/includes/k8s/quickstart.rst b/source/includes/k8s/quickstart.rst index 2e1e46fb..33ad8234 100644 --- a/source/includes/k8s/quickstart.rst +++ b/source/includes/k8s/quickstart.rst @@ -8,7 +8,7 @@ Quickstart for Kubernetes .. |OS| replace:: Kubernetes -This procedure deploys a :ref:`Single-Node Single-Drive ` MinIO server onto |OS| for early development and evaluation of MinIO Object Storage and its S3-compatible API layer. +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 Opreator ` to deploy and manage production-ready MinIO tenants on Kubernetes. diff --git a/source/index.rst b/source/index.rst index edde2fe0..96e20eab 100644 --- a/source/index.rst +++ b/source/index.rst @@ -104,6 +104,7 @@ without validating their usage do so at their own risk. /reference/minio-mc /reference/minio-mc-admin /reference/minio-server/minio-server + /reference/kubectl-minio-plugin .. cond:: linux or macos or windows diff --git a/source/operations/deploy-manage-tenants.rst b/source/operations/deploy-manage-tenants.rst index 77343709..7bba9fd3 100644 --- a/source/operations/deploy-manage-tenants.rst +++ b/source/operations/deploy-manage-tenants.rst @@ -25,9 +25,10 @@ STUB - to be filled in :titlesonly: :hidden: - /operations/install-deploy-manage/deploy-minio-tenant.rst - /operations/install-deploy-manage/modify-minio-tenant.rst - /operations/install-deploy-manage/upgrade-minio-tenant.rst - /operations/install-deploy-manage/expand-minio-tenant.rst - /operations/install-deploy-manage/delete-minio-tenant.rst - /operations/install-deploy-manage/multi-site-replication.rst \ No newline at end of file + /operations/install-deploy-manage/deploy-minio-tenant + /operations/install-deploy-manage/modify-minio-tenant + /operations/install-deploy-manage/upgrade-minio-tenant + /operations/install-deploy-manage/expand-minio-tenant + /operations/install-deploy-manage/delete-minio-tenant + /operations/install-deploy-manage/multi-site-replication + /operations/install-deploy-manage/minio-operator-console \ No newline at end of file diff --git a/source/operations/install-deploy-manage/deploy-minio-tenant.rst b/source/operations/install-deploy-manage/deploy-minio-tenant.rst index d061325b..7b0bd924 100644 --- a/source/operations/install-deploy-manage/deploy-minio-tenant.rst +++ b/source/operations/install-deploy-manage/deploy-minio-tenant.rst @@ -1,5 +1,7 @@ .. _minio-k8s-deploy-minio-tenant: +.. _deploy-minio-tenant: + .. The following label handles links from content to distributed MinIO in K8s context .. _deploy-minio-distributed: diff --git a/source/operations/install-deploy-manage/minio-operator-console.rst b/source/operations/install-deploy-manage/minio-operator-console.rst new file mode 100644 index 00000000..0b00718a --- /dev/null +++ b/source/operations/install-deploy-manage/minio-operator-console.rst @@ -0,0 +1,7 @@ +.. _minio-operator-console: + +====================== +MinIO Operator Console +====================== + +stub \ No newline at end of file diff --git a/source/operations/manage-existing-deployments.rst b/source/operations/manage-existing-deployments.rst index bfe75be8..c407514a 100644 --- a/source/operations/manage-existing-deployments.rst +++ b/source/operations/manage-existing-deployments.rst @@ -27,4 +27,4 @@ Decommission /operations/install-deploy-manage/expand-minio-deployment /operations/install-deploy-manage/upgrade-minio-deployment - /operations/install-deploy-manage/decommission-server-pool \ No newline at end of file + /operations/install-deploy-manage/decommission-server-pool diff --git a/source/reference/kubectl-minio-plugin.rst b/source/reference/kubectl-minio-plugin.rst new file mode 100644 index 00000000..c48bd128 --- /dev/null +++ b/source/reference/kubectl-minio-plugin.rst @@ -0,0 +1,100 @@ +:orphan: + +.. _minio-kubectl-plugin: + +======================= +MinIO Kubernetes Plugin +======================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +Overview +-------- + +.. admonition:: Current Stable Version is |operator-version-stable| + :class: note + + This reference documentation reflects |operator-version-stable| of the + MinIO Kubernetes Operator and :mc:`kubectl minio` plugin. + +The :mc:`kubectl minio` plugin brings native support for deploying MinIO tenants to Kubernetes clusters using the ``kubectl`` CLI. +Use :mc:`kubectl minio` to deploy a MinIO tenant with little to no interaction with ``YAML`` configuration files. + +.. image:: /images/minio-k8s.svg + :align: center + :width: 90% + :class: no-scaled-link + :alt: Kubernetes Orchestration with the MinIO Operator facilitates automated deployment of MinIO clusters. + +Installing :mc:`kubectl minio` implies installing the +:minio-git:`MinIO Kubernetes Operator `. + +.. _minio-plugin-installation: + +.. mc:: kubectl minio + +Installation +------------ + +The MinIO Kubernetes Plugin requires Kubernetes 1.19.0 or later. + +The following code downloads the latest stable version |operator-version-stable| of the MinIO Kubernetes Plugin and installs it to the system ``$PATH``. + + +.. tab-set:: + + .. tab-item:: krew + + This procedure uses the Kubernetes krew plugin manager for installing the MinIO Kubernetes Operator and Plugin. + + See the ``krew`` `installation documentation `__ for specific instructions. + + .. code-block:: shell + :class: copyable + + kubectl krew update + kubectl krew install minio + + .. tab-item:: shell + + .. code-block:: shell + :substitutions: + :class: copyable + + wget https://github.com/minio/operator/releases/download/v|operator-version-stable|/kubectl-minio_|operator-version-stable|_linux_amd64 -O kubectl-minio + chmod +x kubectl-minio + mv kubectl-minio /usr/local/bin/ + +You can access the plugin using the :mc:`kubectl minio` command. Run +the following command to verify installation of the plugin: + +.. code-block:: shell + :class: copyable + + kubectl minio version + + +Subcommands +----------- + +:mc:`kubectl minio` has the following subcommands: + +- :mc:`~kubectl minio init` +- :mc:`~kubectl minio proxy` +- :mc:`~kubectl minio tenant` +- :mc:`~kubectl minio delete` +- :mc:`~kubectl minio version` + +.. toctree:: + :titlesonly: + :hidden: + + /reference/kubectl-minio-plugin/kubectl-minio-init + /reference/kubectl-minio-plugin/kubectl-minio-proxy + /reference/kubectl-minio-plugin/kubectl-minio-tenant + /reference/kubectl-minio-plugin/kubectl-minio-delete + /reference/kubectl-minio-plugin/kubectl-minio-version diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-delete.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-delete.rst new file mode 100644 index 00000000..bd8d8597 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-delete.rst @@ -0,0 +1,69 @@ + +.. _kubectl-minio-delete: + +======================== +``kubectl minio delete`` +======================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio delete + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-delete-desc + +Deletes the MinIO Operator along with all associated resources, including all MinIO Tenant instances in the :mc-cmd:`watched namespace `. + +.. end-kubectl-minio-delete-desc + +.. warning:: + + If the underlying Persistent Volumes (``PV``) were created with a reclaim policy of ``recycle`` or ``delete``, deleting the MinIO Tenant results in complete loss of all objects stored on the tenant. + + Ensure you have performed all due diligence in confirming the safety of any data on each Operator-managed MinIO Tenant prior to deletion. + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example deletes a the MinIO Operator in the ``minio-operator`` namesapce and all its tenants: + + .. code-block:: shell + :class: copyable + + kubectl minio delete --namespace minio-operator + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio delete \ + --namespace + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: --namespace + :required: + + The namespace of the operator to delete. + + Defaults to ``minio-operator``. + diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-init.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-init.rst new file mode 100644 index 00000000..5f955f6e --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-init.rst @@ -0,0 +1,150 @@ + +.. _kubectl-minio-init: + +========================= +``kubectl minio init`` +========================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio init + +Description +----------- + +.. start-kubectl-minio-init-desc + +The :mc:`kubectl minio init` command initializes the MinIO Operator. +:mc:`kubectl minio init` requires the operator for core functionality. + +.. end-kubectl-minio-init-desc + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following command initializes a new MinIO Operator deployment using operator v4.4.22, on the ``minio-operator`` namespace, using the cluster domain of ``cluster.local`` and watching the default namespace.: + + .. code-block:: shell + :class: copyable + + kubectl minio init \ + --image=minio/operator:v4.4.22 \ + --namespace=minio-operator \ + --cluster-domain=cluster.local \ + --namespace-to-watch=default \ + --image-pull-secret= + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + :class: copyable + + kubectl minio init \ + [--cluster-domain] \ + [--console-image] \ + [--default-console-image] \ + [--default-kes-image] \ + [--default-minio-image] \ + [--image] \ + [--image-pull-secret] \ + [--namespace] \ + [--namespace-to-watch] \ + [--output] \ + [--prometheus-name] \ + [--prometheus-namespace] + +Flags +----- + +.. + Default values update frequently and can be found in the following files: + https://github.com/minio/operator/blob/master/kubectl-minio/cmd/init.go + https://github.com/minio/operator/blob/master/kubectl-minio/cmd/helpers/constants.go + + For minio/console, run ``kubectl minio init -o | grep minio/console`` + +The command supports the following flags: + +.. mc-cmd:: --cluster-domain + :optional: + + The domain name to use when configuring the DNS hostname of the operator. + Defaults to ``cluster.local``. + +.. mc-cmd:: --console-image + :optional: + + The image to use when deploying the :minio-git:`MinIO Console ` in Operator mode, where administrators can create and manage MinIO tenants using a Graphical User Interface. + Defaults to ``minio/console:v0.17.3``. + +.. mc-cmd:: --default-console-image + :optional: + + The default :minio-git:`MinIO Console ` image to use when creating a new MinIO tenant. + Defaults to ``minio/console:v0.17.3``. + +.. mc-cmd:: --default-kes-image + :optional: + + The default :minio-git:`kes ` image to use when creating a new MinIO tenant. + Defaults to ``minio/kes:v0.18.0``. + +.. mc-cmd:: --default-minio-image + :optional: + + The default :minio-git:`minio ` image to use when creating a new MinIO tenant. + Defaults to ``minio/minio:RELEASE.2022-05-26T05-48-41Z``. + +.. mc-cmd:: --image + :optional: + + The image to use for deploying the operator. + Defaults to the :minio-git:`latest release of the operator `. + +.. mc-cmd:: --image-pull-secret + :optional: + + Secret key for use with pulling the :mc-cmd:`~kubectl minio init --image`. + + The MinIO-hosted ``minio/k8s-operator`` image is *not* password protected. + This option is only required for non-MinIO image sources which are password protected. + +.. mc-cmd:: --namespace + :optional: + + The namespace into which to deploy the operator. + Defaults to ``minio-operator``. + +.. mc-cmd:: --namespace-to-watch + :optional: + + The namespace which the operator watches for MinIO tenants. + Defaults to ``""`` for *all namespaces*. + +.. mc-cmd:: --output + :optional: + + Performs a dry run and outputs the generated YAML to ``STDOUT``. + Use this option to customize the YAML and apply it manually using ``kubectl apply -f ``. + +.. mc-cmd:: --prometheus-name + :optional: + + The name of the Prometheus service managed by the Prometheus Operator. + Defaults to ``PROMETHEUS_NAME`` + +.. mc-cmd:: --prometheus-namespace + :optional: + + The namespace into which to deploy Prometheus. + Defaults to ``PROMETHEUS_NAMESPACE`` \ No newline at end of file diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-proxy.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-proxy.rst new file mode 100644 index 00000000..2b96cf21 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-proxy.rst @@ -0,0 +1,72 @@ + +.. _kubectl-minio-proxy: + +======================= +``kubectl minio proxy`` +======================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio proxy + +Description +----------- + +.. start-kubectl-minio-proxy-desc + +:mc-cmd:`kubectl minio proxy` creates a temporary proxy to forward traffic from the local host machine to the MinIO Operator Console. +The :ref:`Operator Console ` provides a rich user interface for :ref:`deploying and managing MinIO Tenants `. + +This command is an alternative to configuring `Ingress `__ to grant access to the Operator Console pods. + +.. end-kubectl-minio-proxy-desc + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following command creates proxy to use to access the operator graphical user interface for the ``myminio`` namespace: + + .. code-block:: shell + :class: copyable + + kubectl minio proxy --namespace myminio + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + :class: copyable + + kubectl minio init \ + [--namespace] + +Flags +----- + +.. + Default values update frequently and can be found in the following files: + https://github.com/minio/operator/blob/master/kubectl-minio/cmd/init.go + https://github.com/minio/operator/blob/master/kubectl-minio/cmd/helpers/constants.go + + For minio/console, run ``kubectl minio init -o | grep minio/console`` + +The command supports the following flags: + +.. mc-cmd:: --namespace + :optional: + + The namespace for which to access the operator. + Defaults to ``minio-operator``. diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst new file mode 100644 index 00000000..7eed816c --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-create.rst @@ -0,0 +1,191 @@ + +.. _kubectl-minio-tenant-create: + +=============================== +``kubectl minio tenant create`` +=============================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant create + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-create-desc + +:mc-cmd:`kubectl minio tenant create` adds a new MinIO tenant and associated resources to a Kubernetes cluster. +The :ref:`Operator Console ` provides a rich user interface for :ref:`deploying and managing MinIO Tenants `. + +:mc-cmd:`~kubectl minio tenant create` always uses the latest stable version of the :github:`MinIO Server ` and :github:`MinIO Console `. + +.. end-kubectl-minio-tenant-create-desc + +On success, the command returns the following: + +- The administrative username and password for the Tenant. + + .. important:: + + Store these credentials in a secure location, such as a password protected key manager. + MinIO does *not* show these credentials again. + +- The Service created for connecting to the MinIO Console. + The Console supports administrative operations on the Tenant, such as configuring Identity and Access Management (IAM) and bucket configurations. + +- The Service created for connecting to the MinIO Tenant. + Applications should use this service for performing operations against the MinIO Tenant. + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example creates a MinIO Tenant in the namespace ``minio-tenant-1`` consisting of 4 MinIO servers with 8 drives each and a total capacity of 32Ti. + + .. code-block:: shell + :class: copyable + + kubectl minio tenant create \ + minio-tenant-1 \ + --servers 4 \ + --volumes 8 \ + --capacity 32Ti \ + --namespace minio-tenant-1 \ + --storage-class local-storage + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant create \ + TENANT_NAME \ + --capacity \ + --servers \ + --volumes \ + [--enable-host-sharing] \ + [--image] \ + [--image-pull-secret] \ + [--kes-config] \ + [--namespace] \ + [--output] \ + [--storage-class] + + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: TENANT_NAME + :required: + + The name of the MinIO tenant which the command creates. + The name *must* be unique in the :mc-cmd:`~kubectl minio tenant create --namespace`. + +.. mc-cmd:: --capacity + :required: + + Total raw capacity of the MinIO tenant, such as 16Ti. + Include a string that is a number and a standard storage capacity unit. + + The total capacity of the MinIO tenant. :mc:`kubectl minio` divides the capacity by the number of :mc-cmd:`~kubectl minio tenant create --volumes` to determine the amount of ``resources.requests.storage`` to set for each Persistent Volume Claim (``PVC``). + + If no Persistent Volumes (``PV``) can satisfy the requested storage, :mc:`kubectl minio tenant create` hangs and waits until the required storage exists. + +.. mc-cmd:: --servers + :required: + + The number of ``minio`` servers to deploy on the Kubernetes cluster. + + Ensure that the specified number of :mc-cmd:`~kubectl minio tenant create --servers` does *not* exceed the number of nodes in the Kubernetes cluster. + +.. mc-cmd:: --volumes + :required: + + Total number of volumes to use in the MinIO tenant. + + :mc-cmd:`kubectl minio tenant create` generates one :kube-docs:`Persistent Volume Claim (PVC) ` for each volume. + + The number of volumes affects both the requested storage of each ``PVC`` *and* the number of ``PVC`` to associate to each MinIO Pod in the cluster: + + - The command :mc:`kubectl minio` divides the :mc-cmd:`~kubectl minio tenant create --capacity` by the number of volumes to determine the amount of ``resources.requests.storage`` to set for each ``PVC``. + + - :mc:`kubectl minio` determines the number of ``PVC`` to associate to each ``minio`` server by dividing :mc-cmd:`~kubectl minio tenant create --volumes` by :mc-cmd:`~kubectl minio tenant create --servers`. + + The command generates each ``PVC`` with Pod-specific selectors, such that each Pod only uses ``PV`` that are locally-attached to the node running that Pod. + + If the specified number of volumes exceeds the number of unbound ``PV`` available on the cluster, :mc:`kubectl minio tenant create` hangs and waits until the required ``PV`` exist. + +.. mc-cmd:: --enable-host-sharing + :optional: + + .. important:: + + To be used in testing environments only. + This flag is **not** supported in production environments. + + Disable pod anti-affinity to allow co-location of pods on a single node. + +.. mc-cmd:: --image + :optional: + + MinIO image to use for the tenant. + Defaults to the latest minio release. + +.. mc-cmd:: --image-pull-secret + :optional: + + The image secret to use for pulling MinIO. + +.. mc-cmd:: --kes-config + :optional: + + The name of the Kubernetes Secret which contains the MinIO Key Encryption Service (KES) configuration. + Required for enabling Server Side Encryption of objects (SSE-S3). + + For more, see the `Github documentation `__. + +.. mc-cmd:: --namespace + :optional: + + The namespace in which to create the MinIO Tenant and its associated resources. + + MinIO supports exactly *one* MinIO Tenant per namespace. + Create a unique namespace for each MinIO Tenant deployed into the cluster. + + Defaults to ``minio``. + +.. mc-cmd:: --output + :optional: + + Dry run the command and generate the ``YAML``. + + :mc-cmd:`~kubectl minio tenant create --output` does **not** create the MinIO Tenant. + Use ``kubectl apply -f `` to manually create the MinIO tenant using the generated file. + +.. mc-cmd:: --storage-class + :optional: + + The type of storage to use for this tenant. + + The name of the Kubernetes :kube-docs:`Storage Class ` to use when creating Persistent Volume Claims (``PVC``) for the MinIO Tenant. + The specified :mc-cmd:`~kubectl minio tenant create --storage-class` *must* match the ``storage-class`` of the Persistent Volumes (``PVs``) to which the ``PVCs`` should bind. + + MinIO strongly recommends creating a Storage Class that corresponds to locally-attached volumes on the host machines on which the Tenant deploys. + This ensures each pod can use locally-attached storage for maximum performance and throughput. + See the :ref:`Deploy MinIO Tenant ` tutorial for guidance on creating Storage Classes for supporting the MinIO Tenant. + + Defaults to ``default``. diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst new file mode 100644 index 00000000..c11e68a2 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-delete.rst @@ -0,0 +1,85 @@ + +.. _kubectl-minio-tenant-delete: + +=============================== +``kubectl minio tenant delete`` +=============================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant delete + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-delete-desc + +Deletes the MinIO Tenant and its associated resources. + +The delete behavior of each Persistent Volume Claims (``PVC``) generated by the Tenant depends on the :kube-docs:`Reclaim Policy ` of its bound Persistent Volume (``PV``): + +- For ``recycle`` or ``delete`` policies, the command deletes the ``PVC``. + +- For ``retain``, the command retains the ``PVC``. + +Deletion of the underlying ``PV``, whether automatic or manual, results in the loss of any objects stored on the MinIO Tenant. +Perform all due diligence in ensuring the safety of stored data *prior* to deleting the tenant. + +.. end-kubectl-minio-tenant-delete-desc + + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example creates a MinIO Tenant in the namespace ``minio-tenant-1`` consisting of 4 MinIO servers with 8 drives each and a total capacity of 32Ti. + + .. code-block:: shell + :class: copyable + + kubectl minio tenant delete \ + minio-tenant-1 \ + --namespace minio-tenant-1 + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant delete \ + TENANT_NAME \ + --force \ + --namespace + + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: TENANT_NAME + :required: + + The name of the MinIO tenant which the command deletes. + +.. mc-cmd:: --force + :optional: + + Forces the deletion of the tenant. + +.. mc-cmd:: --namespace + :required: + + The namespace scope to access. \ No newline at end of file diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst new file mode 100644 index 00000000..1d8770a1 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-expand.rst @@ -0,0 +1,131 @@ + +.. _kubectl-minio-tenant-expand: + +=============================== +``kubectl minio tenant expand`` +=============================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant expand + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-expand-desc + +Extends the total capacity of a MinIO Tenant by adding a new Pool. +A Pool consists of an independent set of pods running the MinIO Server and MinIO Console. +The new pool uses the same MinIO Server and Console Docker images as the existing Tenant pool(s). + +.. end-kubectl-minio-tenant-expand-desc + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example expands a MinIO Tenant with a Pool consisting of 4 MinIO servers with 8 drives each and a total additional capacity of 32Ti: + + .. code-block:: shell + :class: copyable + + kubectl minio tenant expand \ + minio-tenant-1 \ + --servers 4 \ + --volumes 8 \ + --capacity 32Ti \ + --namespace minio-tenant-1 \ + --storage-class local-storage + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant expand \ + TENANT_NAME \ + --capacity \ + --servers \ + --volumes \ + --namespace \ + [--output] \ + [--storage-class] + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: TENANT_NAME + :required: + + The name of the MinIO tenant to expand. + +.. mc-cmd:: --capacity + :optional: + + The total capacity of the new MinIO Tenant Pool. :mc:`kubectl minio` divides the capacity by the number of :mc-cmd:`~kubectl minio tenant expand --volumes` to determine the + amount of ``resources.requests.storage`` to set for each Persistent Volume Claim (``PVC``). + + If the existing Persistent Volumes (``PV``) can satisfy the requested storage, :mc:`kubectl minio tenant expand` hangs and waits until the required storage exists. + +.. mc-cmd:: --servers + :required: + + The number of ``minio`` servers to deploy in the new MinIO Tenant Pool. + + Ensure that the specified number of :mc-cmd:`~kubectl minio tenant expand --servers` does *not* exceed the number of available nodes in the Kubernetes cluster. + +.. mc-cmd:: --volumes + :required: + + The number of volumes in the new MinIO Tenant Pool. + :mc:`kubectl minio` generates one Persistent Volume Claim (``PVC``) for each volume. + + The number of volumes affects both the requested storage of each ``PVC`` *and* the number of ``PVC`` to associate to each MinIO Pod in the new Pool: + + - The command :mc:`kubectl minio` divides the :mc-cmd:`~kubectl minio tenant expand --capacity` by the number of volumes to determine the amount of ``resources.requests.storage`` to set for each ``PVC``. + + - :mc:`kubectl minio` determines the number of ``PVC`` to associate to each ``minio`` server by dividing :mc-cmd:`~kubectl minio tenant expand --volumes` by :mc-cmd:`~kubectl minio tenant expand --servers`. + + The command generates each ``PVC`` with Pod-specific selectors, such that each Pod only uses ``PV`` that are locally-attached to the node running that Pod. + + If the specified number of volumes exceeds the number of unbound ``PV`` available in the cluster, :mc:`kubectl minio tenant expand` hangs and waits until the required ``PV`` exist. + +.. mc-cmd:: --namespace + :optional: + + The namespace in which to create the new MinIO Tenant Pool. + The namespace *must* match that of the MinIO Tenant being extended. + + Defaults to ``minio``. + +.. mc-cmd:: --output + :optional: + + Outputs the generated ``YAML`` objects to ``STDOUT`` for further customization. + + :mc-cmd:`~kubectl minio tenant expand --output` does **not** create the new MinIO Tenant Pool. + Use ``kubectl apply -f `` to manually create the MinIO tenant using the generated file. + +.. mc-cmd:: --storage-class + :optional: + + The name of the Kubernetes :kube-docs:`Storage Class ` to use when creating Persistent Volume Claims (``PVC``) for the new MinIO Tenant Pool. + The specified :mc-cmd:`~kubectl minio tenant expand --storage-class` *must* match the ``storage-class`` of the Persistent Volumes (``PVs``) to which the ``PVCs`` should bind. + + MinIO strongly recommends creating a Storage Class that corresponds to locally-attached volumes on the host machines on which the Tenant deploys. + This ensures each pod can use locally-attached storage for maximum performance and throughput. + See the :ref:`Deploy MinIO Tenant ` tutorial for guidance on creating Storage Classes for supporting the MinIO Tenant. \ No newline at end of file diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst new file mode 100644 index 00000000..e06b761a --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-info.rst @@ -0,0 +1,70 @@ + +.. _kubectl-minio-tenant-info: + +============================= +``kubectl minio tenant info`` +============================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant info + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-info-desc + +Displays information on a MinIO Tenant, including but not limited to: + +- The total capacity of the Tenant +- The version of MinIO server and MinIO Console running on the Tenant +- The configuration of each Pool in the Tenant. + +.. end-kubectl-minio-tenant-info-desc + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example retrieves the information of the MinIO Tenant ``minio-tenant-1`` in the namespace ``minio-namespace-1``. + + .. code-block:: shell + :class: copyable + + kubectl minio tenant info \ + minio-tenant-1 \ + --namespace minio-namespace-1 + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant info \ + TENANT_NAME \ + --namespace + + +Flags +----- + +The command supports the following flag: + +.. mc-cmd:: --namespace + :optional: + + The namespace in which to look for the MinIO Tenant. + + Defaults to ``minio``. diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst new file mode 100644 index 00000000..6aca9a93 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-list.rst @@ -0,0 +1,45 @@ + +.. _kubectl-minio-tenant-list: + +============================= +``kubectl minio tenant list`` +============================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant list + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-list-desc + +Displays a list of all of the tenants managed by the MinIO Operator. + +.. end-kubectl-minio-tenant-list-desc + +The output includes information for each tenant similar to the following: + +- Tenant name +- Tenant's namespace +- Total capacity +- Current status +- MinIO version + +Syntax +------ + +The command has the following syntax: + +.. code-block:: shell + :class: copyable + + kubectl minio tenant list diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst new file mode 100644 index 00000000..26b2edf7 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-report.rst @@ -0,0 +1,78 @@ + +.. _kubectl-minio-tenant-report: + +=============================== +``kubectl minio tenant report`` +=============================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant report + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-report-desc + +Saves pod logs from the MinIO Tenant and its associated resources. + +.. end-kubectl-minio-tenant-report-desc + +The logs output to a zip archive file. + +When unzipped, the contents include three files for each pool: + +- JSON formatted file listing events +- JSON formatted file listing the status +- Human readable log file + +The folder also contains the yaml file for the tenant in ``TENANT_NAME.yaml`` + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example creates a MinIO Tenant in the namespace ``minio-tenant-1`` consisting of 4 MinIO servers with 8 drives each and a total capacity of 32Ti. + + .. code-block:: shell + :class: copyable + + kubectl minio tenant report \ + TENANT1 \ + --namespace minio-namespace + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant report \ + TENANT_NAME \ + --namespace + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: TENANT_NAME + :required: + + The name of the MinIO tenant to expand. + +.. mc-cmd:: --namespace + :optional: + + The namespace in which to look for the MinIO Tenant. diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst new file mode 100644 index 00000000..f5a09772 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade.rst @@ -0,0 +1,90 @@ + +.. _kubectl-minio-tenant-upgrade: + +================================ +``kubectl minio tenant upgrade`` +================================ + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant upgrade + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-tenant-upgrade-desc + +Upgrades the ``minio`` server container image used by the MinIO Tenant. + +.. end-kubectl-minio-tenant-upgrade-desc + +.. important:: + + MinIO upgrades the image used by all pods in the Tenant at once. + Applications typically transparently retry operations against the MinIO Tenant, such that there should be no perceived downtime. + + Test all upgrades in a staging environment, such as a separate MinIO Tenant, before applying to production tenants. + +Syntax +------ + +.. tab-set:: + + .. tab-item:: EXAMPLE + + The following example expands a MinIO Tenant with a Pool consisting of 4 MinIO servers with 8 drives each and a total additional capacity of 32Ti: + + .. code-block:: shell + :class: copyable + :substitutions: + + kubectl minio tenant upgrade \ + minio-tenant-1 \ + --image quay.io/minio/minio:|minio-latest| + + .. tab-item:: SYNTAX + + The command has the following syntax: + + .. code-block:: shell + + kubectl minio tenant upgrade + TENANT_NAME \ + --image \ + --namespace \ + [--output] + +Flags +----- + +The command supports the following flags: + +.. mc-cmd:: TENANT_NAME + :required: + + The name of the MinIO tenant to upgrade. + +.. mc-cmd:: --image + :required: + + The container image to use for upgrading the MinIO Tenant. + +.. mc-cmd:: --namespace + :optional: + + The namespace in which to look for the MinIO Tenant. + + Defaults to ``minio``. + +.. mc-cmd:: --output + :optional: + + Displays the generated ``YAML`` objects, but does not upgrade the tenant. diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-tenant.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant.rst new file mode 100644 index 00000000..2f922576 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-tenant.rst @@ -0,0 +1,52 @@ + +.. _kubectl-minio-tenant: + +======================== +``kubectl minio tenant`` +======================== + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio tenant + +Description +----------- + +.. start-kubectl-minio-tenant-desc + +:mc-cmd:`kubectl minio tenant` creates and manages tenants for the MinIO Operator. + +.. end-kubectl-minio-tenant-desc + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +Subcommands +----------- + +The :mc-cmd:`kubectl minio tenant` command includes the following subcommands: + +- :mc-cmd:`~kubectl minio tenant create` +- :mc-cmd:`~kubectl minio tenant list` +- :mc-cmd:`~kubectl minio tenant info` +- :mc-cmd:`~kubectl minio tenant expand` +- :mc-cmd:`~kubectl minio tenant report` +- :mc-cmd:`~kubectl minio tenant upgrade` +- :mc-cmd:`~kubectl minio tenant delete` + +.. toctree:: + :titlesonly: + :hidden: + + /reference/kubectl-minio-plugin/kubectl-minio-tenant-create + /reference/kubectl-minio-plugin/kubectl-minio-tenant-delete + /reference/kubectl-minio-plugin/kubectl-minio-tenant-expand + /reference/kubectl-minio-plugin/kubectl-minio-tenant-info + /reference/kubectl-minio-plugin/kubectl-minio-tenant-list + /reference/kubectl-minio-plugin/kubectl-minio-tenant-report + /reference/kubectl-minio-plugin/kubectl-minio-tenant-upgrade \ No newline at end of file diff --git a/source/reference/kubectl-minio-plugin/kubectl-minio-version.rst b/source/reference/kubectl-minio-plugin/kubectl-minio-version.rst new file mode 100644 index 00000000..d3706d06 --- /dev/null +++ b/source/reference/kubectl-minio-plugin/kubectl-minio-version.rst @@ -0,0 +1,37 @@ +.. _kubectl-minio-version: + +========================= +``kubectl minio version`` +========================= + +.. default-domain:: minio + +.. contents:: Table of Contents + :local: + :depth: 2 + +.. mc:: kubectl minio version + + +Description +----------- + +.. include:: /includes/facts-kubectl-plugin.rst + :start-after: start-kubectl-minio-requires-operator-desc + :end-before: end-kubectl-minio-requires-operator-desc + +.. start-kubectl-minio-version-desc + +Displays the version number for the currently installed ``kubectl minio`` plugin. + +.. end-kubectl-minio-version-desc + +Syntax +------ + +The command has the following syntax: + +.. code-block:: shell + :class: copyable + + kubectl minio version diff --git a/source/reference/minio-mc/mc-support-diagnostics.rst b/source/reference/minio-mc/mc-support-diagnostics.rst index 5b51abe3..8d4ec43b 100644 --- a/source/reference/minio-mc/mc-support-diagnostics.rst +++ b/source/reference/minio-mc/mc-support-diagnostics.rst @@ -10,8 +10,6 @@ .. mc:: mc support diagnostics -.. mc:: mc support diag - Description ----------- @@ -31,7 +29,7 @@ Requests that exceed this limit on a given host return a ``503`` error after ~10 Use the :mc-cmd:`mc support diagnostics` command to trigger the diagnostic test. For clusters registered with SUBNET, the command uploads the results as part of SUBNET Health reports. -For airgapped or firewalled environments, or other environments that prevent direct network access from the deployment, you can save the report locally with the :mc-cmd:`~mc support diag --airgap` flag. +For airgapped or firewalled environments, or other environments that prevent direct network access from the deployment, you can save the report locally with the :mc-cmd:`~mc support diagnostics --airgap` flag. After saving, you can then upload the results of the test to SUBNET manually. .. include:: /includes/common-mc-support.rst