120 lines
3.2 KiB
Plaintext
120 lines
3.2 KiB
Plaintext
# -*- 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,
|
|
)
|