Upgrade AIStor on Kubernetes with Private Registry
This page describes how to upgrade AIStor Helm deployments that use a private container registry but have internet access to helm.min.io for chart updates.
If your deployment uses public registries or is in an airgapped environment, see:
Overview
AIStor Helm upgrades involve updating two components:
- Operator Chart - Controls CustomResourceDefinitions and core operator resources
- Object Store Chart - Deploys and manages the AIStor Object Store instances
When using a private registry, you must copy container images to your registry before deploying the chart updates. This page covers the complete upgrade workflow for private registry deployments.
All AIStor software supports non-disruptive upgrades with zero downtime. In optimal environments, cluster-wide upgrades typically complete in under 500 milliseconds with large clusters (1000+ nodes) completing in less than 5 seconds.
S3 SDKs and applications typically implement retry mechanisms that mitigate the impact of any reduced availability.
Prerequisites
Complete all standard upgrade prerequisites, then prepare the following for your private registry environment:
- Verify you have network access to
helm.min.ioandquay.io - Verify you have credentials and push access to your private container registry
- Ensure your Kubernetes cluster has pull access configured for your private registry
- Verify that image pull secrets exist in the
aistornamespace with valid credentials:If the secret does not exist or credentials have changed, recreate it before upgradingkubectl get secret -n aistor private-repo-pull-secret
Step 1. Copy operator image to private registry
Before upgrading the operator chart, copy the new operator image to your private registry.
-
Copy the operator image.
Use
skopeoor a similar tool to copy the image:skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/operator:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/operator:RELEASE.2025-XX-XXT00-00-00ZReplace:
RELEASE.2025-XX-XXT00-00-00Zwith your target operator versionPRIVATE_REGISTRYwith your registry hostname
Step 2: Upgrade the operator chart
The operator chart provides the core resources for deploying AIStor Object Store onto Kubernetes.
-
Verify the existing installation.
Check the health and status of the operator:
kubectl get all -n aistor -
Update and upgrade the operator.
Update the Helm repository:
helm repo update minioUpgrade the operator chart with your private registry configuration:
helm upgrade -n aistor aistor minio/aistor-objectstore-operator \ --set license="eyJhbGciOiJFUzM4NCIsInR..." \ -f aistor-objectstore-operator-values.yamlReplace the license value with your decoded JWT token from SUBNET.
Ensure your
aistor-objectstore-operator-values.yamlfile contains therepositoriesconfiguration pointing to your private registry. For example:repositories: aistor: hostname: PRIVATE_REGISTRY pathPrefix: aistor/ imagePullSecrets: - name: private-repo-pull-secret minio: hostname: PRIVATE_REGISTRY pathPrefix: minio/ imagePullSecrets: - name: private-repo-pull-secretReplace
PRIVATE_REGISTRYwith the hostname of your private container registry (for example,registry.example.comorregistry.example.com:5000).If you need to override specific image versions, add an
imagessection:images: operator: repository: aistor image: operator:RELEASE.2025-XX-XXT00-00-00Z -
Validate the installation by running the following command:
kubectl get all -n aistorThe output should show running pods similar to the following:
NAME READY STATUS RESTARTS AGE pod/adminjob-operator-cfc97d9f-hjbp5 1/1 Running 0 4m16s pod/object-store-operator-78c9f84b85-kmwlv 1/1 Running 0 4m16s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/object-store-operator ClusterIP 10.43.210.230 <none> 4221/TCP 4m16s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/adminjob-operator 1/1 1 1 4m16s deployment.apps/object-store-operator 1/1 1 1 4m16s NAME DESIRED CURRENT READY AGE replicaset.apps/adminjob-operator-cfc97d9f 1 1 1 4m16s replicaset.apps/object-store-operator-78c9f84b85 1 1 1 4m16s
Step 3: Copy object store images to private registry
Before upgrading the object store chart, copy the required images to your private registry.
-
Copy the core object store images.
Copy the main AIStor images:
skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/minio:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/minio:RELEASE.2025-XX-XXT00-00-00Z skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/minio-sidecar:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/minio-sidecar:RELEASE.2025-XX-XXT00-00-00ZReplace:
RELEASE.2025-XX-XXT00-00-00Zwith your target versionPRIVATE_REGISTRYwith your registry hostname
-
Copy optional images.
If you use additional features, copy those images as well:
# KES (Key Encryption Service) skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/kes:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/kes:RELEASE.2025-XX-XXT00-00-00Z # MinIO Client (mc) skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/mc:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/mc:RELEASE.2025-XX-XXT00-00-00Z # AI Hub (if using AI features) skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/aihub:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/aihub:RELEASE.2025-XX-XXT00-00-00Z # Prompt (if using AI features) skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/prompt:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/prompt:RELEASE.2025-XX-XXT00-00-00Z # WARP (benchmarking tool) skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/warp:RELEASE.2025-XX-XXT00-00-00Z \ docker://PRIVATE_REGISTRY/aistor/warp:RELEASE.2025-XX-XXT00-00-00Z
Step 4: Upgrade the object store chart
The object store chart deploys and manages your AIStor Object Store instances.
-
Verify the existing installation.
Check the health and status of your object store:
kubectl get all -n OBJECT-STORE-NAMESPACEReplace
OBJECT-STORE-NAMESPACEwith your object store’s namespace. -
Update the Helm repository.
Update the Helm repository to get the latest chart version:
helm repo update minio -
Upgrade the object store chart.
Use
helm upgradeto deploy the updated chart:helm upgrade -n OBJECT-STORE-NAMESPACE OBJECT-STORE-NAME minio/aistor-objectstore \ -f aistor-objectstore-values.yamlReplace:
OBJECT-STORE-NAMESPACEwith your object store’s namespaceOBJECT-STORE-NAMEwith your object store’s Helm release nameaistor-objectstore-values.yamlwith the path to your values file
You must pass in your existing chart values file to ensure your customized settings are preserved during the upgrade.
Your values file should already contain the repositories configuration from your initial installation. The Helm chart automatically references images from these repositories. For example:
objectStore:
name: primary-object-store
pools:
- name: pool-0
servers: 8
volumesPerServer: 8
size: 2Ti
services:
minio:
serviceType: NodePort
nodePort: 31000
The operator uses the repositories configuration from the operator values file to determine where to pull images. If you need to override specific image versions in the object store deployment, you can add image overrides:
objectStore:
image:
repository: aistor # References repositories.aistor
image: minio:RELEASE.2025-XX-XXT00-00-00Z
sidecar:
image:
repository: aistor # References repositories.aistor
image: minio-sidecar:RELEASE.2025-XX-XXT00-00-00Z
-
Validate the object store upgrade.
Confirm the object store pods are running with the new version:
kubectl get all -n OBJECT-STORE-NAMESPACECheck the pods are ready and the deployment is healthy.
Upgrade only the object store image
If you want to update only the AIStor Object Store binary version without upgrading the chart itself, you can specify a new image tag. This approach keeps your existing chart version but updates the running software.
-
Copy the new image.
Copy the new image version to your private registry:
skopeo copy --override-os linux --override-arch amd64 \ docker://quay.io/minio/aistor/minio:RELEASE.2025-05-30T11-03-39Z \ docker://PRIVATE_REGISTRY/aistor/minio:RELEASE.2025-05-30T11-03-39ZReplace the tag with your target release version and
PRIVATE_REGISTRYwith your registry hostname. -
Update the values file.
Edit your
aistor-objectstore-values.yamlfile and update the image tag:objectStore: image: repository: PRIVATE_REGISTRY/aistor/minio tag: RELEASE.2025-05-30T11-03-39Z -
Deploy the image update.
Apply the updated configuration:
helm upgrade -n OBJECT-STORE-NAMESPACE OBJECT-STORE-NAME minio/aistor-objectstore \ -f aistor-objectstore-values.yaml -
Validate the deployment.
Verify the pods are running with the new image:
kubectl get pods -n OBJECT-STORE-NAMESPACE -o jsonpath='{.items[*].spec.containers[?(@.name=="minio")].image}'This command displays the image versions running in your pods. Confirm they reference your private registry with the new tag.