Explorar o código

Update tiltfile for hot-reload with config (#2923)

* added hot reloading of config

* hot reload

* hot reload

* changed binary runs
Stefan McShane %!s(int64=3) %!d(string=hai) anos
pai
achega
7be83785eb
Modificáronse 2 ficheiros con 44 adicións e 44 borrados
  1. 44 34
      Tiltfile
  2. 0 10
      zarf/helm/kustomization.yaml

+ 44 - 34
Tiltfile

@@ -16,6 +16,35 @@ build_args = "GOOS=linux GOARCH=arm64"
 if os.getenv("PLATFORM") == "amd64":
     build_args = "GOOS=linux GOARCH=amd64"
 
+allow_k8s_contexts('kind-porter')
+cluster = str(local('kubectl config current-context')).strip()
+if (cluster.startswith("kind-")):
+    install = kustomize('zarf/helm', flags=["--enable-helm"])
+    decoded = decode_yaml_stream(install)
+    for d in decoded:
+        if d.get('kind') == 'Deployment':
+            if "securityContext" in d['spec']['template']['spec']:
+                d['spec']['template']['spec'].pop('securityContext')
+            for c in d['spec']['template']['spec']['containers']:
+                if "securityContext" in c:
+                    c.pop('securityContext')
+
+    updated_install = encode_yaml_stream(decoded)
+
+    k8s_yaml(updated_install)
+
+    k8s_resource(
+        workload='porter-server-web',
+        port_forwards="8080:8080",
+        labels=["porter"],
+        resource_deps=["porter-binary"],
+    )
+else:
+    local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
+    exit()
+
+watch_file('zarf/helm/.server.env')
+
 ## Build binary locally for faster devexp
 local_resource(
   name='porter-binary',
@@ -29,7 +58,7 @@ local_resource(
     "pkg",
   ],
   resource_deps=["postgresql"],
-  labels=["porter"]
+  labels=["z_binaries"]
 )
 
 docker_build_with_restart(
@@ -48,6 +77,16 @@ docker_build_with_restart(
     ], 
 ) 
 
+local_resource(
+  name='reload-server-config',
+  cmd='kubectl rollout restart deployment porter-server-web',
+  deps=[
+    "zarf/helm/.server.env"
+  ],
+  labels=["porter"],
+  resource_deps=["porter-server-web"]
+)
+
 # Frontend
 local_resource(
     name="porter-dashboard",
@@ -70,43 +109,14 @@ local_resource(
     name="migrations-binary",
     cmd='''GOWORK=off CGO_ENABLED=0 %s go build -mod vendor -gcflags '-N -l' -tags ee -o ./bin/migrate ./cmd/migrate/main.go ./cmd/migrate/migrate_ee.go''' % build_args,
     resource_deps=["postgresql"],
-    labels=["porter"],
+    labels=["z_binaries"],
 )
 local_resource(
     name="run-migrations",
     cmd='''kubectl exec -it deploy/porter-server-web -- /app/migrate''',
-    resource_deps=["migrations-binary", "porter-binary"],
+    resource_deps=["migrations-binary", "porter-binary", "porter-server-web", "postgresql"],
+    deps=["postgresql"],
     labels=["porter"],
     trigger_mode=TRIGGER_MODE_MANUAL,
+    auto_init=False
 )
-
-# Config
-local_resource(
-    name="reload-config",
-    cmd='''kubectl rollout restart deploy/porter-server-web''',
-    resource_deps=["zarf/helm"],
-    labels=["porter"],
-    trigger_mode=TRIGGER_MODE_MANUAL,
-)
-
-
-allow_k8s_contexts('kind-porter')
-
-cluster = str(local('kubectl config current-context')).strip()
-if (cluster.startswith("kind-")):
-    install = kustomize('zarf/helm', flags=["--enable-helm"])
-    decoded = decode_yaml_stream(install)
-    for d in decoded:
-        if d.get('kind') == 'Deployment':
-            if "securityContext" in d['spec']['template']['spec']:
-                d['spec']['template']['spec'].pop('securityContext')
-            for c in d['spec']['template']['spec']['containers']:
-                if "securityContext" in c:
-                    c.pop('securityContext')
-
-    updated_install = encode_yaml_stream(decoded)
-    k8s_yaml(updated_install)
-    k8s_resource(workload='porter-server-web', port_forwards="8080:8080", labels=["porter"])
-else:
-    local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
-    exit()

+ 0 - 10
zarf/helm/kustomization.yaml

@@ -27,16 +27,6 @@ patchesStrategicMerge:
           envFrom:
           - configMapRef: 
               name: porter-server-env
-- |-
-  apiVersion: apps/v1
-  kind: Deployment
-  metadata:
-    name: porter-server-web
-  spec:
-    template:
-      spec:
-        containers:
-        - name: web
           volumeMounts:
           - mountPath: /app/ssh
             name: ssh-keys