|
| 1 | +load("ext://restart_process", "docker_build_with_restart") |
| 2 | + |
| 3 | +load_dynamic("./configs/tiltfiles/Tiltfile.setup") |
| 4 | + |
| 5 | +config.define_string_list("services") |
| 6 | + |
| 7 | +parsed_config = config.parse() |
| 8 | + |
| 9 | +for service in parsed_config.get("services", []): |
| 10 | + load_dynamic("./configs/tiltfiles/Tiltfile.%s" % (service)) |
| 11 | + |
| 12 | +manifests = kustomize("../config/default") |
| 13 | + |
| 14 | +objects = decode_yaml_stream(manifests) |
| 15 | + |
| 16 | +for o in objects: |
| 17 | + if o["kind"] == "Deployment" and o.get("metadata").get("name") in ["workspace-controller-controller-manager"]: |
| 18 | + o["spec"]["template"]["spec"]["securityContext"] = {"runAsNonRoot": False, "readOnlyRootFilesystem": False} |
| 19 | + o["spec"]["template"]["spec"]["containers"][0]["imagePullPolicy"] = "Always" |
| 20 | + |
| 21 | +overridden_manifests = encode_yaml_stream(objects) |
| 22 | + |
| 23 | +k8s_yaml(overridden_manifests, allow_duplicates=True) |
| 24 | + |
| 25 | +local_resource( |
| 26 | + "cert-manager-req-check", |
| 27 | + serve_cmd="sleep infinity", |
| 28 | + labels="requirements", |
| 29 | + readiness_probe=probe( |
| 30 | + exec=exec_action( |
| 31 | + command=["/bin/sh", "-c", "./bin/cmctl check api"] |
| 32 | + ), initial_delay_secs=5, timeout_secs=60 |
| 33 | + ) |
| 34 | +) |
| 35 | + |
| 36 | +k8s_resource( |
| 37 | + new_name="certs", |
| 38 | + objects=[ |
| 39 | + "workspace-controller-serving-cert:certificate", |
| 40 | + "workspace-controller-selfsigned-issuer:issuer" |
| 41 | + ], |
| 42 | + labels="controller", |
| 43 | + resource_deps=[ |
| 44 | + "controller-namespace", |
| 45 | + "cert-manager-req-check" |
| 46 | + ] |
| 47 | +) |
| 48 | + |
| 49 | +k8s_resource( |
| 50 | + new_name="reqs", |
| 51 | + objects=[ |
| 52 | + "workspace-controller-controller-manager:serviceaccount", |
| 53 | + "workspace-controller-leader-election-role:role", |
| 54 | + "workspace-controller-manager-role:clusterrole", |
| 55 | + "workspace-controller-workspace-editor-role:clusterrole", |
| 56 | + "workspace-controller-workspace-viewer-role:clusterrole", |
| 57 | + "workspace-controller-workspacekind-editor-role:clusterrole", |
| 58 | + "workspace-controller-workspacekind-viewer-role:clusterrole", |
| 59 | + "workspace-controller-leader-election-rolebinding:rolebinding", |
| 60 | + "workspace-controller-manager-rolebinding:clusterrolebinding", |
| 61 | + "workspace-controller-validating-webhook-configuration:validatingwebhookconfiguration" |
| 62 | + ], |
| 63 | + labels="controller", |
| 64 | + resource_deps=[ |
| 65 | + "controller-namespace" |
| 66 | + ] |
| 67 | +) |
| 68 | + |
| 69 | +k8s_resource( |
| 70 | + new_name="crds", |
| 71 | + objects=[ |
| 72 | + "workspacekinds.kubeflow.org:customresourcedefinition", |
| 73 | + "workspaces.kubeflow.org:customresourcedefinition" |
| 74 | + ], |
| 75 | + labels="controller", |
| 76 | + resource_deps=[ |
| 77 | + "controller-namespace", |
| 78 | + ] |
| 79 | +) |
| 80 | + |
| 81 | +k8s_resource( |
| 82 | + new_name="controller-namespace", |
| 83 | + objects=["workspace-controller-system:Namespace:default"], |
| 84 | + labels="requirements" |
| 85 | +) |
| 86 | + |
| 87 | +k8s_resource( |
| 88 | + workload="workspace-controller-controller-manager", |
| 89 | + new_name="controller", |
| 90 | + labels="controller", |
| 91 | + resource_deps=[ |
| 92 | + "controller-namespace", |
| 93 | + "cert-manager-req-check", |
| 94 | + "certs" |
| 95 | + ] |
| 96 | +) |
| 97 | + |
| 98 | +local_resource( |
| 99 | + "manager-bin", |
| 100 | + "CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/manager cmd/main.go", |
| 101 | + dir = "../", |
| 102 | + deps = [ |
| 103 | + "../cmd", |
| 104 | + "../internal", |
| 105 | + "../go.mod", |
| 106 | + "../go.sum", |
| 107 | + ], |
| 108 | + labels="controller", |
| 109 | +) |
| 110 | + |
| 111 | +docker_build_with_restart( |
| 112 | + "ghcr.io/kubeflow/notebooks/workspace-controller", |
| 113 | + context = "../", |
| 114 | + dockerfile = "../tilt.dockerfile", |
| 115 | + entrypoint = ["/manager"], |
| 116 | + only=[ |
| 117 | + "bin/", |
| 118 | + ], |
| 119 | + live_update = [ |
| 120 | + sync("../bin/manager", "/manager"), |
| 121 | + ], |
| 122 | +) |
0 commit comments