@@ -104,30 +104,30 @@ providers = {
104
104
"internal" ,
105
105
"third_party" ,
106
106
],
107
+ "label" : "CAPD" ,
108
+ # Add kubectl to the docker image, CAPD manager requires it.
107
109
"additional_docker_helper_commands" : "RUN curl -LO https://dl.k8s.io/release/{KUBE}/bin/linux/{ARCH}/kubectl && chmod +x ./kubectl && mv ./kubectl /usr/bin/kubectl" .format (
108
110
ARCH = os_arch ,
109
111
KUBE = kubernetes_version ,
110
112
),
111
113
"additional_docker_build_commands" : """
112
114
COPY --from=tilt-helper /usr/bin/kubectl /usr/bin/kubectl
113
115
""" ,
114
- "label" : "CAPD" ,
115
116
},
116
- }
117
-
118
- # Create a data structure to hold information about addons.
119
- addons = {
120
117
"test-extension" : {
121
- "context" : "./ test/extension" ,
118
+ "context" : "test/extension" ,
122
119
"image" : "gcr.io/k8s-staging-cluster-api/test-extension" ,
123
- "container_name" : "extension" ,
124
- "live_reload_deps" : ["main.go" , "handlers" ],
120
+ "live_reload_deps" : [
121
+ "main.go" ,
122
+ "handlers" ,
123
+ ],
125
124
"label" : "test-extension" ,
126
- "resource_deps" : ["capi_controller" ],
125
+ # Add the ExtensionConfig for this Runtime extension; given that the ExtensionConfig can be installed only when capi_controller
126
+ # are up and running, it is required to set a resource_deps to ensure proper install order.
127
127
"additional_resources" : [
128
128
"config/tilt/extensionconfig.yaml" ,
129
- "config/tilt/hookresponses-configmap.yaml" ,
130
129
],
130
+ "resource_deps" : ["capi_controller" ],
131
131
},
132
132
}
133
133
@@ -165,27 +165,6 @@ def load_provider_tiltfiles():
165
165
provider_config ["go_main" ] = "main.go"
166
166
providers [provider_name ] = provider_config
167
167
168
- # load_addon_tiltfiles looks for tilt-addon.[yaml|json] files in the repositories listed in "addon_repos" in tilt settings and loads their config.
169
- def load_addon_tiltfiles ():
170
- addon_repos = settings .get ("addon_repos" , [])
171
- for repo in addon_repos :
172
- file = repo + "/tilt-addon.yaml" if os .path .exists (repo + "/tilt-addon.yaml" ) else repo + "/tilt-addon.json"
173
- if not os .path .exists (file ):
174
- fail ("Failed to load provider. No tilt-addon.{yaml|json} file found in " + repo )
175
- addon_details = read_yaml (file , default = {})
176
- if type (addon_details ) != type ([]):
177
- addon_details = [addon_details ]
178
- for item in addon_details :
179
- addon_name = item ["name" ]
180
- addon_config = item ["config" ]
181
- if "context" in addon_config :
182
- addon_config ["context" ] = repo + "/" + addon_config ["context" ]
183
- else :
184
- addon_config ["context" ] = repo
185
- if "go_main" not in addon_config :
186
- addon_config ["go_main" ] = "main.go"
187
- addons [addon_name ] = addon_config
188
-
189
168
tilt_helper_dockerfile_header = """
190
169
# Tilt image
191
170
FROM golang:1.19.0 as tilt-helper
@@ -312,7 +291,6 @@ def get_port_forwards(debug):
312
291
# 2. Configures a docker build for the provider, with live updating of the manager binary
313
292
# 3. Runs kustomize for the provider's config/default and applies it
314
293
def enable_provider (name , debug ):
315
- deployment_kind = "provider"
316
294
p = providers .get (name )
317
295
label = p .get ("label" )
318
296
@@ -336,77 +314,26 @@ def enable_provider(name, debug):
336
314
port_forwards = port_forwards ,
337
315
)
338
316
317
+ additional_objs = []
318
+ p_resources = p .get ("additional_resources" , [])
319
+ for resource in p_resources :
320
+ k8s_yaml (p .get ("context" ) + "/" + resource )
321
+ additional_objs = additional_objs + decode_yaml_stream (read_file (p .get ("context" ) + "/" + resource ))
322
+
339
323
if p .get ("kustomize_config" , True ):
340
- yaml = read_file ("./.tiltbuild/yaml/{}.{} .yaml" .format (name , deployment_kind ))
324
+ yaml = read_file ("./.tiltbuild/yaml/{}.provider .yaml" .format (name ))
341
325
k8s_yaml (yaml )
342
326
objs = decode_yaml_stream (yaml )
343
327
k8s_resource (
344
328
workload = find_object_name (objs , "Deployment" ),
345
- objects = [find_object_qualified_name (objs , "Provider" )],
329
+ objects = [find_object_qualified_name (objs , "Provider" )] + find_all_objects_names ( additional_objs ) ,
346
330
new_name = label .lower () + "_controller" ,
347
331
labels = [label , "ALL.controllers" ],
348
332
port_forwards = port_forwards ,
349
333
links = links ,
350
- resource_deps = ["provider_crd" ],
351
- )
352
-
353
- # Configures an addon by doing the following:
354
- #
355
- # 1. Enables a local_resource go build of the addon's manager binary
356
- # 2. Configures a docker build for the addon, with live updating of the binary
357
- # 3. Runs kustomize for the addons's config/default and applies it
358
- def enable_addon (name , debug ):
359
- addon = addons .get (name )
360
- deployment_kind = "addon"
361
- label = addon .get ("label" )
362
- port_forwards , links = get_port_forwards (debug )
363
-
364
- build_go_binary (
365
- context = addon .get ("context" ),
366
- reload_deps = addon .get ("live_reload_deps" ),
367
- debug = debug ,
368
- go_main = addon .get ("go_main" , "main.go" ),
369
- binary_name = "extension" ,
370
- label = label ,
371
- )
372
-
373
- build_docker_image (
374
- image = addon .get ("image" ),
375
- context = addon .get ("context" ),
376
- binary_name = "extension" ,
377
- additional_docker_helper_commands = addon .get ("additional_docker_helper_commands" , "" ),
378
- additional_docker_build_commands = addon .get ("additional_docker_build_commands" , "" ),
379
- port_forwards = port_forwards ,
380
- )
381
-
382
- additional_objs = []
383
- addon_resources = addon .get ("additional_resources" , [])
384
- for resource in addon_resources :
385
- k8s_yaml (addon .get ("context" ) + "/" + resource )
386
- additional_objs = additional_objs + decode_yaml_stream (read_file (addon .get ("context" ) + "/" + resource ))
387
-
388
- if addon .get ("kustomize_config" , True ):
389
- yaml = read_file ("./.tiltbuild/yaml/{}.{}.yaml" .format (name , deployment_kind ))
390
- objs = decode_yaml_stream (yaml )
391
- k8s_yaml (yaml )
392
- k8s_resource (
393
- workload = find_object_name (objs , "Deployment" ),
394
- new_name = label .lower () + "_addon" ,
395
- labels = [label , "ALL.addons" ],
396
- port_forwards = port_forwards ,
397
- links = links ,
398
- objects = find_all_objects_names (additional_objs ),
399
- resource_deps = addon .get ("resource_deps" , {}),
334
+ resource_deps = ["provider_crd" ] + p .get ("resource_deps" , []),
400
335
)
401
336
402
- def enable_addons ():
403
- for name in get_addons ():
404
- enable_addon (name , settings .get ("debug" ).get (name , {}))
405
-
406
- def get_addons ():
407
- user_enable_addons = settings .get ("enable_addons" , [])
408
- return {k : "" for k in user_enable_addons }.keys ()
409
-
410
337
def find_object_name (objs , kind ):
411
338
for o in objs :
412
339
if o ["kind" ] == kind :
@@ -634,8 +561,6 @@ include_user_tilt_files()
634
561
635
562
load_provider_tiltfiles ()
636
563
637
- load_addon_tiltfiles ()
638
-
639
564
prepare_all ()
640
565
641
566
deploy_provider_crds ()
@@ -644,6 +569,4 @@ deploy_observability()
644
569
645
570
enable_providers ()
646
571
647
- enable_addons ()
648
-
649
572
cluster_templates ()
0 commit comments