Files

161 lines
7.4 KiB
Python

print('🚀 Deploying Speckle Server into a Kind Cluster via Tilt...')
# we limit tilt to run only on the kind cluster
allow_k8s_contexts(['kind-speckle-server'])
if k8s_context() != 'kind-speckle-server':
fail('Failing early as tilt should only ever connect to kind-speckle-server.')
# Install extensions
load('ext://helm_resource', 'helm_resource', 'helm_repo')
load('ext://k8s_yaml_glob', 'k8s_yaml_glob')
symbols = None
IS_LOAD_DOCKER = os.getenv('LOAD_DOCKER', "false") == "true"
if IS_LOAD_DOCKER:
symbols = load_dynamic('./../load-images.tiltfile')
else:
symbols = load_dynamic('./../build-images.tiltfile')
IMAGE_PREFIX = os.getenv('IMAGE_PREFIX', 'speckle')
# # Prepare the Speckle images
# # (builds the images or pulls them from remote)
speckle_image = symbols['speckle_image']
speckle_image('fileimport-service', None, IMAGE_PREFIX)
speckle_image('frontend-2', None, IMAGE_PREFIX)
speckle_image('ifc-import-service', None, IMAGE_PREFIX)
speckle_image('monitor-deployment', None, IMAGE_PREFIX)
speckle_image('preview-service', None, IMAGE_PREFIX)
speckle_image('server', None, IMAGE_PREFIX)
speckle_image('objects','server', IMAGE_PREFIX)
speckle_image('test-deployment', None, IMAGE_PREFIX)
speckle_image('webhook-service', None, IMAGE_PREFIX)
# Create namespaces
k8s_yaml_glob('./manifests/*.namespace.yaml')
# Install volumes
k8s_yaml('./manifests/postgres.pv.yaml')
k8s_yaml('./manifests/postgres.pvc.yaml')
k8s_yaml('./manifests/minio.pv.yaml')
k8s_yaml('./manifests/minio.pvc.yaml')
# Update CoreDNS to allow for local resolution of services internally (i.e. speckle.internal will be routed to nginx)
local(command='./scripts/coredns-up.sh')
# Install speckle pod-priority and secrets
k8s_yaml('./manifests/priorityclass.yaml')
k8s_yaml('./manifests/speckle-server.secret.yaml')
# Install charts
# Postgres 16.4 is packaged in chart 15.5.38
helm_resource('postgresql',
release_name='postgresql',
namespace='postgres',
chart='oci://registry-1.docker.io/bitnamicharts/postgresql',
flags=['--version=^15.5.38',
'--values=./values/postgres.values.yaml',
'--kube-context=kind-speckle-server'],
deps=['./values/postgres.values.yaml'],
labels=['speckle-dependencies'])
helm_resource('minio',
release_name='minio',
namespace='minio',
chart='oci://registry-1.docker.io/bitnamicharts/minio',
flags=['--version=^12.0.0',
'--values=./values/minio.values.yaml',
'--kube-context=kind-speckle-server'],
deps=['./values/minio.values.yaml'],
labels=['speckle-dependencies'])
helm_resource('valkey',
release_name='valkey',
namespace='valkey',
chart='oci://registry-1.docker.io/bitnamicharts/valkey',
flags=['--version=3.0.8',
'--values=./values/valkey.values.yaml',
'--kube-context=kind-speckle-server'],
deps=['./values/valkey.values.yaml'],
labels=['speckle-dependencies'])
#FIXME this helm chart does not deploy any containers, so tilt incorrectly believes it never gets to a final state
# helm_repo('prometheus-repo',
# 'https://prometheus-community.github.io/helm-charts')
# helm_resource('prometheus',
# release_name='prometheus-operator-crds',
# namespace='prometheus',
# resource_deps=['prometheus-repo'],
# chart='prometheus-repo/prometheus-operator-crds',
# deps=['./values/prometheus-operator-crds.values.yaml'],
# flags=['--version=^7.0.0',
# '--values=./values/prometheus-operator-crds.values.yaml',
# '--kube-context=kind-speckle-server'])
helm_repo('ingress-nginx-repo',
'https://kubernetes.github.io/ingress-nginx')
#nginx should be deployed as the last dependency as it opens ports to services
#it expects these services to exist, which are created by the helm charts above
helm_resource('ingress-nginx',
release_name='ingress-nginx',
namespace='ingress-nginx',
chart='ingress-nginx-repo/ingress-nginx',
flags=['--version=4.8.0',
'--values=./values/nginx.values.yaml',
'--kube-context=kind-speckle-server'],
deps=['./values/nginx.values.yaml'],
resource_deps=['postgresql', 'minio', 'valkey', 'ingress-nginx-repo'],
labels=['speckle-dependencies'])
# Uncomment the below, and comment out the other helm_resource('speckle-server'...) to use the speckle-server helm chart
# helm_resource('speckle-server',
# release_name='speckle-server',
# namespace='speckle-server',
# chart='oci://registry-1.docker.io/speckle/speckle-server',
# deps=['./values/speckle-server.values.yaml'],
# resource_deps=['postgresql', 'minio', 'valkey', 'ingress-nginx','speckle-server-repo'],
# flags=['--values=./values/speckle-server.values.yaml', '--devel'],
# labels=['speckle-server'])
helm_resource('speckle-server',
release_name='speckle-server',
namespace='speckle-server',
chart='./../../../utils/helm/speckle-server',
flags=['--values=./values/speckle-server.values.yaml',
'--kube-context=kind-speckle-server'],
image_deps=[
'speckle/speckle-fileimport-service',
'speckle/speckle-frontend-2',
'speckle/speckle-ifc-import-service',
'speckle/speckle-monitor-deployment',
'speckle/speckle-preview-service',
'speckle/speckle-server',
'speckle/speckle-objects',
'speckle/speckle-test-deployment',
'speckle/speckle-webhook-service',
],
image_keys=[
'fileimport_service.image',
'frontend_2.image',
'ifc_import_service.image',
'monitor.image',
'preview_service.image',
'server.image',
'objects.image',
'test.image',
'webhook_service.image',
],
deps=['../../../utils/helm', './values/speckle-server.values.yaml'],
resource_deps=['postgresql', 'minio', 'valkey', 'ingress-nginx'],
labels=['speckle-server'])
# TODO this is not yet working as it is expecting the updated version of the test container which is not yet released as of 2.17.16
# local_resource('speckle-server-helm-chart-test',
# # HACK until https://github.com/helm/helm/issues/11236 is fixed. Then replace with --logs flag.
# cmd='helm test speckle-server --namespace=speckle-server --kube-context=kind-speckle-server || \
# (kubectl describe pod --selector="job-name=speckle-test" --namespace speckle-server --context=kind-speckle-server && \
# kubectl logs -n speckle-server -l "job-name=speckle-test" -c test-deployment --context kind-speckle-server --since=0s && \
# exit 1)',
# resource_deps=['speckle-server'])