---
title: 'Addon: MinIO'
description: Canonical makes open source secure, reliable and easy to use, providing
  support for Ubuntu and a portfolio of enterprise-grade technologies. Founded in
  2004, Canonical operates globally with team members in over 80 countries.
url: https://canonical.com/microk8s/docs/addon-minio?format=md
---

*Submit*

# Addon: MinIO

**Compatibility**:
**Source**: See **[MinIO documentation](https://min.io/docs/minio/kubernetes/upstream/index.html)**

[MinIO](https://min.io/) is a well-known and established project in the CNCF ecosystem that provides cloud-agnostic S3-compatible object storage. It is free, open-source and well-trusted by multiple organizations.

The `minio` addon can be used to deploy MinIO on a MicroK8s cluster using [minio-operator](https://github.com/minio/operator). Optionally, this addon deploys a single MinIO tenant so that you can get started using it out of the box. The default tenant can be configured (storage capacity, number of volumes, security) using command-line arguments when enabling the addon (see below).

The MinIO addon can use the simple hostpath storage for single-node clusters, or any storage class you decide for multi-node clusters.

## [Enable](https://canonical.com/microk8s/docs/addon-minio?format=md#p-36961-enable)

For single-node development clusters, enable the MinIO addon with a single command:

```
sudo microk8s enable minio
```

For a more advanced use-case (see `sudo microk8s enable minio:-h` for a list of all supported arguments), that deploys a MinIO tenant with 300GB storage capacity using the `ceph-xfs` storage class:

```
sudo microk8s enable minio -c 300Gi -s ceph-xfs
```

Alternatively, you can disable the creation of a default tenant and only deploy the MinIO operator with:

```
sudo microk8s enable minio -k
```

## [Access S3 endpoint and MinIO console](https://canonical.com/microk8s/docs/addon-minio?format=md#p-36961-access-s3-endpoint-and-minio-console)

After deployment, you can access the MinIO console through a web browser, or through the [MinIO client](https://min.io/docs/minio/linux/reference/minio-mc.html). You can access the MinIO endpoint through the `svc/minio` endpoint:

```
microk8s kubectl -n minio-operator get svc minio
```

The root user and password created for the MinIO tenant can be seen in the `$TENANT_NAME-env-configuration` secret:

```
TENANT_NAME="microk8s"
# The credentials are in the config.env field.
# They are in base64 and they need to be decoded.
microk8s kubectl get -n minio-operator secret $TENANT_NAME-env-configuration -o yaml

# Fetch and decode the credentials:
microk8s kubectl get -n minio-operator secret $TENANT_NAME-env-configuration -o jsonpath='{.data.config\.env}' | base64 -d
# Expected similar output:
# export MINIO_ROOT_USER="GYBCXGDRPSV1R08QX1DF"
# export MINIO_ROOT_PASSWORD="2n3MUksjHavRy2HmyvuE9JtnUsMI2YV2hxV4QF5X"
```

The Microk8s MinIO addon also creates a secondary user. You can get its credentials through the following:

```
TENANT_NAME="microk8s"
# The credentials are in the CONSOLE_ACCESS_KEY (user) and CONSOLE_SECRET_KEY (password) fields.
# They are in base64 and they need to be decoded.
microk8s kubectl get -n minio-operator secret $TENANT_NAME-user-1 -o yaml
```

## [Using the `mc` client](https://canonical.com/microk8s/docs/addon-minio?format=md#p-36961-using-the-mc-client)

You can use the [MinIO client](https://min.io/docs/minio/linux/reference/minio-mc.html) to connect to the MinIO tenant. The same credentials described above can be used. Below is a script which creates an alias for the deployed MinIO tenant using the root user credentials:

```
# Get HOST and PORT.
HOST="$(microk8s kubectl get -n minio-operator service minio -o jsonpath='{.spec.clusterIP}')"
PORT="$(microk8s kubectl get -n minio-operator service minio -o jsonpath='{.spec.ports[0].port}')"

# Fetch, decode, and load the root user credentials into the environment:
TENANT_NAME="microk8s"
source <(microk8s kubectl get -n minio-operator secret $TENANT_NAME-env-configuration -o jsonpath='{.data.config\.env}' | base64 -d)
mc alias set $TENANT_NAME http://$HOST:$PORT $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
```

Alternatively, you use the other MinIO registered user credentials:

```
TENANT_NAME="microk8s"
MINIO_USER="$(microk8s kubectl get -n minio-operator secret $TENANT_NAME-user-1 -o jsonpath='{.data.CONSOLE_ACCESS_KEY}' | base64 -d)"
MINIO_PASSWORD="$(microk8s kubectl get -n minio-operator secret $TENANT_NAME-user-1 -o jsonpath='{.data.CONSOLE_SECRET_KEY}' | base64 -d)"
mc alias set $TENANT_NAME-user-1 http://$HOST:$PORT $MINIO_USER $MINIO_PASSWORD
```

The MinIO client can be used for second-day operations, like managing replication, or rebalancing. For example, to list all registered MinIO tenants:

```
mc alias list
```

which produces output similar to:

```
microk8s
  URL       : http://10.152.183.201:80
  AccessKey : 9fFwFQq5xMIzW8wlPPeP
  SecretKey : DuZqdnfh1cKJahXwb5z9qy7F5Eo0sObWYvSW0ARh
  API       : s3v4
  Path      : auto
  Src       : /home/ubuntu/.mc/config.json
```

Details about the MinIO tenant can be retrieved through the following command:

```
mc admin info microk8s
```

which produces output similar to:

```
●  10.152.183.201
   Uptime: 23 minutes
   Version: 2024-08-03T04:33:23Z
   Network: 1/1 OK
   Drives: 1/1 OK
   Pool: 1

┌──────┬───────────────────────┬─────────────────────┬──────────────┐
│ Pool │ Drives Usage          │ Erasure stripe size │ Erasure sets │
│ 1st  │ 25.8% (total: 90 GiB) │ 1                   │ 1            │
└──────┴───────────────────────┴─────────────────────┴──────────────┘

1 drive online, 0 drives offline, EC:0
```

Last updated 4 months ago. [Help improve this document in the forum](https://discuss.kubernetes.io/t/addon-minio/22132).
