Quick start
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)
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.
More examples
Each chart below deploys a small workload with Architect annotations already applied, so it scales down after a short idle period and wakes instantly. Install any of them the same way, swapping in the chart name:
helm upgrade example-go \
oci://ghcr.io/loopholelabs/example-go-chart --install --waitAvailable charts: example-go, example-java-tomcat, example-kafka,
example-php-wordpress, example-postgres, example-python, example-ruby,
example-rust-miniserve, example-spring-boot.