# Object Storage

## Installing MinIO

1. Install MinIO in the namespace `minio-system` with the user as `admin@seldon.io`. Ensure to replace `<password>` with a password of your choice in the following commands:

```bash
MINIOUSER=<admin@seldon.io>
MINIOPASSWORD=<password>

kubectl create ns minio-system
helm repo add minio https://helm.min.io/
helm upgrade --install minio minio/minio \
    --set accessKey=${MINIOUSER} \
    --set secretKey=${MINIOPASSWORD} \
    --namespace minio-system
```

2. Expose MinIO, using the Istio ingress controller. Create a file named `minio-vs.yaml`, with the following contents:

```yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: minio
  namespace: minio-system
spec:
  gateways:
    - istio-system/seldon-gateway
  hosts:
    - '*'
  http:
    - match:
        - uri:
            prefix: /minio/
      route:
        - destination:
            host: minio
            port:
              number: 9000
```

3. Apply the configuration using:`kubectl apply -f minio-vs.yaml`
4. Access MinIO.

{% tabs %}
{% tab title="Port forwarding" %}

1. Get the Pod that is running MinIO in the cluster and save it as `$MINIO_POD_NAME.`

```
export MINIO_POD_NAME=$(kubectl get pods --namespace minio-system -l "app.kubernetes.io/name=minio,app.kubernetes.io/instance=minio" -o jsonpath="{.items[0].metadata.name}")
```

2. You can use port-forwarding to access your application locally.

```
kubectl port-forward $MINIO_POD_NAME 9000:9000 --namespace minio-system
```

3. Open your browser and navigate to `http://127.0.0.1:9000/minio/` to access MinIO.
   {% endtab %}

{% tab title="Static IP address" %}

1. Find the IP address of the Seldon Enterprise Platform instance running with Istio:

```
ISTIO_INGRESS=$(kubectl get svc -n istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
ISTIO_INGRESS+=$(kubectl get svc -n istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')

echo "MinIO: http://$ISTIO_INGRESS/minio/"

```

2. Open your browser and navigate to `http://$ISTIO_INGRESS/minio/` to access Seldon Enterprise Platform. Where `$ISTIO_INGRESS` is the IP address of Seldon Enterprise Platform.
   {% endtab %}
   {% endtabs %}

## Per Namespace Setup

Access to MinIO depends on the [storage initializer](/seldon-enterprise-platform/operations/storage-initializers.md). This needs to be configured per-namespace for batch jobs. The secret suggested there may also be used for models.

## Additional Resources

* [MinIO Object Storage for Kubernetes](https://min.io/docs/minio/kubernetes/upstream/index.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.seldon.ai/seldon-enterprise-platform/production-environment/minio.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
