Installation#
This guide covers installing AIM Engine on a Kubernetes cluster.
Prerequisites#
Component |
Minimum Version |
Notes |
|---|---|---|
Kubernetes |
1.32+ |
Cluster with AMD GPU nodes |
— |
Advertises |
|
KServe |
v0.16.1 |
|
Gateway API |
v1.3.0 |
Required for HTTP routing |
kgateway |
v2.0+ |
Gateway API data plane that AIM Engine targets for routing and the scale-from-zero activation signal |
cert-manager |
v1.16+ |
Required by KServe and optional metrics TLS |
KEDA |
2.18+ |
Autoscaling; required because scale-from-zero is a default-on feature |
keda-otel-add-on |
latest |
gRPC scaler that bridges OpenTelemetry metrics to KEDA. Installed alongside KEDA |
OpenTelemetry Operator |
0.101+ |
Reconciles the |
The scale-from-zero collector (kgateway-metrics-collector) is not a
separate prerequisite to apply — it ships with the AIM Engine Helm chart and
dist/install.yaml and is enabled by default
(scaleFromZero.gatewayMetricsCollector.enable=true), deployed into the release
namespace. You only apply it yourself when opting out; see
the collector README.
Optional components:
Component |
Version |
Purpose |
|---|---|---|
Longhorn or similar CSI |
— |
ReadWriteMany storage for model caching |
Install with Helm#
1. Install CRDs#
CRDs are distributed separately from the Helm chart and must be installed first:
helm install aim-engine-crds oci://docker.io/amdenterpriseai/aim-engine-crds-chart \
--version <version> \
--namespace aim-system \
--create-namespace
Or from a local file:
kubectl apply -f crds.yaml
kubectl wait --for=condition=Established crd --all --timeout=60s
2. Install the Operator#
helm install aim-engine oci://docker.io/amdenterpriseai/aim-engine-chart \
--version <version> \
--namespace aim-system \
--create-namespace
The chart deploys the scale-from-zero kgateway-metrics-collector into the
release namespace by default (scaleFromZero.gatewayMetricsCollector.enable=true);
it needs the OpenTelemetry Operator CRDs already present. To run it standalone
instead — for a different namespace, a non-default gateway label, or because you
manage cluster infra separately — set that value to false and apply the
manifest yourself:
kubectl apply -f https://raw.githubusercontent.com/amd-enterprise-ai/aim-engine/main/config/prereqs/scale-from-zero/kgateway-metrics-collector.yaml
kubectl -n keda rollout status deploy/kgateway-metrics-collector --timeout=120s
See config/prereqs/scale-from-zero/README.md
for the customization points.
See Helm Chart Values for all configurable values (replicas, resources, metrics, CRD management, etc.).
3. Enable model discovery (optional)#
The Helm chart does not create an AIMClusterModelSource. To populate cluster models from a registry, apply an AIMClusterModelSource manifest yourself (for example from the samples under config/samples/ in this repository). See Model Catalog for details.
Install from Source#
Build and install from the repository:
git clone https://github.com/amd-enterprise-ai/aim-engine.git
cd aim-engine
# Generate CRDs and Helm chart
make crds
make helm
# Install CRDs
kubectl apply -f dist/crds.yaml
kubectl wait --for=condition=Established crd --all --timeout=60s
# Install the operator (bundles the scale-from-zero collector by default;
# requires the OpenTelemetry Operator CRDs to be present)
helm install aim-engine ./dist/chart \
--namespace aim-system \
--create-namespace
Tip
This project uses mise to manage tool versions (Go, controller-gen, etc.). Run mise install and eval "$(mise activate bash)" to get the correct versions on your PATH. See Development Setup for details.
Common Configuration#
Enable Cluster Runtime Defaults#
Set up cluster-wide routing and storage defaults:
helm upgrade aim-engine oci://docker.io/amdenterpriseai/aim-engine-chart \
--namespace aim-system \
--set clusterRuntimeConfig.enable=true \
--set clusterRuntimeConfig.spec.routing.enabled=true \
--set clusterRuntimeConfig.spec.routing.gatewayRef.name=aim-gateway \
--set clusterRuntimeConfig.spec.routing.gatewayRef.namespace=kgateway-system
See Helm Chart Values for all available options.
Verify Installation#
Check that the operator is running:
kubectl get pods -n aim-system
Expected output:
NAME READY STATUS RESTARTS AGE
aim-engine-controller-manager-xxxxx-yyyyy 1/1 Running 0 30s
Verify CRDs are installed:
kubectl get crds | grep aim.eai.amd.com
Uninstalling#
# Remove the operator
helm uninstall aim-engine -n aim-system
# Remove CRDs
helm uninstall aim-engine-crds -n aim-system
Warning
Uninstalling the CRDs release deletes all AIM custom resources from the cluster. Remove the operator first, then the CRDs only if you want a full cleanup.
Next Steps#
Quickstart — Deploy your first inference service
KServe Configuration — Configure KServe for AIM Engine
Helm Chart Values — Full reference for all chart values