# Local Development Environment Design

## Overview

Local dev environment for cluster-service-ng using kind + mock Dataplane Manager.

## Architecture

```
┌─────────────────────────────────────────────────────────────────────┐
│                          Host Machine                                │
│                                                                      │
│  ┌───────────────────┐  ┌───────────────────┐                       │
│  │ cluster-service   │  │    executor       │  ← go run locally     │
│  │   (go run .)      │  │   (go run .)      │                       │
│  └─────────┬─────────┘  └─────────┬─────────┘                       │
│            │ gRPC                 │ gRPC                            │
│            ▼                      ▼                                  │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │                docker-compose network                         │   │
│  │  ┌────────────┐  ┌────────────┐  ┌───────────────────────┐   │   │
│  │  │   MySQL    │  │  Mock-DPM  │  │     kind cluster      │   │   │
│  │  │   :3306    │  │   :10001   │  │  (K8s API + CRDs)     │   │   │
│  │  └────────────┘  └────────────┘  └───────────────────────┘   │   │
│  └──────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
```

## Components

| Component | Location | Purpose |
|-----------|----------|---------|
| Mock DPM | `hack/mock-dpm/` | Mock Dataplane Manager gRPC service |
| Config | `hack/local-dev/config.yaml` | Service configuration |
| Kind | `hack/local-dev/kind-config.yaml` | K8s cluster setup |
| Scripts | `hack/local-dev/scripts/` | Start/test scripts |

## Quick Start

```bash
cd hack/local-dev && make start
```

## Mock DPM Services

| Service | Mock Strategy |
|---------|---------------|
| DataPlaneService | In-memory storage, auto-create dataplanes |
| BucketService | Return success, store in memory |
| LoadBalancerService | In-memory state simulation |
| PrivateLinkService | Return fixed mock data |

## Configuration

```yaml
server:
  region: local-dev
  dev:
    mockConfigCenter: true    # Use mock config center
  image:
    registry: docker.io
    repoPrefix: pingcap
```

## Related Files

- `hack/local-dev/README.md` - Detailed usage guide
- `hack/mock-dpm/` - Mock service implementation
