Add Kind dev environment setup skill and slash command#2307
Add Kind dev environment setup skill and slash command#2307google-oss-prow[bot] merged 5 commits intokubeflow:mainfrom
Conversation
|
oci-transfer: ARM64 image build + Kind load for async-upload jobs - this is not required now, because we have different image upstream, midstream and downstream |
jonburdo
left a comment
There was a problem hiding this comment.
This is really cool @manaswinidas! I love all the work to make our dev setups more manageable.
Just my 2 cents: I wonder how much of this can be made equally accessible to humans and agents via scripts and added docs files. This could also help streamline the command files a bit!
| colima start | ||
| kind get clusters | grep -q '^model-registry$' || kind create cluster --name model-registry | ||
| kubectl config use-context kind-model-registry | ||
| cd devenv && make tilt-up |
There was a problem hiding this comment.
Should sequences of commands like this be put into scripts instead? I think this could help with:
- humans being able to easily run the same commands quickly
- configuration and less hard-coding (i.e. using a different port for a particular service)
- deterministic use - AI tools can generally read a script and run an adjusted version if needed, but in a typical scenario, it can be helpful to have consistency and know what exactly you expect to be run
|
|
||
| ## Stop Frontend (port 9000) | ||
| ``` | ||
| lsof -ti:9000 | xargs kill -9 2>/dev/null || true |
There was a problem hiding this comment.
What if I've started some other service on 9000 and started the frontend on 9001? My AI agent may or may not be aware if it. Might be worth making this configurable
| - **S3 key must be a directory prefix** (e.g. `models/dir/`), not a full file path. Using the exact file path causes an EBUSY error because `os.path.relpath` resolves to `.`. | ||
| - **Destination URI must be an OCI reference** (`quay.io/org/repo:tag`), not a web URL (`https://quay.io/repository/...`). The upload code prepends `docker://`. | ||
| - Sample job manifests are in `jobs/async-upload/samples/` (`create_model_example.yaml`, `create_version_example.yaml`, `sample_job_s3_to_oci.yaml`). |
There was a problem hiding this comment.
Some of the general info in here is great for human and agents to see. I wonder if some of this should go in docs files and then skills should point to the relevant files - just an idea
| # Claude code | ||
| CLAUDE.md | ||
| .claude/ | ||
| .claude/settings.json |
There was a problem hiding this comment.
This will cause us to start tracking everything under .claude except for settings.json. Correct me if I'm wrong, but I think we still want default to ignoring things under .claude and (and probably .cursor) and opt-in to certain files and dirs. I also think we probably do want to track .claude/settings.json (for shared settings) but ignore .claude/settings.local.json (personal settings) which should be possible with something like:
.claude/*
!.claude/commands/
!.claude/settings.json|
One other thing to consider is how we tend to do these things more broadly in |
tarilabs
left a comment
There was a problem hiding this comment.
thank you for this PR it raises important questions;
I would advise that before adding .claude and .cursor directories we check with the Kubeflow community/KSC whether this is allowed/feasible, and as a WG that we want really to proceed in this direction.
Afaik Copilot is a vetted AI assisted tool in CNCF, but I'm unsure how these claude/copilot Skills would be received giving are specific?
We could safely add AGENTS.md and symbolic link CLAUDE.md to it, because other repos are doing.
Personally, I believe the implementation of these 2 skill seems a bit over reliant on text file when we have already scripts and Make target to do analogously in CI/CD; my2c
|
|
||
| ## Prerequisites | ||
|
|
||
| - Docker and Colima installed |
|
|
||
| ## Arguments | ||
|
|
||
| Prerequisites: Docker, Colima, Kind, kubectl, Go >= 1.25.7, Node.js >= 22.0.0 (Tilt is auto-downloaded by `make tilt-up`). |
There was a problem hiding this comment.
is it truly requiring Docker and Colima?
Signed-off-by: manaswinidas <dasmanaswini10@gmail.com>
…amespace Signed-off-by: manaswinidas <dasmanaswini10@gmail.com>
Signed-off-by: manaswinidas <dasmanaswini10@gmail.com>
Signed-off-by: manaswinidas <dasmanaswini10@gmail.com>
59978f2 to
a8307a0
Compare
|
/lgtm @manaswinidas feel free to unhold if you're ready to merge this! I'm happy to re-approve if you do have any last changes :) |
Co-authored-by: Paul Boyd <paul@pboyd.io> Signed-off-by: Manaswini Das <dasmanaswini10@gmail.com>
|
This is good to go now - @jonburdo can you add /lgtm again ? |
|
/lgtm I'm excited to have this! Thanks for working on it @manaswinidas :) |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jonburdo The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/unhold |
Description
Adds a reusable
/kind-cluster-setupslash command (for both Cursor and Claude Code) and a Cursor agent skill that automates local Kind cluster setup for model-registry UI development.The command supports optional components via arguments:
Core: Colima + Tilt + BFF + Frontend (always runs)
catalog / perf-data: Deploy Model Catalog with demo performance data overlay
minio: Deploy MinIO S3 storage for testing transfer jobs
oci-transfer: ARM64 image build + Kind load for async-upload jobs
real-k8s: Use real K8s client instead of mock
all: Everything
Also includes a troubleshooting table covering common issues (port conflicts, ARM64 image pulls, S3 key format, OCI reference format, envtest lock errors).
How Has This Been Tested?
Tested by running
/kind-cluster-setupin Cursor chat and verifying it follows the skill instructions. Verified all three core terminals start correctly:Infrastructure:
colima startthencd devenv && ./bin/tilt upBFF:
cd clients/ui/bff && go run ./cmd --port=4000 --dev-mode --dev-mode-model-registry-port=8080 --dev-mode-catalog-port=8082 --deployment-mode=standalone --mock-k8s-clientFrontend:
cd clients/ui/frontend && DEPLOYMENT_MODE=standalone STYLE_THEME=patternfly npm run start:devAlso verified optional components work as documented:
catalog:./scripts/deploy_catalog_demo_on_kind.shdeploys successfullyminio: MinIO deploys and bucket creation succeedsoci-transfer: ARM64 image builds and loads into KindTest Impact
No production code changes. Only adds developer tooling (skills and commands).
Merge criteria:
DCOcheck)ok-to-testhas been added to the PR.If you have UI changes