Skip to content

Conversation

@andyatmiami
Copy link
Contributor

@andyatmiami andyatmiami commented Nov 13, 2025

closes: #41
closes: #135

Introduce a comprehensive Tilt setup for streamlined local development of the Kubeflow Notebooks workspace components (controller, backend, and frontend).

Key features:

  • Orchestrated development workflow: Tiltfile manages the entire development lifecycle including cluster setup, dependency installation, Docker builds, and Kubernetes deployments

  • Automated infrastructure setup:

    • Kind cluster creation and verification via setup-kind.sh
    • Cert-manager installation via setup-cert-manager.sh
    • CRD installation with proper dependency ordering
  • Component integration:

    • Controller: Docker builds with code generation, CRD installation, and Kubernetes deployment with dev-specific overrides (USE_ISTIO=false)
    • Backend: Docker builds and Kubernetes deployment with port forwarding
    • Frontend: Local webpack dev server with hot reloading (not containerized for faster iteration)
  • Frontend Tilt support:

    • Environment-aware webpack configuration that loads .env.tilt when TILT_ENV=true
    • New start:tilt npm script for Tilt-specific development
    • Enables standalone frontend mode with proper backend proxy configuration
  • Developer experience improvements:

    • File watching with intelligent exclusions to prevent rebuild loops
    • Resource dependency management ensuring proper startup order
    • Optional frontend via ENABLE_FRONTEND environment variable
    • Comprehensive documentation in DEVELOPMENT.md
  • Hot reloading and live updates:

    • Frontend changes reflect immediately via webpack dev server
    • Controller/backend changes trigger automatic Docker rebuilds and redeployments
    • Port forwards configured for easy local access

This setup enables developers to iterate quickly on all components with minimal manual setup and configuration.

image

@google-oss-prow
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign thesuperzapper for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-oss-prow google-oss-prow bot added area/v2 area - version - kubeflow notebooks v2 size/XL labels Nov 13, 2025
@andyatmiami andyatmiami force-pushed the chore/full-tilt branch 2 times, most recently from 2447a64 to 4fb9f94 Compare November 13, 2025 20:16
Copy link

@paulovmr paulovmr left a comment

Choose a reason for hiding this comment

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

Great addition, @andyatmiami . Tested locally, it worked!

@andyatmiami andyatmiami marked this pull request as ready for review November 18, 2025 15:55
@andyatmiami
Copy link
Contributor Author

/ok-to-test

@paulovmr
Copy link

/retest

Copy link

@caponetto caponetto left a comment

Choose a reason for hiding this comment

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

A few comments inline :)

@andyatmiami andyatmiami force-pushed the chore/full-tilt branch 2 times, most recently from f2575fd to 292394e Compare November 20, 2025 17:57
closes: #41
closes: kubeflow#135

Introduce a comprehensive Tilt setup for streamlined local development
of the Kubeflow Notebooks workspace components (controller, backend,
and frontend).

Key features:

* Orchestrated development workflow: Tiltfile manages the entire
  development lifecycle including cluster setup, dependency installation,
  Docker builds, and Kubernetes deployments

* Automated infrastructure setup:
  - Kind cluster creation and verification via setup-kind.sh
  - Cert-manager installation via setup-cert-manager.sh
  - CRD installation with proper dependency ordering

* Component integration:
  - Controller: Docker builds with code generation, CRD installation,
    and Kubernetes deployment with dev-specific overrides (USE_ISTIO=false)
  - Backend: Docker builds and Kubernetes deployment with port forwarding
  - Frontend: Local webpack dev server with hot reloading (not containerized
    for faster iteration)

* Frontend Tilt support:
  - Environment-aware webpack configuration that loads .env.tilt when
    TILT_ENV=true
  - New start:tilt npm script for Tilt-specific development
  - Enables standalone frontend mode with proper backend proxy configuration

* Developer experience improvements:
  - File watching with intelligent exclusions to prevent rebuild loops
  - Resource dependency management ensuring proper startup order
  - Optional frontend via ENABLE_FRONTEND environment variable
  - Comprehensive documentation in DEVELOPMENT.md

* Hot reloading and live updates:
  - Frontend changes reflect immediately via webpack dev server
  - Controller/backend changes trigger automatic Docker rebuilds and
    redeployments
  - Port forwards configured for easy local access

This setup enables developers to iterate quickly on all components with minimal manual setup and configuration.

Signed-off-by: Andy Stoneberg <[email protected]>
@andyatmiami andyatmiami force-pushed the chore/full-tilt branch 3 times, most recently from a62701d to deefad4 Compare November 20, 2025 23:46
@google-oss-prow google-oss-prow bot added the area/backend area - related to backend components label Nov 20, 2025
Signed-off-by: Paulo Rego <[email protected]>

Signed-off-by: Andy Stoneberg <[email protected]>
@caponetto
Copy link

thank you, @andyatmiami!

/lgtm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/backend area - related to backend components area/frontend area - related to frontend components area/v2 area - version - kubeflow notebooks v2 lgtm ok-to-test size/XL

Projects

Status: Needs Triage

Development

Successfully merging this pull request may close these issues.

3 participants