On this page:
Architect scales Kubernetes pods to zero without unscheduling them, and wakes or migrates them instantly with complete state. No code changes required.
Prerequisites:
- Kubernetes 1.33+ with at least 2 nodes
- Helm 3+
- On Amazon EKS: AL2023 AMI required (AL2 not supported)
- On Google GKE: Ubuntu node image required (Container-Optimized OS not supported)
Install Architect
Sign into console.architect.io, click
+ Add Cluster, and follow the instructions. The console provides a
pre-filled helm install command with your machine token, cluster name,
and Kubernetes distribution.
Verify the installation:
kubectl get pods -n architectYou should see architect-admission-controller, architect-control-plane, and
architectd on each labeled node. For GitOps setup, prerequisites, and
advanced Helm chart options, see the full Installation
guide.
Deploy Valkey as an Example
helm install \
example-valkey oci://ghcr.io/loopholelabs/example-valkey-chart --waitWatch Valkey Scale Down and Wake Up
Watch the pod scale down after 10 seconds of inactivity:
watch "kubectl get pod -l app=example-valkey-valkey \
-o custom-columns=\"\
NAME:.metadata.name,\
ARCHITECT:.metadata.labels['status\.architect\.loopholelabs\.io/valkey'],\
CPU:.spec.containers[0].resources.requests.cpu,\
MEM:.spec.containers[0].resources.requests.memory\""Wake the pod up:
kubectl exec -it deployment/example-valkey-valkey \
-c valkey -- valkey-cli pingForce Valkey Migration Across Nodes
Find the initial node where the Valkey pod runs:
NODE=$(kubectl get pod -l app=example-valkey-valkey \
-o jsonpath='{.items[0].spec.nodeName}')Store a Valkey message in memory, on the initial node:
kubectl exec -it deployment/example-valkey-valkey -c valkey -- \
valkey-cli set architect-quick-start \
"This Valkey message was stored in memory on node: $NODE"Confirm that the message can be read:
kubectl exec -it deployment/example-valkey-valkey -c valkey -- \
sh -c "valkey-cli --raw get architect-quick-start; \
echo \"Valkey pod is running on node: $NODE\""Cordon the node and delete the Valkey pod:
kubectl cordon $NODE
kubectl delete pod -l app=example-valkey-valkeyWait for the new pod to be running before continuing:
kubectl wait pod -l app=example-valkey-valkey \
--for=condition=Ready --timeout=60sFind the new node where the Valkey pod migrated to:
NEW_NODE=$(kubectl get pod -l app=example-valkey-valkey \
-o jsonpath='{.items[0].spec.nodeName}')Verify that Valkey message is still in memory, on the new node:
kubectl exec -it deployment/example-valkey-valkey -c valkey -- \
sh -c "valkey-cli --raw get architect-quick-start; \
echo \"Valkey pod is running on node: $NEW_NODE\""Uncordon the initial node and delete the Valkey example:
kubectl uncordon $NODE
helm uninstall example-valkeyTakeaways
You've now seen Architect's two core capabilities in action:
- Valkey scaled to zero CPU and memory after 10 seconds of inactivity, then woke up instantly when you ran a command against it; all without being unscheduled.
- You then forced a Valkey migration to a different node by cordoning and deleting the pod: the message you stored in memory was still there on the new node. No code changes and no special client logic needed. Valkey's in-memory state survived the move intact.
Try the examples below with different languages and frameworks.
More Examples
Each chart below deploys a small workload with Architect annotations already applied, so it will scale down after a short idle period and wake up instantly:
Go
helm upgrade example-go \
oci://ghcr.io/loopholelabs/example-go-chart --install --waitJava (Tomcat)
helm upgrade example-java-tomcat \
oci://ghcr.io/loopholelabs/example-java-tomcat-chart --install --waitKafka
helm upgrade example-kafka \
oci://ghcr.io/loopholelabs/example-kafka-chart --install --waitPHP (WordPress)
helm upgrade example-php-wordpress \
oci://ghcr.io/loopholelabs/example-php-wordpress-chart --install --waitPostgreSQL
helm upgrade example-postgres \
oci://ghcr.io/loopholelabs/example-postgres-chart --install --waitPython
helm upgrade example-python \
oci://ghcr.io/loopholelabs/example-python-chart --install --waitRuby
helm upgrade example-ruby \
oci://ghcr.io/loopholelabs/example-ruby-chart --install --waitRust (miniserve)
helm upgrade example-rust-miniserve \
oci://ghcr.io/loopholelabs/example-rust-miniserve-chart --install --waitSpring Boot
helm upgrade example-spring-boot \
oci://ghcr.io/loopholelabs/example-spring-boot-chart --install --waitSee FAQ → Compatibility for the full support matrix.