-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathTiltfile
92 lines (78 loc) · 3.49 KB
/
Tiltfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
load('ext://cert_manager', 'deploy_cert_manager')
load('ext://helm_resource', 'helm_resource', 'helm_repo')
load('ext://local_output', 'local_output')
APP_NAME = "naiserator"
def ignore_rules():
return str(read_file(".dockerignore")).split("\n")
deploy_cert_manager()
helm_repo('aiven', 'https://aiven.github.io/aiven-charts')
helm_resource('aiven-operator-crds', 'aiven/aiven-operator-crds', resource_deps=['aiven'], pod_readiness="ignore")
helm_repo('prometheus', 'https://prometheus-community.github.io/helm-charts')
helm_resource('prometheus-operator-crds', 'prometheus/prometheus-operator-crds', resource_deps=['prometheus'],
pod_readiness="ignore")
# Load liberator charts, assuming liberator checked out next to naiserator
# Automatically generate updated CRDs from the liberator code when the apis change, and apply them to the cluster
local_resource(
"liberator-chart",
cmd="make generate",
dir="../liberator",
ignore=["../liberator/**/zz_generated.deepcopy.go"],
deps=["../liberator/pkg/apis"],
)
k8s_yaml(helm("../liberator/charts", name="nais-crds"))
liberator_objects = [
"aivenapplications.aiven.nais.io:CustomResourceDefinition:default",
"bigquerydatasets.google.nais.io:CustomResourceDefinition:default",
"streams.kafka.nais.io:CustomResourceDefinition:default",
"topics.kafka.nais.io:CustomResourceDefinition:default",
"applications.nais.io:CustomResourceDefinition:default",
"azureadapplications.nais.io:CustomResourceDefinition:default",
"idportenclients.nais.io:CustomResourceDefinition:default",
"images.nais.io:CustomResourceDefinition:default",
"jwkers.nais.io:CustomResourceDefinition:default",
"maskinportenclients.nais.io:CustomResourceDefinition:default",
"naisjobs.nais.io:CustomResourceDefinition:default",
]
k8s_resource(
new_name="nais-crds",
objects=liberator_objects,
resource_deps=["liberator-chart"],
)
# Create a tempdir for naiserator configs
naiserator_dir = "/tmp/tilt-naiserator"
local("mkdir -p {}".format(naiserator_dir))
# Copy tilt spesific naiserator config to tempdir for naiserator to use
local_resource(
"naiserator-config",
cmd="cp ./hack/tilt-naiserator-config.yaml {}/naiserator.yaml".format(naiserator_dir),
deps=["hack/tilt-naiserator-config.yaml"],
)
# Ensure we save the current kube context to a file for naiserator
# This is so we don't accidentally switch context if other tools change the current context after startup
# Falls apart if the Tiltfile is updated, as that copies the kubeconfig again.
# See https://github.com/tilt-dev/tilt/issues/6295
local_resource(
"naiserator-kubeconfig",
cmd="kubectl config view --minify --flatten > {}/kubeconfig".format(naiserator_dir),
)
# Start naiserator locally, so changes are detected and rebuilt automatically
local_resource(
"naiserator",
cmd="go build -o cmd/naiserator/naiserator ./cmd/naiserator",
serve_cmd="{}/cmd/naiserator/naiserator --kubeconfig={}/kubeconfig".format(config.main_dir, naiserator_dir),
deps=["cmd/naiserator/naiserator.go", "go.mod", "go.sum", "pkg", "/tmp/naiserator.yaml"],
resource_deps=["nais-crds", "aiven-operator-crds", "prometheus-operator-crds", "naiserator-config",
"naiserator-kubeconfig"],
ignore=ignore_rules(),
serve_dir=naiserator_dir,
)
config.set_enabled_resources([
"aiven",
"aiven-operator-crds",
"prometheus",
"prometheus-operator-crds",
"liberator-chart",
"nais-crds",
"naiserator-config",
"naiserator-kubeconfig",
])