print(""" ----------------------------------------------------------------- ✨ Starting up Barretthousen stack ----------------------------------------------------------------- """.strip()) load('ext://helm_resource', 'helm_resource', 'helm_repo') load('ext://deployment', 'deployment_create') load('ext://restart_process', 'docker_build_with_restart') helm_repo('bitnami', 'https://charts.bitnami.com/bitnami', labels=["9-repos"]) helm_repo('traefik', 'https://traefik.github.io/charts', labels=["9-repos"]) helm_repo('grafana', 'https://grafana.github.io/helm-charts', labels=["9-repos"]) helm_resource( 'ingress', 'traefik/traefik', flags=[ '--set', 'logs.access.enabled=true' ], resource_deps=['traefik'], port_forwards=[ port_forward(8000, 8000, name='Barretthousen'), port_forward(9000, 9000, name='Traefik', link_path='/dashboard/#/') ], labels=["1-ingress"] ) helm_resource( 'postgres', 'bitnami/postgresql', resource_deps=['bitnami'], flags=[ '--set', 'fullnameOverride=bh-db', '--set', 'auth.enablePostgresUser=true', '--set', 'auth.postgresPassword=bh-admin', '--set', 'auth.database=bh', ], port_forwards=[ port_forward(5432, 5432, name='BH DB')], labels=["9-data"]) def bh_backend_service(service="", port_forwards=[], migrateDB=False, devMode=True, labels=['2-services'], deps=['postgres']): local_resource( '{}-go-compile'.format(service), 'CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -gcflags=\'-N -l\' -o .bin/{}-debug ./src/{}'.format(service, service), deps=['./src/{}'.format(service), './src/lib'], resource_deps=deps ) entry_cmd = [ '/go/bin/dlv', '--headless', '--listen=0.0.0.0:2345', '--api-version=2', '--log', '--accept-multiclient', '--log-output=rpc', 'exec', '/opt/{}-debug'.format(service), '--continue' ] if migrateDB: entry_cmd += ['--', '-migrate'] docker_build_with_restart( ref="barretthousen/service-{}".format(service), dockerfile="./src/Dockerfile.dev-backend", context=".", entrypoint=entry_cmd, build_args={ "service": service }, trigger = [ './.bin/{}-debug'.format(service) ], only = [ './.bin/{}-debug'.format(service) ], live_update=[ sync('./.bin', '/opt') ] ) k8s_resource( workload='local-{}'.format(service), port_forwards=port_forwards, labels=labels, resource_deps=deps, ) bh_backend_service(service="catalog", migrateDB=True, port_forwards=["5002:5001", "2346:2345"]) bh_backend_service(service="runner", migrateDB=True, port_forwards=[5001, 2345]) # bh_service(service="proxy-web", port_forwards=["8081:80"], deps=['ingress', 'local-catalog']) bh_backend_service(service="proxy-admin", port_forwards=[ port_forward(8082, 80, name="HTTP API @ localhost:8082") ], deps=['ingress']) bh_backend_service(service="proxy-client", port_forwards=[ port_forward(8081, 80, name="HTTP API @ localhost:8081") ], deps=['ingress']) local_resource( 'web-client', dir='./src/web-client', cmd='npm i', serve_dir='./src/web-client', serve_cmd='npm run dev', ignore=['./src/web-client/src'], deps=[ './src/web-client/package.json', './src/web-client/svelte.config.js', './src/web-client/vite.config.ts' ], readiness_probe=probe(10, 2, 10, 1, 3, http_get=http_get_action(5173, 'localhost', 'http')), links=[ link(url='http://localhost:5173', name='Web Client') ], labels=['2-services'] ) k8s_yaml( kustomize("./env/local") ) k8s_resource( workload='ingress', labels='1-ingress', links=[ link(url='http://admin.localhost:8000', name='Admin Panel'), ] ) # helm_resource( # 'loki-stack', # 'grafana/loki-stack', # resource_deps=['grafana'], # flags=[ # '--set', 'fluent-bit.enabled=false', # '--set', 'promtail.enabled=false', # '--set', 'loki.enabled=false', # ], # port_forwards=["3000:80"], # labels=["9-monitoring"])