# -*- mode: Python -*- # EntKube Tiltfile — Helm-based local Kubernetes development # # Prerequisites: # - Docker Desktop or Rancher Desktop # - k3d (recommended): k3d cluster create entkube --registry-create entkube-registry:0.0.0.0:5050 -p "8080:80@loadbalancer" # - Tilt: https://docs.tilt.dev/install.html # - Helm 3 # # Usage: # tilt up # # This watches source code, rebuilds Docker images, and redeploys via Helm. # Allow the k3d local registry allow_k8s_contexts(['k3d-entkube']) # Use the local registry created by k3d default_registry('localhost:5050') # Docker builds for each service — context is the repo root so COPY paths work docker_build( 'entkube/web', '.', dockerfile='src/EntKube.Web/Dockerfile', live_update=[ sync('src/EntKube.Web/', '/src/src/EntKube.Web/'), sync('src/EntKube.Web.Client/', '/src/src/EntKube.Web.Client/'), sync('src/EntKube.SharedKernel/', '/src/src/EntKube.SharedKernel/'), run('cd /src/src/EntKube.Web && dotnet build -c Release -o /app', trigger=['src/EntKube.Web/', 'src/EntKube.Web.Client/', 'src/EntKube.SharedKernel/']), ] ) docker_build( 'entkube/clusters', '.', dockerfile='src/EntKube.Clusters/Dockerfile', live_update=[ sync('src/EntKube.Clusters/', '/src/src/EntKube.Clusters/'), sync('src/EntKube.SharedKernel/', '/src/src/EntKube.SharedKernel/'), run('cd /src/src/EntKube.Clusters && dotnet build -c Release -o /app', trigger=['src/EntKube.Clusters/', 'src/EntKube.SharedKernel/']), ] ) docker_build( 'entkube/identity', '.', dockerfile='src/EntKube.Identity/Dockerfile', live_update=[ sync('src/EntKube.Identity/', '/src/src/EntKube.Identity/'), sync('src/EntKube.SharedKernel/', '/src/src/EntKube.SharedKernel/'), run('cd /src/src/EntKube.Identity && dotnet build -c Release -o /app', trigger=['src/EntKube.Identity/', 'src/EntKube.SharedKernel/']), ] ) docker_build( 'entkube/provisioning', '.', dockerfile='src/EntKube.Provisioning/Dockerfile', live_update=[ sync('src/EntKube.Provisioning/', '/src/src/EntKube.Provisioning/'), sync('src/EntKube.SharedKernel/', '/src/src/EntKube.SharedKernel/'), run('cd /src/src/EntKube.Provisioning && dotnet build -c Release -o /app', trigger=['src/EntKube.Provisioning/', 'src/EntKube.SharedKernel/']), ] ) docker_build( 'entkube/secrets', '.', dockerfile='src/EntKube.Secrets/Dockerfile', live_update=[ sync('src/EntKube.Secrets/', '/src/src/EntKube.Secrets/'), sync('src/EntKube.SharedKernel/', '/src/src/EntKube.SharedKernel/'), run('cd /src/src/EntKube.Secrets && dotnet build -c Release -o /app', trigger=['src/EntKube.Secrets/', 'src/EntKube.SharedKernel/']), ] ) # Deploy via Helm chart with dev values k8s_yaml(helm( 'Charts/entkube', name='entkube', namespace='default', values=['Charts/entkube/values-dev.yaml'], )) # Resource grouping for the Tilt UI k8s_resource('entkube-web', port_forwards='5000:5000', labels=['entkube']) k8s_resource('entkube-clusters', port_forwards='5010:5010', labels=['entkube']) k8s_resource('entkube-provisioning', port_forwards='5020:5020', labels=['entkube']) k8s_resource('entkube-identity', port_forwards='5030:5030', labels=['entkube']) k8s_resource('entkube-secrets', port_forwards='5040:5040', labels=['entkube'])