Repository navigation
fix(cli): admin-less deploy installs on one node, in any namespace - #595
Merged
Merged
Conversation
A namespace account could not finish a first install: Apicurio was refused on the kafka namespace, one missing PodMonitor grant switched off the compliance Role on clusters with no Prometheus operator, and Kafka's chart defaults left brokers Pending for 15 minutes with no reason given. Apicurio now follows the deploy's namespaces and cluster. The compliance Role's PodMonitor rule and the CLI's check for it follow the API the cluster serves. Admin-less detects kind, k3d and minikube without cluster rights, and sizes down to one broker where the stack would not fit, and --ha=false now sizes it. Readiness waits print why pods are Pending, and stop early when every node is short and nothing changes for three minutes.
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
A namespace
admincould not finishkates deploy --adminlesson a first try. The kind run inplans/adminless-enhancement.mdfound it: Apicurio was refused on KafkaTopickafkasql-journalin namespacekafka, and two brokers stayed Pending for the full 15 minutes while the deploy printed only "2 Pending". One false gap,list podmonitorson a cluster with no such API, also switched off the compliance Role, and with it compliance checks, topology and the disruption guard.This fixes A2, F1, F2/A6/F4 and F3 from that plan.
What changed
--create-namespaceis gone.monitoring.coreos.com/v1/PodMonitorexists, and the CLI asks for that grant only then. A failed discovery still asks.ComplianceCheckandClusterTopologyServiceaskclient.supportson a 403, because a Role without the rule gets 403 and not 404 for an API the cluster does not serve. kates 0.15.9, kates-platform 0.8.24.--ha=falsenow does the same. An explicit--hawins, and an installed Kafka decides the size on a re-run. One line says what was chosen and why.0/N nodesare all short of CPU or memory, the same pods hold the same reason, and noTriggeredScaleUporNominatedevent exists.krafter; Connect ingress and Kafka UI egress blocked Kafka UI from Connect and Apicurio; kafka-ui's kind overlay hard-coded a namespace and a Service that no longer exists; fixed NodePorts would collide on a shared cluster, so admin-less uses ClusterIP.--ha=falsein the full profile also drops the deadkafka.replicasargs and gives MirrorMaker 2 one replica.Deliberately not done
--sizeor--valuesflag. The size default is decision 2 in the plan.--ha=falsekeeps its detected pool count. Replacing detected pools renames them, and the chart removes a renamed pool with its data..policiesway out.Things to check in review
--upgrade apicuriorolls it once, because the bootstrap address becomes the FQDN.kindordockerbinary now fails the deploy.runDeploy: the admin-less report now runs before the wizard.Testing
Live on a one-node kind cluster (Kubernetes 1.37, 18 CPUs) as a ServiceAccount with
adminin its namespace only, Strimzi 1.2.0 installed by an admin:0/1 nodes are available: 1 Insufficient cpu. With capacity freed at 75 seconds, the deploy recovered and exited 0.The run used the published 1.36.0 image, so the Java change has unit tests only (
ComplianceCheckTest,ClusterTopologyServiceTest); those two classes pass, the full Java suite was not run locally. k3d, minikube, multi-node clusters and clusters with Prometheus Operator were not run.Locally: build, vet,
go test ./..., pinned golangci-lint 2.14.0, CLI style and compat checks, helm lint and unittest,check-versions.sh,check-chart-matrix.pyand book style.