@@ -19,9 +19,9 @@ features := ""
19
19
package_version := ` git rev-parse --short HEAD `
20
20
21
21
# Docker image name & tag.
22
- docker_repo := " localhost/linkerd/proxy"
23
- docker_tag := ` git rev-parse --abbrev-ref HEAD | sed ' s|/|.|' ` + " ." + ` git rev-parse --short HEAD `
24
- docker_image := docker_repo + " :" + docker_tag
22
+ docker-repo := " localhost/linkerd/proxy"
23
+ docker-tag := ` git rev-parse --abbrev-ref HEAD | sed ' s|/|.|' ` + " ." + ` git rev-parse --short HEAD `
24
+ docker-image := docker-repo + " :" + docker-tag
25
25
26
26
# The architecture name to use for packages. Either 'amd64', 'arm64', or 'arm'.
27
27
arch := " amd64"
@@ -167,15 +167,22 @@ fuzzers:
167
167
)
168
168
done
169
169
170
+ export DOCKER_BUILDX_CACHE_DIR := env_var_or_default (' DOCKER_BUILDX_CACHE_DIR' , ' ' )
171
+
170
172
# Build a docker image (FOR TESTING ONLY)
171
- docker * args = ' --output=type=docker':
173
+ docker * args = ' --output=type=docker': && _clean-cache
172
174
docker buildx build . \
173
175
- -pull \
174
- - -tag={{ docker_image }} \
176
+ - -tag={{ docker-image }} \
175
177
- -build-arg PROFILE=' {{ profile }} ' \
178
+ {{ if linkerd-tag == ' ' { ' ' } else { ' --build-arg=RUNTIME_IMAGE=ghcr.io/linkerd/proxy:' + linkerd-tag } }} \
176
179
{{ if features != " " { " --build-arg PROXY_FEATURES=" + features } else { " " } }} \
180
+ {{ if DOCKER_BUILDX_CACHE_DIR == ' ' { ' ' } else { ' --cache-from=type=local,src=' + DOCKER_BUILDX_CACHE_DIR + ' --cache-to=type=local,dest=' + DOCKER_BUILDX_CACHE_DIR } }} \
177
181
{{ args }}
178
182
183
+ _ clean-cache :
184
+ @ {{ if DOCKER_BUILDX_CACHE_DIR == ' ' { ' true' } else { ' just-dev prune-action-cache ' + DOCKER_BUILDX_CACHE_DIR } }}
185
+
179
186
# Lints all shell scripts in the repo.
180
187
sh-lint :
181
188
@ just-sh
@@ -189,3 +196,88 @@ action-lint:
189
196
190
197
action-dev-check :
191
198
@ just-dev check-action-images
199
+
200
+ ##
201
+ ## Linkerd
202
+ ##
203
+
204
+ linkerd-tag := env_var_or_default (' LINKERD_TAG' , ' ' )
205
+ _controller-image := ' ghcr.io/linkerd/controller'
206
+ _policy-image := ' ghcr.io/linkerd/policy-controller'
207
+ _init-image := ' ghcr.io/linkerd/proxy-init'
208
+ _init-tag := ' v2.2.0'
209
+
210
+ _kubectl := ' just-k3d kubectl'
211
+
212
+ _ tag-set :
213
+ #!/usr/bin/env bash
214
+ if [ -z ' {{ linkerd-tag }} ' ]; then
215
+ echo " linkerd-tag must be set" >&2
216
+ exit 1
217
+ fi
218
+
219
+ _ k3d-ready :
220
+ @ just-k3d ready
221
+
222
+ k3d-load-linkerd : _tag-set _k3d-ready
223
+ for i in \
224
+ ' {{ _controller-image }} :{{ linkerd-tag }} ' \
225
+ ' {{ _policy-image }} :{{ linkerd-tag }} ' \
226
+ ' {{ _init-image }} :{{ _init-tag }} ' \
227
+ ; do \
228
+ docker pull -q " $i" ; \
229
+ done
230
+ @ just-k3d import \
231
+ ' {{ docker-image }} ' \
232
+ ' {{ _controller-image }} :{{ linkerd-tag }} ' \
233
+ ' {{ _policy-image }} :{{ linkerd-tag }} ' \
234
+ ' {{ _init-image }} :{{ _init-tag }} '
235
+
236
+ # Install crds on the test cluster.
237
+ _ linkerd-crds-install : _k3d-ready
238
+ linkerd install --crds \
239
+ | {{ _kubectl }} apply -f -
240
+ {{ _kubectl }} wait crd --for condition=established \
241
+ - -selector=' linkerd.io/control-plane-ns' \
242
+ - -timeout=1 m
243
+
244
+ # Install linkerd on the test cluster using test images.
245
+ linkerd-install * args = ' ': _tag-set k3d-load-linkerd _linkerd-crds-install && _linkerd-ready
246
+ linkerd install \
247
+ - -set=' imagePullPolicy=Never' \
248
+ - -set=' controllerImage={{ _controller-image }} ' \
249
+ - -set=' linkerdVersion={{ linkerd-tag }} ' \
250
+ - -set=' policyController.image.name={{ _policy-image }} ' \
251
+ - -set=' policyController.image.version={{ linkerd-tag }} ' \
252
+ - -set=' proxy.image.name={{ docker-repo }} ' \
253
+ - -set=' proxy.image.version={{ docker-tag }} ' \
254
+ - -set=' proxy.logLevel=linkerd=debug\,info' \
255
+ - -set=' proxyInit.image.name={{ _init-image }} ' \
256
+ - -set=' proxyInit.image.version={{ _init-tag }} ' \
257
+ {{ args }} \
258
+ | {{ _kubectl }} apply -f -
259
+
260
+ linkerd-uninstall :
261
+ linkerd uninstall \
262
+ | {{ _kubectl }} delete -f -
263
+
264
+ linkerd-check-contol-plane-proxy :
265
+ #!/usr/bin/env bash
266
+ set -euo pipefail
267
+ check=$(mktemp --tmpdir check-XXXX.json)
268
+ linkerd check -o json > " $check"
269
+ result=$(jq -r \
270
+ ' .categories[] | select(.categoryName == "linkerd-control-plane-proxy") | .checks[] | select(.description == "control plane proxies are healthy") | .result' \
271
+ " $check" )
272
+ if [ " $result" != " success" ]; then
273
+ jq ' .categories[] | .checks[] | select(.result != "success") | select(.hint | contains("-version") | not)' \
274
+ " $check" >&2
275
+ {{ _kubectl }} describe po -n linkerd >&2
276
+ exit 1
277
+ fi
278
+ rm " $check"
279
+
280
+ _ linkerd-ready :
281
+ {{ _kubectl }} wait pod --for=condition=ready \
282
+ - -namespace=linkerd --selector=' linkerd.io/control-plane-component' \
283
+ - -timeout=1 m
0 commit comments