dev: Fix local `just policy-test` (#10426)

Running `just policy-test` currently fails locally, because it tries to
pull in an incorrect cni-plugin image. There are two problems here:

1. The cni-plugin image is published from another repo, so it's not a
   dependency that should honor the `DOCKER_REGISTRY` setting (which we
   override when running tests with locally produced images).
2. cni-plugin isn't needed by any of the policy tests.

This change fixes these issues by using the proper image name and
splitting out separate, decoupled recipes for fetching the CNI image.

Furthermore, this change updates the treatment of other external
dependencies--specifically proxy-init and prometheus.
This commit is contained in:
Oliver Gould 2023-03-02 08:07:21 -08:00 committed by GitHub
parent be6a4b8c37
commit 0d073509d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 31 deletions

View File

@ -281,18 +281,17 @@ _pause-load: _k3d-init
linkerd-exec := "bin/linkerd"
_linkerd := linkerd-exec + " " + _context
# TODO(ver) we should pin the tag in the image (and split appropriately where
# we need to). so that it's possible to override a single image compltely. but
# doing this would mean that we need to invoke `yq` in some cases, and this
# dependency isn't universally available (e.g. in ci). if we change ci to use a
# devcontainer base image.
controller-image := DOCKER_REGISTRY + "/controller"
proxy-image := DOCKER_REGISTRY + "/proxy"
proxy-init-image := DOCKER_REGISTRY + "/proxy-init"
orig-proxy-init-image := "ghcr.io/linkerd/proxy-init"
policy-controller-image := DOCKER_REGISTRY + "/policy-controller"
cni-plugin-image := DOCKER_REGISTRY + "/cni-plugin"
# External dependencies
#
# We execute these commands lazily in case `yq` isn't present (so that other
# just recipes can succeed).
_proxy-init-image-cmd := "yq '.proxyInit.image | \"ghcr.io/linkerd/proxy-init:\" + .version' charts/linkerd-control-plane/values.yaml"
_cni-plugin-image-cmd := "yq '.image | \"ghcr.io/linkerd/cni-plugin:\" + .version' charts/linkerd2-cni/values.yaml"
_prometheus-image-cmd := "yq '.prometheus.image | .registry + \"/\" + .name + \":\" + .tag' viz/charts/linkerd-viz/values.yaml"
linkerd *flags:
{{ _linkerd }} {{ flags }}
@ -316,8 +315,7 @@ linkerd-install *args='': linkerd-load linkerd-crds-install && _linkerd-ready
--set='policyController.loglevel=info\,linkerd=trace\,kubert=trace' \
--set='proxy.image.name={{ proxy-image }}' \
--set='proxy.image.version={{ linkerd-tag }}' \
--set='proxyInit.image.name={{ proxy-init-image }}' \
--set="proxyInit.image.version=$(yq .proxyInit.image.version charts/linkerd-control-plane/values.yaml)" \
--set='proxyInit.image.name=ghcr.io/linkerd/proxy-init' \
{{ args }} \
| {{ _kubectl }} apply -f -
@ -331,8 +329,11 @@ linkerd-load: _linkerd-images _k3d-init
'{{ controller-image }}:{{ linkerd-tag }}' \
'{{ policy-controller-image }}:{{ linkerd-tag }}' \
'{{ proxy-image }}:{{ linkerd-tag }}' \
"{{ cni-plugin-image }}:$(yq .image.version charts/linkerd2-cni/values.yaml)" \
"{{ proxy-init-image }}:$(yq .proxyInit.image.version charts/linkerd-control-plane/values.yaml)" && exit ; sleep 1 ; done
$({{ _proxy-init-image-cmd }}) && exit ; sleep 1 ; done
linkerd-load-cni:
docker pull -q $({{ _cni-plugin-image-cmd }})
{{ _k3d-load }} $({{ _cni-plugin-image-cmd }})
linkerd-build: _policy-controller-build
TAG={{ linkerd-tag }} bin/docker-build-controller
@ -341,11 +342,7 @@ linkerd-build: _policy-controller-build
_linkerd-images:
#!/usr/bin/env bash
set -xeuo pipefail
docker pull -q "{{ orig-proxy-init-image }}:$(yq .proxyInit.image.version charts/linkerd-control-plane/values.yaml)"
docker pull -q "{{ cni-plugin-image }}:$(yq .image.version charts/linkerd2-cni/values.yaml)"
docker tag \
"{{ orig-proxy-init-image }}:$(yq .proxyInit.image.version charts/linkerd-control-plane/values.yaml)" \
"{{ proxy-init-image }}:$(yq .proxyInit.image.version charts/linkerd-control-plane/values.yaml)"
docker pull -q $({{ _proxy-init-image-cmd }})
for img in \
'{{ controller-image }}:{{ linkerd-tag }}' \
'{{ policy-controller-image }}:{{ linkerd-tag }}' \
@ -356,8 +353,6 @@ _linkerd-images:
exec {{ just_executable() }} \
controller-image='{{ controller-image }}' \
policy-controller-image='{{ policy-controller-image }}' \
proxy-image='{{ proxy-image }}' \
proxy-init-image='{{ proxy-init-image }}' \
linkerd-tag='{{ linkerd-tag }}' \
linkerd-build
fi
@ -374,9 +369,11 @@ _policy-controller-build:
--load
_linkerd-ready:
{{ _kubectl }} wait pod --for=condition=ready \
--namespace=linkerd --selector='linkerd.io/control-plane-component' \
--timeout=1m
if ! {{ _kubectl }} wait pod --for=condition=ready \
--namespace=linkerd --selector='linkerd.io/control-plane-component' \
--timeout=1m ; then \
{{ _kubectl }} describe pods --namespace=linkerd ; \
fi
# Ensure that a linkerd control plane is installed
_linkerd-init: && _linkerd-ready
@ -393,8 +390,6 @@ _linkerd-init: && _linkerd-ready
linkerd-tag='{{ linkerd-tag }}' \
controller-image='{{ controller-image }}' \
proxy-image='{{ proxy-image }}' \
proxy-init-image='{{ proxy-init-image }}' \
cni-plugin-image='{{ cni-plugin-image }}'
linkerd-exec='{{ linkerd-exec }}' \
linkerd-install
fi
@ -421,8 +416,7 @@ linkerd-viz-uninstall:
_linkerd-viz-images:
#!/usr/bin/env bash
set -euo pipefail
docker pull -q $(yq '.prometheus.image | .registry + "/" + .name + ":" + .tag' \
viz/charts/linkerd-viz/values.yaml)
docker pull -q $({{ _prometheus-image-cmd }})
for img in \
'{{ DOCKER_REGISTRY }}/metrics-api:{{ linkerd-tag }}' \
'{{ DOCKER_REGISTRY }}/tap:{{ linkerd-tag }}' \
@ -441,8 +435,7 @@ linkerd-viz-load: _linkerd-viz-images _k3d-init
{{ DOCKER_REGISTRY }}/metrics-api:{{ linkerd-tag }} \
{{ DOCKER_REGISTRY }}/tap:{{ linkerd-tag }} \
{{ DOCKER_REGISTRY }}/web:{{ linkerd-tag }} \
"$(yq '.prometheus.image | .registry + "/" + .name + ":" + .tag' \
viz/charts/linkerd-viz/values.yaml)" && exit ; sleep 1 ; done
$({{ _prometheus-image-cmd }}) && exit ; sleep 1 ; done
linkerd-viz-build:
TAG={{ linkerd-tag }} bin/docker-build-metrics-api
@ -503,8 +496,6 @@ _mc-target-load:
_k3d-flags='{{ _mc-target-k3d-flags }}' \
controller-image='{{ controller-image }}' \
proxy-image='{{ proxy-image }}' \
proxy-init-image='{{ proxy-init-image }}' \
cni-plugin-image='{{ cni-plugin-image }}' \
linkerd-exec='{{ linkerd-exec }}' \
linkerd-tag='{{ linkerd-tag }}' \
_pause-load \