Skip to content

feat(gke-test): test keep on the shared faberline GKE cluster - #6

Open
chrischeng-c4 wants to merge 4 commits into
mainfrom
claude/gke-test-pilot
Open

chrischeng-c4 wants to merge 4 commits into
mainfrom
claude/gke-test-pilot

Conversation

@chrischeng-c4

Copy link
Copy Markdown
Contributor

Why

Local kind clusters fight for the same CPU and memory. keep now tests on the shared GKE cluster faberline-test, which faberline/aw owns (faberline/aw#32). keep gets its own namespace and its own pool pool-keep (e2-standard-4 Spot, 0..1 nodes). The pool has 0 nodes between runs.

What is in this PR

  • k8s/overlays/gke-test/kustomization.yaml: base plus the GHCR image. A StatefulSet patch adds the faberline.dev/pool=keep nodeSelector and toleration, and the ghcr-pull pull secret that the run creates.
  • scripts/gke-test/verify.sh: /readyz, a PUT and GET round trip on /kv/{key}, then delete keep-0 and read the same key again. This proves the PVC keeps the data.
  • .github/workflows/gke-test.yml: build the image with keep-test-image.yml, then call aw's reusable gke-test.yml. It deploys, runs verify.sh, and always deletes the namespace.

Temporary

The workflow points at faberline/aw@claude/gke-test-cluster (both uses: and aw-ref). Switch both to main after faberline/aw#32 merges.

Checks

  • shellcheck -x -S warning scripts/gke-test/verify.sh
  • actionlint .github/workflows/gke-test.yml
  • aw run.sh render check on this overlay: it passes; the image, nodeSelector, toleration, and ghcr-pull are in the rendered StatefulSet.
  • End-to-end run: this PR starts it.

🤖 Generated with Claude Code

Local kind clusters fight for the same CPU and memory. keep now has a
pull request run on the shared cluster faberline-test, which faberline/aw
owns. Its pool pool-keep has 0 nodes between runs.

- k8s/overlays/gke-test: base plus the GHCR image, and a StatefulSet
  patch that pins keep to pool-keep (nodeSelector and toleration) and
  pulls with the ghcr-pull secret that the run creates.
- scripts/gke-test/verify.sh: /readyz, a PUT and GET round trip on
  /kv/{key}, then delete keep-0 and read the same key again to prove the
  PVC keeps the data.
- .github/workflows/gke-test.yml: build the image with
  keep-test-image.yml, then call aw's reusable gke-test.yml, which
  deploys, runs verify.sh, and always deletes the namespace.

The aw refs point at claude/gke-test-cluster until faberline/aw#32
merges.
faberline/aw#32 is merged, so the pilot no longer needs the feature branch.
aw-ref defaults to main.
The check moves from a runner script with a port-forward to the Job in
k8s/gke-test-job/ on pool-keep-client, so the client never takes CPU from
the keep server. The server runs on pool-keep-server, with one replica per
node (topologySpreadConstraints). Needs faberline/aw#35 applied first.
The server and the test Job each get a node of their own: a required pod
anti-affinity on the hostname that matches every pod of the namespace.
The overlay removes the base's limits, and the Job sets no limit, so each
pod can use the whole node. Rules: aw docs/standards/test-cluster.md.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant