Skip to content

drop minikube support#900

Merged
mergify[bot] merged 5 commits intomainfrom
kdreyer/drop-minikube
Mar 12, 2026
Merged

drop minikube support#900
mergify[bot] merged 5 commits intomainfrom
kdreyer/drop-minikube

Conversation

@ktdreyer
Copy link
Contributor

Summary

  • Remove components/manifests/minikube/ directory and docs/internal/developer/local-development/minikube.md
  • Convert CI workflow (.github/workflows/test-local-dev.yml) from minikube to kind
  • Remove minikube-specific Makefile targets (local-reload-*, _build-and-load, _show-access-info, check-minikube, local-sync-version); alias local-up/local-down/local-clean/local-rebuild to their kind equivalents
  • Update local-test-quick to use kind cluster checks instead of minikube ip
  • Update check-local-context to only accept kind- prefixed contexts
  • Update all documentation, diagrams, skill files, and test scripts

Test plan

  • make kind-up creates cluster successfully
  • make local-up works as alias for kind-up
  • make local-test-quick passes against a running kind cluster
  • make local-status shows correct kind cluster info
  • make local-down works as alias for kind-down
  • CI workflow runs successfully with kind
  • make help output looks correct
  • tests/local-dev-test.sh --ci passes

Fixes #898

ktdreyer and others added 2 commits March 12, 2026 15:05
Kind is the recommended local development tool and matches CI.
CRC remains available for OpenShift-specific testing.

The CI workflow now uses kind instead of minikube. The Makefile
"local-up", "local-down", "local-clean", and "local-rebuild"
targets are now aliases for their kind equivalents, so existing
muscle memory still works.

Fixes #898

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kind requires cluster names to match "^[a-z0-9.-]+$". In CI,
"git rev-parse --abbrev-ref HEAD" returns "HEAD" (detached),
producing "ambient-HEAD" which kind rejects.

Pipe through "tr A-Z a-z" before sanitizing so the slug is
always lowercase.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0ee1a370-a11f-4ca0-b0a2-e5930559e058

📥 Commits

Reviewing files that changed from the base of the PR and between 2bb0f4d and 192cd73.

📒 Files selected for processing (3)
  • .github/workflows/test-local-dev.yml
  • docs/internal/architecture/diagrams/deployment-stack.mmd
  • tests/local-dev-test.sh

Walkthrough

This PR removes Minikube support and consolidates local development and CI workflows around Kind: deletes Minikube manifests and docs, updates Makefile targets, CI workflow, tests, and documentation to use Kind-only commands and references.

Changes

Cohort / File(s) Summary
Dev-cluster Skills & Guides
.claude/skills/dev-cluster/README.md, .claude/skills/dev-cluster/SKILL.md
Replaced Minikube guidance with Kind-centric workflow, commands, and examples; removed Minikube-specific troubleshooting and steps.
Documentation & Diagrams
CONTRIBUTING.md, BOOKMARKS.md, docs/*, docs/internal/*, docs/src/content/docs/development/index.md, docs/internal/architecture/diagrams/*.mmd
Removed Minikube references, updated tables/diagrams and index pages to recommend Kind only; deleted Minikube local-development doc.
Makefile
Makefile
Replaced Minikube-targets with Kind equivalents (e.g., local-upkind-up), removed Minikube helpers/reload targets, tightened context checks to kind-, updated help/status outputs.
CI Workflow
.github/workflows/test-local-dev.yml
Switched CI local-dev workflow from Minikube to Kind: env vars, cache keys/paths, download/install steps, and invoked make targets updated to use Kind.
Manifests (minikube)
components/manifests/minikube/*
Deleted entire minikube manifests directory: backend/frontend deployments & services, ingress, RBAC, operator config and related minikube-specific manifests.
Components READMEs
components/README.md, components/backend/README.md, components/frontend/README.md
Simplified local development instructions to a single make kind-up path; removed Minikube alternatives.
Tests & Test Helpers
tests/README.md, tests/local-dev-test.sh, tests/*
Reworked tests and helpers to expect Kind: updated prerequisites, context checks, port/URL logic, NodePort/ingress handling, renamed test_minikube_statustest_kind_status.
Misc small edits
components/*, docs/internal/README.md, tests/README.md
Minor textual and example updates to remove Minikube mentions and reflect Kind-centric instructions.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'drop minikube support' clearly and concisely summarizes the primary change in the changeset - removing minikube support throughout the repository.
Description check ✅ Passed The description provides a comprehensive overview of changes including removal of minikube manifests, conversion of CI workflow, Makefile updates, and documentation changes - all relevant to the changeset.
Linked Issues check ✅ Passed The PR fully implements the requirements from issue #898: removes minikube artifacts, consolidates on kind for local development, simplifies kustomize layouts, and updates CI/Makefile/documentation accordingly.
Out of Scope Changes check ✅ Passed All changes are directly scoped to removing minikube support as specified in the linked issue; no unrelated modifications to other systems or features are present.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch kdreyer/drop-minikube
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/local-dev-test.sh (1)

421-436: ⚠️ Potential issue | 🔴 Critical

Test references removed Makefile targets - will fail.

This test invokes local-reload-backend, local-reload-frontend, and local-reload-operator, but these targets were removed from the Makefile in this PR. The test will fail with "no rule to make target" errors.

Proposed fix: Update to test existing targets
 test_reload_commands() {
-    log_section "Test 14: Reload Commands (Dry Run)"
+    log_section "Test 14: Rebuild Commands (Dry Run)"

-    local reload_cmds=("local-reload-backend" "local-reload-frontend" "local-reload-operator")
+    local rebuild_cmds=("kind-rebuild" "local-rebuild")

-    for cmd in "${reload_cmds[@]}"; do
+    for cmd in "${rebuild_cmds[@]}"; do
         if make -n "$cmd" >/dev/null 2>&1; then
             log_success "make $cmd syntax is valid"
             ((PASSED_TESTS++))
         else
             log_error "make $cmd has syntax errors"
             ((FAILED_TESTS++))
         fi
     done
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/local-dev-test.sh` around lines 421 - 436, The test function
test_reload_commands currently checks for removed Makefile targets via the
reload_cmds array ("local-reload-backend", "local-reload-frontend",
"local-reload-operator"); update this test to reference the actual reload
targets that remain in the Makefile (or remove the test) so make -n "$cmd" no
longer fails with "no rule to make target". Locate test_reload_commands and
modify the reload_cmds array to contain the current target names (or add a guard
to skip the loop when those targets are absent) and keep the same success/error
logging behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/test-local-dev.yml:
- Line 9: The KIND_VERSION variable in the workflow is pinned to "v0.27.0" but
must be updated to "v0.31.0" to match the node image used in
e2e/scripts/setup-kind.sh; change the KIND_VERSION value to "v0.31.0" in the
workflow definition so kind and the kindest/node image are compatible.

In `@docs/internal/architecture/diagrams/deployment-stack.mmd`:
- Line 10: Rename the Mermaid node identifier MK to a clearer identifier KIND
everywhere it’s used (the node declaration MK[Kind] and all references to MK in
the diagram) so the identifier matches the represented runtime; update the label
if needed to remain "Kind" (e.g., change MK[Kind] -> KIND[Kind]) and replace all
other occurrences of MK with KIND to keep references consistent throughout the
diagram (including the two other places referencing MK).

In `@Makefile`:
- Line 2: The test test_reload_commands in tests/local-dev-test.sh still invokes
removed Makefile targets local-reload-backend, local-reload-frontend, and
local-reload-operator causing "no rule to make target" failures; update that
test to either remove the test_reload_commands block entirely or change its
invoked targets to existing Makefile targets (for example replace the removed
targets with kind-rebuild or other valid targets), ensuring the test uses make
-n against current target names and keep the test_reload_commands identifier and
assertions adjusted accordingly.

---

Outside diff comments:
In `@tests/local-dev-test.sh`:
- Around line 421-436: The test function test_reload_commands currently checks
for removed Makefile targets via the reload_cmds array ("local-reload-backend",
"local-reload-frontend", "local-reload-operator"); update this test to reference
the actual reload targets that remain in the Makefile (or remove the test) so
make -n "$cmd" no longer fails with "no rule to make target". Locate
test_reload_commands and modify the reload_cmds array to contain the current
target names (or add a guard to skip the loop when those targets are absent) and
keep the same success/error logging behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8024164b-9d99-4a43-bf5d-dfc4b2decedf

📥 Commits

Reviewing files that changed from the base of the PR and between 373db39 and ead95a5.

📒 Files selected for processing (27)
  • .claude/skills/dev-cluster/README.md
  • .claude/skills/dev-cluster/SKILL.md
  • .github/workflows/test-local-dev.yml
  • BOOKMARKS.md
  • CONTRIBUTING.md
  • Makefile
  • components/README.md
  • components/backend/README.md
  • components/frontend/README.md
  • components/manifests/minikube/backend-deployment.yaml
  • components/manifests/minikube/backend-service.yaml
  • components/manifests/minikube/frontend-deployment.yaml
  • components/manifests/minikube/frontend-service.yaml
  • components/manifests/minikube/ingress.yaml
  • components/manifests/minikube/local-dev-rbac.yaml
  • components/manifests/minikube/operator-config.yaml
  • components/manifests/minikube/operator-deployment.yaml
  • docs/internal/README.md
  • docs/internal/architecture/diagrams/component-structure.mmd
  • docs/internal/architecture/diagrams/deployment-stack.mmd
  • docs/internal/developer/README.md
  • docs/internal/developer/local-development/README.md
  • docs/internal/developer/local-development/crc.md
  • docs/internal/developer/local-development/minikube.md
  • docs/src/content/docs/development/index.md
  • tests/README.md
  • tests/local-dev-test.sh
💤 Files with no reviewable changes (10)
  • docs/internal/developer/local-development/minikube.md
  • components/manifests/minikube/operator-config.yaml
  • components/manifests/minikube/ingress.yaml
  • BOOKMARKS.md
  • components/manifests/minikube/frontend-service.yaml
  • components/manifests/minikube/operator-deployment.yaml
  • components/manifests/minikube/backend-deployment.yaml
  • components/manifests/minikube/frontend-deployment.yaml
  • components/manifests/minikube/backend-service.yaml
  • components/manifests/minikube/local-dev-rbac.yaml

ktdreyer and others added 2 commits March 12, 2026 15:29
The "kubectl wait --for=condition=ready" step already validates
the backend pod's readiness probe (which hits /health). The
explicit "wget" check fails in ubi-minimal containers that lack
wget, and is redundant with the readiness gate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The comprehensive test script assumed minikube-specific behavior
(DISABLE_AUTH, local-dev-user, ingress-nginx, local-reload-*
targets). Update all tests to match the kind overlay setup:

- Check pod readiness instead of curling via minikube IP
- Accept missing ingress-nginx (kind uses NodePort mapping)
- Check for NAMESPACE/PORT/BACKEND_URL env vars instead of
  DISABLE_AUTH
- Validate test-user SA instead of local-dev-user
- Test kind-rebuild instead of removed local-reload-* targets
- Pass CONTAINER_ENGINE to make local-status in CI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
Makefile (1)

79-85: ⚠️ Potential issue | 🟠 Major

Preserve per-worktree uniqueness in CLUSTER_SLUG.

Lines 79-85 truncate the sanitized branch name before it is used for both KIND_CLUSTER_NAME and KIND_PORT_OFFSET. Two branches with the same first 20 sanitized characters will pick the same cluster name and ports, so one worktree can end up reusing or tearing down the other worktree’s Kind cluster.

Suggested fix
-CLUSTER_SLUG ?= $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null | tr 'A-Z' 'a-z' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//' | sed 's/-$$//' | cut -c1-20)
+CLUSTER_SLUG ?= $(shell branch=$$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo detached); \
+	slug=$$(printf '%s' "$$branch" | tr 'A-Z' 'a-z' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//' | sed 's/-$$//'); \
+	hash=$$(printf '%s' "$$branch" | cksum | awk '{print $$1}' | cut -c1-6); \
+	printf '%.13s-%s' "$$slug" "$$hash")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 79 - 85, CLUSTER_SLUG currently only uses the first 20
chars of the sanitized branch name so different worktrees can collide; change
the CLUSTER_SLUG generation to append a per-worktree discriminator (preferably
the worktree name from git rev-parse --git-dir, falling back to git rev-parse
--short HEAD) before final sanitization/truncation so KIND_CLUSTER_NAME and
KIND_PORT_OFFSET (which both derive from CLUSTER_SLUG) become unique per
worktree; preserve the existing sanitization and then cut to 20 chars after
adding the discriminator so downstream symbols CLUSTER_SLUG, KIND_CLUSTER_NAME,
and KIND_PORT_OFFSET continue to work without collisions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Makefile`:
- Around line 403-409: The target local-test-quick (and similarly kind-rebuild,
kind-port-forward, dev-bootstrap) only checks that a kind cluster named by
$(KIND_CLUSTER_NAME) exists but does not ensure kubectl is using that cluster's
context; update these targets to explicitly switch or pin kubectl to the
expected Kind context (e.g., run kubectl config use-context or pass
--context=kind-$(KIND_CLUSTER_NAME) / the exact context name) before running any
kubectl commands and fail if the expected context is not available, so all
subsequent kubectl invocations operate on the correct cluster.

---

Outside diff comments:
In `@Makefile`:
- Around line 79-85: CLUSTER_SLUG currently only uses the first 20 chars of the
sanitized branch name so different worktrees can collide; change the
CLUSTER_SLUG generation to append a per-worktree discriminator (preferably the
worktree name from git rev-parse --git-dir, falling back to git rev-parse
--short HEAD) before final sanitization/truncation so KIND_CLUSTER_NAME and
KIND_PORT_OFFSET (which both derive from CLUSTER_SLUG) become unique per
worktree; preserve the existing sanitization and then cut to 20 chars after
adding the discriminator so downstream symbols CLUSTER_SLUG, KIND_CLUSTER_NAME,
and KIND_PORT_OFFSET continue to work without collisions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: cce2e8de-6352-41c7-b54d-204bbda698ec

📥 Commits

Reviewing files that changed from the base of the PR and between ead95a5 and 2bb0f4d.

📒 Files selected for processing (1)
  • Makefile

@ktdreyer ktdreyer requested review from Gkrumbach07 March 12, 2026 20:17
Bump KIND_VERSION from v0.27.0 to v0.31.0 so the CI workflow
matches the "kindest/node:v1.35.0" image used in setup-kind.sh.
Node images are only officially supported with the kind version
they shipped with.

Rename the "MK" Mermaid node identifier to "KIND" in the
deployment-stack diagram, since the node now represents Kind
rather than Minikube.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
mergify bot added a commit that referenced this pull request Mar 12, 2026
@mergify mergify bot merged commit 1dee9f8 into main Mar 12, 2026
20 checks passed
@mergify mergify bot deleted the kdreyer/drop-minikube branch March 12, 2026 21:00
@mergify
Copy link

mergify bot commented Mar 12, 2026

Merge Queue Status

This pull request spent 15 seconds in the queue, including 2 seconds running CI.

Required conditions to merge

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.

drop minikube

2 participants