228 lines
6.8 KiB
Plaintext
228 lines
6.8 KiB
Plaintext
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_repo('kafka-ui-github', 'https://provectus.github.io/kafka-ui', labels=["9-repos"])
|
|
|
|
helm_resource(
|
|
'ingress',
|
|
'traefik/traefik',
|
|
namespace='barretthousen-local',
|
|
flags=[
|
|
'--set', 'logs.access.enabled=true'
|
|
],
|
|
port_forwards=[
|
|
port_forward(8000, 8000, name="Traefik HTTP :8000"),
|
|
port_forward(9000, 9000, name='Traefik Dashboard', link_path='/dashboard/#/')
|
|
],
|
|
resource_deps=['traefik'],
|
|
labels=["1-ingress"]
|
|
)
|
|
|
|
k8s_resource(
|
|
workload='ingress',
|
|
labels='1-ingress',
|
|
links=[
|
|
link(url='http://admin.localhost:8000', name='admin.localhost'),
|
|
link(url='http://bh.localhost:8000', name='bh.localhost'),
|
|
]
|
|
)
|
|
|
|
helm_resource(
|
|
'postgres',
|
|
'bitnami/postgresql',
|
|
namespace='barretthousen-local',
|
|
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')],
|
|
resource_deps=['bitnami'],
|
|
labels=["9-data"]
|
|
)
|
|
|
|
helm_resource(
|
|
'kafka',
|
|
'bitnami/kafka',
|
|
namespace='barretthousen-local',
|
|
flags=[
|
|
'--set', 'numIoThreads=1',
|
|
'--set', 'numNetworkThreads=1',
|
|
],
|
|
port_forwards=[port_forward(9092, 9092, name='kafka')],
|
|
resource_deps=['bitnami'],
|
|
labels=["9-data"]
|
|
)
|
|
|
|
helm_resource(
|
|
'kafka-ui',
|
|
'kafka-ui-github/kafka-ui',
|
|
namespace='barretthousen-local',
|
|
flags=[
|
|
'--set', 'envs.config.KAFKA_CLUSTERS_0_NAME=bh-kafka',
|
|
'--set', 'envs.config.KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092'
|
|
],
|
|
port_forwards=[port_forward(9090, 8080, name='kafka-ui')],
|
|
resource_deps=['kafka'],
|
|
labels=["9-data"]
|
|
)
|
|
|
|
def bh_client(service="", port_forwards=[], labels=['2-services'], deps=['ingress']):
|
|
# docker_build('example-nodejs-image', '.',
|
|
# build_args={'node_env': 'development'},
|
|
# entrypoint='yarn run nodemon --ext js,mustache /app/index.js',
|
|
# live_update=[
|
|
# sync('.', '/app'),
|
|
# run('cd /app && yarn install', trigger=['./package.json', './yarn.lock']),
|
|
|
|
# # if all that changed was start-time.txt, make sure the server
|
|
# # reloads so that it will reflect the new startup time
|
|
# run('touch /app/index.js', trigger='./start-time.txt'),
|
|
|
|
# # add a congrats message!
|
|
# run('sed -i "s/Hello cats!/{}/g" /app/views/index.mustache'.
|
|
# format(congrats)),
|
|
# ])
|
|
|
|
basepath = './src/{}-client'.format(service)
|
|
docker_build(
|
|
ref='barretthousen/client-{}-client'.format(service),
|
|
context=basepath,
|
|
dockerfile=basepath +'/Dockerfile.dev-frontend'.format(service),
|
|
target='development',
|
|
entrypoint='vite dev --port=80 --host=0.0.0.0 --strictPort --logLevel info',
|
|
live_update=[
|
|
sync(basepath + '/src', '/opt/{}-client/src'.format(service)),
|
|
sync(basepath + '/static', '/opt/{}-client/static'.format(service)),
|
|
run('cd {} && npm install'.format(basepath), trigger=[basepath+'/package.json', basepath+'/package.lock.json'])
|
|
]
|
|
)
|
|
|
|
k8s_resource(
|
|
workload='{}-client-local'.format(service),
|
|
port_forwards=port_forwards,
|
|
labels=['2-services'],
|
|
resource_deps=deps
|
|
)
|
|
|
|
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 "all=-N -l" -o .bin/{}-debug ./src/{}'.format(service, service),
|
|
deps=['./src/{}'.format(service), './src/lib'],
|
|
resource_deps=deps,
|
|
labels=['3-compilation']
|
|
)
|
|
|
|
# complains about grpc port still being in use, so maybe the service isn't exiting cleanly
|
|
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),
|
|
'./src/runner',
|
|
'./src/catalog',
|
|
'./src/proxy-admin',
|
|
'./src/proxy-client',
|
|
'./src/lib'
|
|
],
|
|
live_update=[
|
|
sync('./.bin', '/opt'),
|
|
sync('./src', '/go/src'),
|
|
]
|
|
)
|
|
|
|
k8s_resource(
|
|
workload='{}-local'.format(service),
|
|
port_forwards=port_forwards,
|
|
labels=labels,
|
|
resource_deps=deps,
|
|
)
|
|
|
|
|
|
k8s_yaml(
|
|
kustomize("./env/local")
|
|
)
|
|
|
|
k8s_resource(
|
|
workload='runner-sync-local',
|
|
labels='2-services'
|
|
)
|
|
|
|
|
|
|
|
bh_backend_service(service="runner", migrateDB=True, port_forwards=[
|
|
port_forward(2345, name='Delve port')
|
|
])
|
|
|
|
bh_backend_service(service="catalog", migrateDB=True, port_forwards=[
|
|
port_forward(2346, 2345, name='Delve port')
|
|
], deps=["postgres"])
|
|
|
|
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'])
|
|
|
|
bh_client(service='web')
|
|
bh_client(service='admin')
|
|
|
|
|
|
|
|
# local_resource(
|
|
# 'dev-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(8080, 'localhost', 'http')),
|
|
# links=[
|
|
# link(url='http://localhost:8080', name='Web Client')
|
|
# ],
|
|
# labels=['2-services']
|
|
# )
|