A parallel, cloud-native way to stand up the cluster for viewers who don't run
Proxmox. Produces a cluster equivalent to the Proxmox path; the same
deploy/deploy-all.sh runs unchanged afterward. Nothing sensitive is committed —
project id, region and Ollama endpoint all come from env vars.
export GCP_PROJECT="your-gcp-project"
export GKE_REGION="europe-west1"
export CLUSTER_NAME="${K8S_CLUSTER_NAME:-my-kagent-cluster}"
export GKE_NODE_COUNT=3
export GKE_MACHINE_TYPE="e2-standard-4" # 4 vCPU / 16 GB — headroom for otel-demo + kagent
export KUBERNETES_VERSION="1.31"
# Ollama backend: on GKE, run Ollama in-cluster or point at an external endpoint.
export OLLAMA_HOST="ollama.default.svc.cluster.local:11434"gcloud config set project "${GCP_PROJECT}"
# Standard regional cluster (Workload Identity on; needed for clean metadata).
gcloud container clusters create "${CLUSTER_NAME}" \
--region "${GKE_REGION}" \
--num-nodes "${GKE_NODE_COUNT}" \
--machine-type "${GKE_MACHINE_TYPE}" \
--cluster-version "${KUBERNETES_VERSION}" \
--workload-pool "${GCP_PROJECT}.svc.id.goog" \
--release-channel stable
gcloud container clusters get-credentials "${CLUSTER_NAME}" --region "${GKE_REGION}"
# GKE ships a CNI + LoadBalancer already, so skip Cilium/MetalLB. Then:
./deploy/deploy-all.sh| Concern | Proxmox (primary) | GKE (alternative) |
|---|---|---|
| CNI | Install Cilium | Built-in (GKE Dataplane V2) |
| LoadBalancer | MetalLB pool from reserved range | Built-in (Google Cloud LB) |
| Storage | local-lvm / zetlab-vmdisks |
standard-rwo PD (default SC) |
| Ollama backend | Mac Studio ${OLLAMA_HOST} |
In-cluster Ollama or external URL |
| otel-demo / kagent | identical | identical |
The Dynatrace, OTel Operator, Istio ambient, Gateway API and collector steps are 100% identical — only the underlying node/network provisioning differs.