Skip to content

Commit 08daeda

Browse files
committed
add support for custom linode environments
1 parent a62d3c8 commit 08daeda

File tree

6 files changed

+300
-253
lines changed

6 files changed

+300
-253
lines changed

Diff for: .tilt/ctlptl-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ kindV1Alpha4Cluster:
77
name: tilt
88
nodes:
99
- role: control-plane
10-
image: kindest/node:v1.29.2
10+
image: kindest/node:v1.31.0

Diff for: Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ endif
208208
.PHONY: tilt-cluster
209209
tilt-cluster: ctlptl tilt kind clusterctl
210210
$(CTLPTL) apply -f .tilt/ctlptl-config.yaml
211-
$(TILT) up --stream
211+
$(TILT) up
212212

213213
## --------------------------------------
214214
## Release

Diff for: Tiltfile

+59-25
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ load("ext://k8s_attach", "k8s_attach")
22
load("ext://helm_resource", "helm_resource", "helm_repo")
33
load("ext://namespace", "namespace_create")
44
load("ext://restart_process", "docker_build_with_restart")
5+
load("ext://secret", "secret_create_generic")
56
update_settings(k8s_upsert_timeout_secs=120)
67

78
helm_repo(
@@ -96,7 +97,44 @@ if os.getenv("INSTALL_RKE2_PROVIDER", "false") == "true":
9697
resource_deps=["capi-controller-manager"],
9798
labels=["CAPI"],
9899
)
99-
100+
capl_resources = [
101+
"capl-system:namespace",
102+
"linodeclusters.infrastructure.cluster.x-k8s.io:customresourcedefinition",
103+
"linodemachines.infrastructure.cluster.x-k8s.io:customresourcedefinition",
104+
"linodeclustertemplates.infrastructure.cluster.x-k8s.io:customresourcedefinition",
105+
"linodemachinetemplates.infrastructure.cluster.x-k8s.io:customresourcedefinition",
106+
"linodevpcs.infrastructure.cluster.x-k8s.io:customresourcedefinition",
107+
"linodeplacementgroups.infrastructure.cluster.x-k8s.io:customresourcedefinition",
108+
"linodefirewalls.infrastructure.cluster.x-k8s.io:customresourcedefinition",
109+
"linodeobjectstoragebuckets.infrastructure.cluster.x-k8s.io:customresourcedefinition",
110+
"linodeobjectstoragekeys.infrastructure.cluster.x-k8s.io:customresourcedefinition",
111+
"capl-mutating-webhook-configuration:mutatingwebhookconfiguration",
112+
"capl-linodeclustertemplate-editor-role:clusterrole",
113+
"capl-linodeclustertemplate-viewer-role:clusterrole",
114+
"capl-linodemachine-editor-role:clusterrole",
115+
"capl-linodemachine-viewer-role:clusterrole",
116+
"capl-linodemachinetemplate-editor-role:clusterrole",
117+
"capl-linodemachinetemplate-viewer-role:clusterrole",
118+
"capl-linodeobjectstoragebucket-editor-role:clusterrole",
119+
"capl-linodeobjectstoragebucket-viewer-role:clusterrole",
120+
"capl-linodeobjectstoragekey-editor-role:clusterrole",
121+
"capl-linodeobjectstoragekey-viewer-role:clusterrole",
122+
"capl-linodevpc-editor-role:clusterrole",
123+
"capl-linodevpc-viewer-role:clusterrole",
124+
"capl-controller-manager:serviceaccount",
125+
"capl-leader-election-role:role",
126+
"capl-manager-role:clusterrole",
127+
"capl-metrics-reader:clusterrole",
128+
"capl-proxy-role:clusterrole",
129+
"capl-leader-election-rolebinding:rolebinding",
130+
"capl-manager-rolebinding:clusterrolebinding",
131+
"capl-proxy-rolebinding:clusterrolebinding",
132+
"capl-manager-credentials:secret",
133+
"capl-akamai-edgerc-secret:secret",
134+
"capl-serving-cert:certificate",
135+
"capl-selfsigned-issuer:issuer",
136+
"capl-validating-webhook-configuration:validatingwebhookconfiguration",
137+
]
100138
capl_deps = ["capi-controller-manager"]
101139
debug = os.getenv("CAPL_DEBUG", "false")
102140
# debug setting
@@ -146,8 +184,27 @@ for resource in manager_yaml:
146184
resource["spec"]["template"]["spec"].pop("securityContext")
147185
for container in resource["spec"]["template"]["spec"]["containers"]:
148186
container.pop("securityContext")
187+
if container["name"] == "manager":
188+
if os.getenv("LINODE_URL"):
189+
container["env"].append({"name": "LINODE_URL", "value": os.getenv("LINODE_URL")})
190+
if os.getenv("LINODE_CA"):
191+
container["env"].append({"name": "SSL_CERT_DIR", "value": "/tmp/linode-ca"})
192+
container["volumeMounts"].append({"mountPath": "/tmp/linode-ca", "name": "linode-ca", "readOnly": True})
193+
if os.getenv("LINODE_CA"):
194+
resource["spec"]["template"]["spec"]["volumes"].append({"name": "linode-ca", "secret": {"defaultMode": 420, "secretName": "linode-ca"}})
195+
149196
k8s_yaml(encode_yaml_stream(manager_yaml))
150197

198+
if os.getenv("LINODE_CA"):
199+
print(os.getenv("LINODE_CA"))
200+
201+
ca_secret = secret_create_generic(
202+
"linode-ca",
203+
namespace = "capl-system",
204+
from_file="cacert.pem=" + os.getenv("LINODE_CA")
205+
)
206+
capl_resources.append("linode-ca:secret")
207+
151208
if os.getenv("SKIP_DOCKER_BUILD", "false") != "true" and debug != "true":
152209
docker_build(
153210
"docker.io/linode/cluster-api-provider-linode",
@@ -159,30 +216,7 @@ if os.getenv("SKIP_DOCKER_BUILD", "false") != "true" and debug != "true":
159216

160217
k8s_resource(
161218
workload="capl-controller-manager",
162-
objects=[
163-
"capl-system:namespace",
164-
"linodeclusters.infrastructure.cluster.x-k8s.io:customresourcedefinition",
165-
"linodemachines.infrastructure.cluster.x-k8s.io:customresourcedefinition",
166-
"linodeclustertemplates.infrastructure.cluster.x-k8s.io:customresourcedefinition",
167-
"linodemachinetemplates.infrastructure.cluster.x-k8s.io:customresourcedefinition",
168-
"linodevpcs.infrastructure.cluster.x-k8s.io:customresourcedefinition",
169-
"linodeplacementgroups.infrastructure.cluster.x-k8s.io:customresourcedefinition",
170-
"linodefirewalls.infrastructure.cluster.x-k8s.io:customresourcedefinition",
171-
"linodeobjectstoragebuckets.infrastructure.cluster.x-k8s.io:customresourcedefinition",
172-
"capl-controller-manager:serviceaccount",
173-
"capl-leader-election-role:role",
174-
"capl-manager-role:clusterrole",
175-
"capl-metrics-reader:clusterrole",
176-
"capl-proxy-role:clusterrole",
177-
"capl-leader-election-rolebinding:rolebinding",
178-
"capl-manager-rolebinding:clusterrolebinding",
179-
"capl-proxy-rolebinding:clusterrolebinding",
180-
"capl-manager-credentials:secret",
181-
"capl-akamai-edgerc-secret:secret",
182-
"capl-serving-cert:certificate",
183-
"capl-selfsigned-issuer:issuer",
184-
"capl-validating-webhook-configuration:validatingwebhookconfiguration",
185-
],
219+
objects=capl_resources,
186220
port_forwards=["40000:40000"],
187221
resource_deps=capl_deps,
188222
labels=["CAPL"],

Diff for: devbox.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"govulncheck@latest",
1010
"husky@latest",
1111
"kind@latest",
12-
"kubernetes-controller-tools@latest",
12+
"kubernetes-controller-tools@0.14.0",
1313
"kustomize@latest",
1414
"kuttl@latest",
1515
"nilaway@latest",

0 commit comments

Comments
 (0)