Repository navigation
docs(book): Recipe 7 gates a CI pipeline on Kafka, on either install mode - #443
Merged
Merged
Conversation
…mode How a runner reaches the Kates API (in-cluster Service, Ingress or a port-forward with edit rights), where the API key comes from and that KATES_URL and KATES_API_KEY need no CLI config, a scenario file with LOAD and INTEGRITY gates, each gate command's exit codes, and a GitHub Actions workflow that installs a pinned, checksum-verified CLI. The chaos gate runs only on a cluster-wide install with a chaos provider, and fails only on a breached sla block. Outcomes were captured on panda; the workflow passes actionlint.
bmscomp
added a commit
that referenced
this pull request
Oct 21, 2026
…dminless plan with what shipped (#444) The book teaches the conformity language in its Conformity Checks chapter, but had no place that lists every field, value kind, rule id, report field and lint code. A new appendix does, after the version matrix; the chapter, the CLI Reference, the Reference part's intro and the README point to it. It is written against main as of #443: - a key set twice to the same value is a lint error that fmt fixes (#437); - with rbac.scope=namespace, zones, skew and rack awareness read the EndpointSlices of the brokers' headless Service when nodes can't be listed, and podMonitor looks in the Kafka namespace only (#439); - a refused get of the Kafka resource is a 503 naming the grant (#439), which the API Reference now says too; - the chart sets the checked namespace and cluster from networkPolicy.kafka.namespace and kafka.clusterName (#441). plans/adminless-kubernetes.md is the plan behind #439, with a status block naming what shipped in #439 and #441-#443, where the work departed from it (EndpointSlice zones; orphan recovery left on), and what is still open.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
After #439 and #441 there are two ways to install Kates. A cluster admin installs it cluster-wide with chaos, and a team with only
editinstalls it in its own namespace (rbac.scope=namespace). The book covered CI only in pieces:test apply --waitin Scenario Files,--fail-on-sla-breachin Chaos Practice,--output-junitin Conformity Checks. Nothing said how a runner reaches the API under either install, or which gates each install can run.What changes
docs/book/14-recipes.mdgains Recipe 7: Gate a CI Pipeline on Kafka, plus its row in the recipes table, an intro bullet and a Summary bullet. The recipe covers:Which gates each install mode can run: scenario gates,
kates gate, the conformity check, and the chaos SLA, which needs a cluster-wide install with a chaos provider.Reaching the API:
kubectl port-forward, whicheditallows.The chart's NetworkPolicy admits port 8080 from any namespace.
The API key: from the
kates-api-keySecret, or your own Secret viaapiKey.existingSecret. The CLI readsKATES_URLandKATES_API_KEYahead of any context, so the runner needs no config file.A scenario file with LOAD and INTEGRITY gates, and every gate command's exit codes.
A GitHub Actions workflow:
checksums.txt;KATES_CHAOSistrue.Limits:
Evidence
panda, with onlyKATES_URLandKATES_API_KEYset and no CLI config:kates test apply -f kafka-gates.yaml --wait -o jsonexited 1: LOAD brokep99=1484ms > 500ms, while INTEGRITY met all three integrity gates.kates report export <id> --format junitwrote JUnit for both runs.kates gate --min-grade Cexited 1, with grade F on the Kind lab.checksums.txtis the concatenatedshasum -a 256lines (release.yml), which the install step'sgrep | sha256sum -cmatches.--fail-on-sla-breachexits 0 for a plan without anslablock, or one that ends PARTIAL or FAILED, so the recipe says to give the plan ansla;execin the test step, so cancelling the job reacheskatesand cancels the run;monitoring.podMonitorcan also be UNKNOWN under namespace scope;check-book-style.shpasses, the metrics ratchet doesn't rise, and a scratch Quarto render shows no warnings.Not done
cli/cmd/disruption.goand the Kates API's orchestrator.