first claude draft
This commit is contained in:
119
Tiltfile
Normal file
119
Tiltfile
Normal file
@@ -0,0 +1,119 @@
|
||||
# -*- mode: Python -*-
|
||||
# Tiltfile for sysmonstm - local Kubernetes development
|
||||
|
||||
# Load extensions
|
||||
load('ext://restart_process', 'docker_build_with_restart')
|
||||
load('ext://namespace', 'namespace_create')
|
||||
|
||||
# Configuration
|
||||
config.define_bool("no-volumes")
|
||||
cfg = config.parse()
|
||||
no_volumes = cfg.get("no-volumes", False)
|
||||
|
||||
# Create namespace
|
||||
namespace_create('sysmonstm')
|
||||
k8s_yaml(kustomize('k8s/overlays/local'))
|
||||
|
||||
# ============================================================================
|
||||
# Docker builds with live reload
|
||||
# ============================================================================
|
||||
|
||||
# Aggregator service
|
||||
docker_build(
|
||||
'sysmonstm-aggregator',
|
||||
context='.',
|
||||
dockerfile='services/aggregator/Dockerfile',
|
||||
target='development',
|
||||
live_update=[
|
||||
sync('./services/aggregator', '/app/services/aggregator'),
|
||||
sync('./shared', '/app/shared'),
|
||||
sync('./proto', '/app/proto'),
|
||||
],
|
||||
)
|
||||
|
||||
# Gateway service
|
||||
docker_build(
|
||||
'sysmonstm-gateway',
|
||||
context='.',
|
||||
dockerfile='services/gateway/Dockerfile',
|
||||
target='development',
|
||||
live_update=[
|
||||
sync('./services/gateway', '/app/services/gateway'),
|
||||
sync('./shared', '/app/shared'),
|
||||
sync('./proto', '/app/proto'),
|
||||
sync('./web', '/app/web'),
|
||||
],
|
||||
)
|
||||
|
||||
# Alerts service
|
||||
docker_build(
|
||||
'sysmonstm-alerts',
|
||||
context='.',
|
||||
dockerfile='services/alerts/Dockerfile',
|
||||
target='development',
|
||||
live_update=[
|
||||
sync('./services/alerts', '/app/services/alerts'),
|
||||
sync('./shared', '/app/shared'),
|
||||
],
|
||||
)
|
||||
|
||||
# ============================================================================
|
||||
# Resource configuration
|
||||
# ============================================================================
|
||||
|
||||
# Infrastructure
|
||||
k8s_resource('redis', labels=['infra'])
|
||||
k8s_resource('timescaledb', labels=['infra'])
|
||||
|
||||
# Application services
|
||||
k8s_resource(
|
||||
'aggregator',
|
||||
labels=['app'],
|
||||
resource_deps=['redis', 'timescaledb'],
|
||||
port_forwards=['50051:50051'],
|
||||
)
|
||||
|
||||
k8s_resource(
|
||||
'gateway',
|
||||
labels=['app'],
|
||||
resource_deps=['aggregator', 'redis'],
|
||||
port_forwards=['8000:8000'],
|
||||
)
|
||||
|
||||
k8s_resource(
|
||||
'alerts',
|
||||
labels=['app'],
|
||||
resource_deps=['redis', 'timescaledb'],
|
||||
)
|
||||
|
||||
# ============================================================================
|
||||
# Local resources (optional - for running collector locally)
|
||||
# ============================================================================
|
||||
|
||||
local_resource(
|
||||
'collector-local',
|
||||
serve_cmd='cd services/collector && python main.py',
|
||||
deps=['services/collector', 'shared'],
|
||||
resource_deps=['aggregator'],
|
||||
labels=['collector'],
|
||||
auto_init=False, # Don't start automatically
|
||||
env={
|
||||
'AGGREGATOR_URL': 'localhost:50051',
|
||||
'MACHINE_ID': 'tilt-dev',
|
||||
'COLLECTION_INTERVAL': '5',
|
||||
'LOG_LEVEL': 'DEBUG',
|
||||
'PYTHONPATH': '.',
|
||||
},
|
||||
)
|
||||
|
||||
# ============================================================================
|
||||
# Convenience buttons
|
||||
# ============================================================================
|
||||
|
||||
local_resource(
|
||||
'proto-gen',
|
||||
cmd='python -m grpc_tools.protoc -I./proto --python_out=./shared --grpc_python_out=./shared ./proto/metrics.proto',
|
||||
deps=['proto/metrics.proto'],
|
||||
labels=['tools'],
|
||||
auto_init=False,
|
||||
)
|
||||
Reference in New Issue
Block a user