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:

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
  1. Expose MinIO, using the Istio ingress controller. Create a file named minio-vs.yaml, with the following contents:

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
  1. Apply the configuration using:kubectl apply -f minio-vs.yaml

  2. Access MinIO.

  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}")
  1. You can use port-forwarding to access your application locally.

kubectl port-forward $MINIO_POD_NAME 9000:9000 --namespace minio-system
  1. Open your browser and navigate to http://127.0.0.1:9000/minio/ to access MinIO.

Per Namespace Setup

Access to MinIO depends on the storage initializer. This needs to be configured per-namespace for batch jobs. The secret suggested there may also be used for models.

Additional Resources

Last updated