Deploy AIStor on Red Hat OpenShift
This page documents the installation and management of AIStor object storage using MinIO’s Red Hat OpenShift-certified operator.
This procedure assumes that the user interacting with the OpenShift cluster has authorization to:
- Install Kubernetes operators and associated resources including CustomResourceDefinitions, Statefulsets, and secrets into new or existing namespaces.
- Perform operations as a user that has broad permissions to create resources within multiple namespaces.
Install the AIStor Operator
This section installs the OpenShift-certified AIStor Operator. You must complete this section before proceeding to deploying AIStor.
As an alternative to the procedure below, you can install the Operator using the OpenShift Operator Hub. Search for ‘MinIO’, select the AIStor operator for installation, then follow the displayed instructions.
-
Retrieve your License File.
Log into SUBNET and select the License button in the Deployments view.
The Account License modal
Save the content of the file in a secure location for use in the next step. Save the value to a secure location for use in a subsequent step.
-
Create the AIStor namespace
Use the
oc
command to create a new project for AIStor:oc new-project aistor
-
Create and apply the SUBNET license secret
Use the following file as a template. Replace the
minio.license
value with the base64-encoded value of your SUBNET license.# license.yaml apiVersion: v1 data: minio.license: <base 64 encoded license here> kind: Secret metadata: name: minio-license type: Opaque
Apply the license to the
aistor
namespace:oc apply -f license.yaml -n aistor
-
Create the Operator manifest and install to the namespace
Use the following file as a template for the operator bundle:
# subscription.yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: minio-object-store-operator spec: channel: stable installPlanApproval: Automatic name: minio-object-store-operator source: certified-operators sourceNamespace: openshift-marketplace startingCSV: minio-object-store-operator.v2025.7.1011319 --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: objectstore-operator-group
Apply the manifest to the
aistor
namespace:oc apply -f subscription.yaml -n aistor
-
Next Steps
You can now deploy AIStor object storage to your Open Shift cluster using the OpenShift UI.
Deploy AIStor using OpenShift
-
Create the project
Use the
oc new-project
command to create a project for the AIStor deployment:oc new-project aistor-primary
-
Create a secret for the storage configuration
AIStor uses a plaintext configuration file for looking up environment variables. Create a Kubernetes secret where the
config.env
key has the list of environments inexport ENVVAR
format.# storage-configuration.yaml apiVersion: v1 kind: Secret metadata: name: storage-configuration type: Opaque stringData: config.env: |- export MINIO_ROOT_USER=aistor-admin export MINIO_ROOT_PASSWORD=REPLACEME123
Modify the file to reflect your desired configuration, then apply the file to the project:
oc apply -f storage-configuration.yaml -n aistor-primary
-
Open the OpenShift UI and navigate to the AIStor Operator
Use your preferred browser to access the UI for your OpenShift installation. Select the AIStor Operator from the list of installed operators
-
Create an AIStor object store resource
You can deploy AIStor using the OpenShift UI or the
oc
CLI tool. -
Monitor the namespace
The AIStor Operator deploys resources to the namespace that include Deployments, ReplicaSets, Services, and Pods. Once all pods deploy successfully, you can access the AIStor services by configuring Routes, Ingress, or similar network controls.
The
minio
service provides access to the S3 API. The-console
suffixed service provides access to the AIStor Console for web access and management. -
Expose access using routes
You can configure OpenShift Routes to expose the
minio
and-console
services to external traffic. The following example route exposes theminio
service for S3 access.kind: Route apiVersion: route.openshift.io/v1 metadata: name: route-object-store-s3-api namespace: aistor-primary annotations: openshift.io/host.generated: 'true' spec: host: openshift-worker-node-01.example.net to: kind: Service name: minio weight: 100 port: targetPort: management tls: termination: passthrough insecureEdgeTerminationPolicy: Redirect wildcardPolicy: None
You can then access the service using the hostname and the
mc alias set
command:mc alias set aistor-primary https://openshift-worker-node-01.example.net USERNAME PASSWORD --insecure