deploy-gcp
Skill4 starsChanged 27 days agoBSD-3-ClauseView on GitHub
Bring Ramen up on a GCP project (GKE Autopilot, Firestore, GCS, Artifact Registry, global HTTPS LB) with Terraform + Helm, then create the first zone, group and deploy through the console API. Use when asked to deploy, install or stand up Ramen on GCP.
- Reads credentials
- Installs packages
2 other projects use a version of this.
Adopted by
Most recently taken up by
- impeto-ai/claude-skills-impetotheir own version, first seen May 18, 2026
- nobufumi-tego/gcp-agile-templatetheir own version, first seen May 4, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- impeto-ai/claude-skills-impeto★ 1same name
- nobufumi-tego/gcp-agile-template★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- docs/llms.txtllms.txt
- backup-restoreSkill
- deploy-awsSkill
- iterateSkill
- rotate-keysSkill
- scale-zoneSkill
- testSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 2 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
Wait: kubectl -n ramen-system rollout status deploy/console.
- Distinctive: line 24
Write a short runbook line into the ticket/PR: project, region, console hostname, zone, group, and the teardown commands below.
- Very specific: line 36
Never terraform destroy, delete namespaces, or delete the project unless the request explicitly says teardown.
- Distinctive: line 37
Never print or store secret values, the Fernet key or keys beyond the one hand-over.
- Very specific: line 38
Do not loop on rebalance / ip-rules responses with applied:false / attached:false.
- Very specific: line 39
Stop and ask a human if terraform apply fails on IAM/quota, if the Gateway is not programmed after 15 min, or if the deploy job reports pip …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Deploy Ramen on GCP
Verified path (v0.2.0+). Full narrative: docs/wiki/deploy-gcp.md; binding contract: docs/CONTRACTS.md §7.
Takes ~25 min wall clock; most of it is GKE and load-balancer provisioning. Never skip waits.
Inputs
PROJECT(existing project with billing, or create one withscripts/gcp_test_project.sh create),REGION(defaultus-central1), first worker zoneGCP_ZONE(defaultus-central1-a).- Group repo URL to deploy (default
https://github.com/bkraad47/ramen-demo-mcp-group). - Tools on PATH:
gcloud(logged in),terraform >= 1.6,helm 4,kubectl,docker+ buildx,gke-gcloud-auth-plugin,uv,openssl,python3.
Steps
- Auth:
gcloud config set project $PROJECT && gcloud auth application-default login(or exportGOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)for Terraform). Confirm billing is linked:gcloud billing projects describe $PROJECT. - Infra:
cd deploy/terraform/gcp && cp -n terraform.tfvars.example terraform.tfvars, setproject/region,terraform init && terraform apply -auto-approve. Record outputsconsole_ip,public_hostname(a freesslip.iohostname derived fromconsole_ip, v0.5.5 — setpublic_hostnameinterraform.tfvarsinstead if you have a real domain),certificate_map,groups_bucket,artifact_repo,console_gsa. - Images:
make push PROJECT=$PROJECT REGION=$REGION(linux/amd64 → Artifact Registryramen/{console,worker}:<VERSION>). - Console:
gcloud container clusters get-credentials ramen --region $REGION;kubectl label ns ramen-system ramen.io/routes=true --overwrite;HOSTNAME=$(terraform -chdir=deploy/terraform/gcp output -raw public_hostname),CERTMAP=$(terraform -chdir=deploy/terraform/gcp output -raw certificate_map); generateADMIN_PW=$(openssl rand -base64 18),FERNET=$(python3 -c 'import os,base64;print(base64.urlsafe_b64encode(os.urandom(32)).decode())'),ADMIN_KEY=$(openssl rand -hex 24);helm upgrade --install ramen deploy/helm/ramen -n ramen-system --create-namespace --set project=$PROJECT,region=$REGION --set gateway.certificateMap=$CERTMAP --set console.env.RAMEN_PUBLIC_URL=https://$HOSTNAME --set console.secrets.RAMEN_ADMIN_PASSWORD=$ADMIN_PW,console.secrets.RAMEN_FERNET_KEY=$FERNET,console.secrets.RAMEN_ADMIN_KEY=$ADMIN_KEY. Hand the three secret values to the human once (they are not recoverable from the cluster without kubectl access) and do not print them again. - Wait:
kubectl -n ramen-system rollout status deploy/console; pollkubectl -n ramen-system get gateway ramenuntilPROGRAMMED=True(up to 10 min); the managed cert reachesACTIVEa few minutes after that (gcloud certificate-manager certificates describe ramen-console);curl https://$HOSTNAME/readyzmust return{"ok":true,...}— no-k, the cert is publicly trusted. - First zone/group/env/key/deploy through the API (cookie login with
admin@ramen.local/$ADMIN_PW):POST /api/v1/zones {name:"a",provider:"gcp",region:"$GCP_ZONE"},POST /api/v1/groups {name,repo_url,ref:"main"},POST /api/v1/groups/<g>/environments {name:"default",ref:"main",zones:["a"]},POST /api/v1/groups/<g>/mcp-keys {name:"first"}(store the returnedrmk_key for the validator),POST .../environments/default/deploy {canary:true}and poll/api/v1/jobs/<id>untilok(first run 1–3 min: bucket sync + pip install). Alternative:scripts/cloud_smoke.sh https://$HOSTNAME admin@ramen.local "$ADMIN_PW" "$ADMIN_KEY". - Generate an
rmn_API key for later automation:POST /api/v1/api-keys {name:"ops",role:"super_admin"}; give it to the human once. - Write a short runbook line into the ticket/PR: project, region, console hostname, zone, group, and the teardown commands below.
Validate
(hand this section to a read-only sub-agent with CONSOLE=https://<public_hostname>, the rmk_ key and a viewer rmn_ key)
- V1
curl -s $CONSOLE/readyz→ HTTP 200 and body contains"ok":true(no-k: the Google-managed cert is publicly trusted). - V2
curl -s -H "X-Ramen-Api-Key: $RMN" $CONSOLE/api/v1/groups/<g>/zones/a/workers→ HTTP 200,livehas ≥1 item withtrack:"stable"andloadin {low,even,high}. - V3 (gRPC through the LB, no CA export needed — the cert is publicly trusted)
REQ=$(printf '%s' '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | base64); grpcurl -import-path proto -proto ramen/v1/mcp.proto -H "authorization: Bearer $RMK" -H 'ramen-group: <g>' -H 'ramen-zone: a' -d "{\"body\":\"$REQ\"}" <public_hostname>:443 ramen.v1.Mcp/Call→ status OK and the base64-decodedbodyhasresult.toolsnon-empty. - V4 Same call without the
authorizationheader → gRPC statusUnauthenticated(code 16). - V5
kubectl -n ramen-<g>-a get deploy worker-canary -o jsonpath='{.spec.replicas}'→0or1(never more), andkubectl -n ramen-<g>-a get deploy workerREADY ≥ 1/1. - V6
curl -sk -H "X-Ramen-Api-Key: $RMN" "$CONSOLE/api/v1/audit"→ contains an entry withactiondeployandok:true.
Boundaries
- Never
terraform destroy, delete namespaces, or delete the project unless the request explicitly says teardown; then usedocs/how-tos/gcp.md#teardownand finish withscripts/gcp_cost_check.sh $PROJECT --expect-empty. - Never print or store secret values, the Fernet key or keys beyond the one hand-over.
- Do not loop on
rebalance/ip-rulesresponses withapplied:false/attached:false; they retry in the background. - Stop and ask a human if
terraform applyfails on IAM/quota, if the Gateway is not programmed after 15 min, or if the deploy job reports pip errors from the group repo (that is the repo owner's problem, not infra).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

