~/DOCS/

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)
  • 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 architect

You 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 --wait

Watch 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 ping

Force 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-valkey

Wait for the new pod to be running before continuing:

kubectl wait pod -l app=example-valkey-valkey \
  --for=condition=Ready --timeout=60s

Find 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-valkey

Takeaways

You've now seen Architect's two core capabilities in action:

  1. 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.
  2. 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 --wait

Java (Tomcat)

helm upgrade example-java-tomcat \
  oci://ghcr.io/loopholelabs/example-java-tomcat-chart --install --wait

Kafka

helm upgrade example-kafka \
  oci://ghcr.io/loopholelabs/example-kafka-chart --install --wait

PHP (WordPress)

helm upgrade example-php-wordpress \
  oci://ghcr.io/loopholelabs/example-php-wordpress-chart --install --wait

PostgreSQL

helm upgrade example-postgres \
  oci://ghcr.io/loopholelabs/example-postgres-chart --install --wait

Python

helm upgrade example-python \
  oci://ghcr.io/loopholelabs/example-python-chart --install --wait

Ruby

helm upgrade example-ruby \
  oci://ghcr.io/loopholelabs/example-ruby-chart --install --wait

Rust (miniserve)

helm upgrade example-rust-miniserve \
  oci://ghcr.io/loopholelabs/example-rust-miniserve-chart --install --wait

Spring Boot

helm upgrade example-spring-boot \
  oci://ghcr.io/loopholelabs/example-spring-boot-chart --install --wait

See FAQ → Compatibility for the full support matrix.