Repository navigation
feat(cli): kates deploy runs the native Kates image on every cluster - #455
Merged
Merged
Conversation
kates deploy applies values-generic.yaml on every cluster that is not kind and on every admin-less install, which skips introspection and so never detects kind. It gave the Kates API a 512Mi limit under -Xmx256m, and the pod was OOMKilled as Quarkus finished starting: ZGC, metaspace, the code cache and Kafka's and Netty's buffers sit outside the heap. The overlay now requests 512Mi with a 1Gi limit and runs -Xms256m -Xmx512m, as values-staging.yaml does. Chart 0.13.3; the README chart table, the version appendix and the deployment chapter follow.
Off kind, admin-less installs included, kates deploy installed the JVM image. It now layers values-native.yaml after values-generic.yaml, so every cluster runs the published -native tag with the native overlay's 768Mi/1Gi and probe timings, as a kind cluster without a local build already did. Kind keeps its local native image when one is on the nodes. The book said kates deploy runs the JVM image off Kind. Architecture, Performance Theory, the lab, the deployment chapter, CONCEPTS and the glossary now say it runs the native image everywhere, whose Serial GC pauses land in the latencies of the runs it set up, and that a plain helm install of the chart runs the JVM image with ZGC.
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
An admin-less
kates deployon a kind cluster left the Kates API in CrashLoopBackOff: the container was OOMKilled (exit 137) just as Quarkus finished starting. Admin-less installs skip introspection, so the provider isunknownand the API getsvalues-generic.yaml, which put a 256m ZGC heap under a 512Mi limit. ZGC, metaspace, the code cache and Kafka's and Netty's buffers sit outside the heap, so every non-kind install was at the same risk.What changes
kates deployruns the native image on every cluster. Off kind, admin-less installs included, it now layerscharts/kates/values-native.yamlaftervalues-generic.yaml: the published-nativetag, 768Mi/1Gi, native probe timings. Kind keeps its local native image when one is on the nodes, and the published one otherwise, as before.values-generic.yamlgets a heap that fits: 512Mi request, 1Gi limit,-Xms256m -Xmx512m, asvalues-staging.yamldoes. Underkates deploythe native overlay now replaces this sizing; it still matters for anyone who installs with the generic overlay alone. Chart 0.13.3; the README chart table and the version matrix follow.kates deployruns the JVM image off Kind. Architecture, Performance Theory, the lab, the deployment chapter, CONCEPTS and the glossary now say it runs the native image everywhere, so the Serial GC's pauses land in the P99 and Max of the runs it set up, and that a plainhelm installruns the JVM image with ZGC. The deployment chapter says to install the chart without the native overlay to measure with ZGC.This reverses a deliberate choice. Runs set up by
kates deployon real clusters now measure with Serial GC instead of generational ZGC.Tests
Run locally:
go vet ./...,go test ./...,golangci-lint run --new-from-rev=origin/main ./...(0 issues),govulncheck ./...scripts/check-cli-style.sh,scripts/check-cli-compat.sh,scripts/check-versions.sh./mvnw test(backend Build & Test, whichcli/**triggers): all 1,735 tests passscripts/check-book-style.sh,scripts/check-book-contrast.py,scripts/check-mermaid.shscripts/gen-version-matrix.sh --checkandscripts/gen-chart-table.sh --check, on a cleangit archiveof the branch (a stray untrackedcharts/minio/in my checkout trips them)helm lint charts/kates -f values-generic.yaml -f values-native.yamlkind-panda), an admin-less release upgraded to the native overlay:1.29.1-nativestarted in 0.14s, Ready, 0 restarts. A fullkates deploywas not re-run.Not run locally: the PDF render (the edited lines are plain ASCII, so they add no new glyphs), and the Docker-only jobs (
*ITtests, the native image build, the Kind integration tests, the Docker builds, CodeQL, Trivy).Deliberately not done
unknown), so on kind they get the generic and published-native overlays rather thanvalues-kind.yaml.SRMSG00019: Unable to connect an emitter with the channel test-events-outfromOutboxPolleris a separate issue and isn't touched here.