Deploying on Kubernetes
Updated 2026-08-28
Once you have a GKE namespace, you deploy with Kustomize manifests. The
platform ships a ready-to-copy template set so you don't start from a blank
deployment.yaml.
Grab the templates
The templates live in the repo under templates/k8s/.
Copy that folder into your service repo (most teams put it in deploy/):
templates/k8s/
base/ # deployment, service, SA, config, HPA, PDB, VirtualService
overlays/staging/ # *.abridge.cafe
overlays/production/ # *.abridge.services
Make it yours
- Replace
my-servicewith your service name across the manifests. - Set the Workload Identity GSA in
base/serviceaccount.yaml. - Point the image at your Artifact Registry path in each
kustomization.yaml.
Preview and apply
Render the fully-resolved manifests for an environment before anything touches a cluster:
kubectl kustomize templates/k8s/overlays/staging
CI applies these through ConfigSync/ArgoCD, but you can diff locally:
kubectl apply -k templates/k8s/overlays/staging --dry-run=server
What you get by default
- Istio mesh injection with
http-named ports (mTLS + routing). - Startup / readiness / liveness probes, so rollouts wait for healthy pods.
- HPA (CPU 70% / memory 80%, 3→20) and a PodDisruptionBudget.
- Non-root, read-only-rootfs pods using Workload Identity — no node creds.
- Zone spread and
maxUnavailable: 0rolling updates.
Trim anything you don't need — for an internal-only service, delete
virtualservice.yaml from base/kustomization.yaml.