Skip to content

Set up local development environment #2

Description

@aktech

Context

Configure a local Kubernetes development environment for iterating on the Helm chart. Evaluate both DevContainers and Tilt approaches before deciding on the final setup.

Background

Two main approaches for local K8s development:

  • DevContainers: Containerized dev environment with all tools pre-installed. Used by nic-operator. Provides consistency across team, zero host setup.
  • Tilt: File watcher that auto-redeploys on changes. Provides faster iteration loop.

We should evaluate both before committing to one approach.

Tasks

  • Try DevContainers with nic-operator repo to understand the experience
  • Try Tilt with a simple Helm chart to understand the experience
  • Compare: setup complexity, iteration speed, CI compatibility
  • Decide on approach based on evaluation
  • Implement chosen approach:
    • If DevContainers: Create .devcontainer/devcontainer.json and post-install.sh
    • If Tilt: Create Tiltfile and setup scripts
    • If both: Implement DevContainers with Tilt installed inside
  • Create Makefile with common commands (k3d-up, k3d-down, install, upgrade, lint, logs)
  • Create .gitignore for generated files
  • Document setup in README

Evaluation Criteria

  • Setup time: How long for a new contributor to get started?
  • Iteration speed: How quickly can you see changes?
  • CI compatibility: Can we use the same setup in GitHub Actions?
  • Consistency with NIC ecosystem: Does it align with nic-operator? (if not then we should have a good reason for not to, as in if tilt provides a much better value)

Acceptance Criteria

  • New contributor can start developing within a few minutes
  • Chart changes can be tested locally
  • Approach documented in README

Depends on

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Size

    None yet

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions