Skip to content

Commit 6d76a9f

Browse files
authored
chore: replace registry for the pause container, fix multicluster test (#14918)
## `pause` container registry change For the past few days, pulling `gcr.io/google_containers/pause:3.2` has failed sporadically: ``` $ docker pull gcr.io/google_containers/pause:3.2 Error response from daemon: unknown: failed to resolve reference "gcr.io/google_containers/pause:3.2": unexpected status from HEAD request to https://gcr.io/v2/google_containers/pause/manifests/3.2: 400 Bad Request ``` Also Artifact Hub scanning is failing: ``` error scanning image gcr.io/google_containers/pause:3.2: error running trivy on image gcr.io/google_containers/pause:3.2: 2026-02-11T18:45:49Z FATAL Fatal error run error: image scan error: scan error: scan failed: failed analysis: unable to get the image ID: unable to get the image ID: GET https://gcr.io/v2/google_containers/pause/blobs/sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c: NAME_INVALID: Request contains an invalid argument. (package linkerd-multicluster:2025.10.6) ``` It appears the `gcr.io/google_containers` registry is no longer favored and instead the `registry.k8s.io` has been what's [officially supported](https://kubernetes.io/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/), so we're switching to that one. ## Don't install Gateway API in the multicluster integration test target cluster As of k8s v1.34, k3d's Traefik is installing the Gateway API on its own, among which there is a `backendtglspolicies` CRD pointing to v1.4, which conflicts with v1.2.0 that we are attempting to install. Therefore this change moves the GWAPI installation step from the go test to the actions workflow, applying the GWAPI manifests only where necessary.
1 parent 59f8de2 commit 6d76a9f

File tree

9 files changed

+28
-28
lines changed

9 files changed

+28
-28
lines changed

.github/workflows/integration.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,10 @@ jobs:
336336
fail-fast: false
337337
matrix:
338338
cases:
339-
- {k8s: "v1.23", manage-controllers: false}
340-
- {k8s: "v1.34", manage-controllers: false}
341-
- {k8s: "v1.34", manage-controllers: true}
339+
- {k8s: "v1.23", manage-controllers: false, install-gwapi: true}
340+
# for v1.34 onwards, gwapi gets installed by Traefik on the target cluster
341+
- {k8s: "v1.34", manage-controllers: false, install-gwapi: false}
342+
- {k8s: "v1.34", manage-controllers: true, install-gwapi: false}
342343
name: "test-multicluster(${{ matrix.cases.k8s }}, ${{ matrix.cases.manage-controllers && 'managed-controllers' || 'unmanaged-controllers' }})"
343344
steps:
344345
- uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff
@@ -370,11 +371,21 @@ jobs:
370371
done
371372
- run: docker image ls
372373
- run: just mc-test-build
373-
- name: Run just mc-test-load
374+
- name: Run just mc-load
374375
run: |
375376
just linkerd-tag='${{ needs.meta.outputs.tag }}' \
376377
k3d-k8s='${{ matrix.cases.k8s }}' \
377-
mc-test-load
378+
mc-load
379+
- run: just mc-install-gwapi
380+
- name: Run just mc-target-load
381+
run: |
382+
just linkerd-tag='${{ needs.meta.outputs.tag }}' \
383+
k3d-k8s='${{ matrix.cases.k8s }}' \
384+
mc-target-load
385+
- name: Run just mc-install-gwapi
386+
if: ${{ matrix.cases.install-gwapi }}
387+
run: just k3d-name='l5d-test-target' mc-install-gwapi
388+
- run: just mc-flat-network-init
378389
- name: Run just mc-test-run
379390
run: |
380391
just linkerd-tag='${{ needs.meta.outputs.tag }}' \

justfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
lint: action-lint action-dev-check md-lint sh-lint rs-fetch rs-clippy rs-check-fmt go-lint
44

5+
export GWAPI_VERSION := "v1.2.0"
6+
57
##
68
## Go
79
##
@@ -490,9 +492,9 @@ mc-target-k3d-delete:
490492
k3d-delete
491493
fi
492494

493-
_mc-load: _k3d-init linkerd-load
495+
mc-load: _k3d-init linkerd-load
494496

495-
_mc-target-load:
497+
mc-target-load:
496498
@{{ just_executable() }} \
497499
k3d-name='{{ k3d-name }}-target' \
498500
k3d-k8s='{{ k3d-k8s }}' \
@@ -505,17 +507,15 @@ _mc-target-load:
505507
linkerd-exec='{{ linkerd-exec }}' \
506508
linkerd-tag='{{ linkerd-tag }}' \
507509
_pause-load \
508-
_mc-load
510+
mc-load
509511

510-
# Run the multicluster tests with cluster setup
511-
mc-test: mc-test-load mc-test-run
512+
mc-install-gwapi:
513+
{{ _kubectl }} apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/${GWAPI_VERSION}/experimental-install.yaml
512514

513515
mc-test-build:
514516
go build --mod=readonly \
515517
./test/integration/multicluster/...
516518

517-
mc-test-load: _mc-load _mc-target-load mc-flat-network-init
518-
519519
k3d-source-server := "k3d-" + k3d-name + "-server-0"
520520
k3d-target-server := "k3d-" + k3d-name + "-target-server-0"
521521

multicluster/charts/linkerd-multicluster/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ gateway:
4141
tolerations: []
4242

4343
# -- The pause container to use
44-
pauseImage: "gcr.io/google_containers/pause:3.2"
44+
pauseImage: "registry.k8s.io/pause:3.2"
4545

4646
# -- User id under which the gateway shall be ran
4747
UID: 2103

multicluster/cmd/testdata/install_default.golden

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

multicluster/cmd/testdata/install_ha.golden

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

multicluster/cmd/testdata/install_psp.golden

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

policy-test/tests/inbound_api.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ fn mk_pause(ns: &str, name: &str) -> k8s::Pod {
823823
spec: Some(k8s::PodSpec {
824824
containers: vec![k8s::api::core::v1::Container {
825825
name: "pause".to_string(),
826-
image: Some("gcr.io/google_containers/pause:3.2".to_string()),
826+
image: Some("registry.k8s.io/pause:3.2".to_string()),
827827
..Default::default()
828828
}],
829829
..Default::default()

test/integration/multicluster/install_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,6 @@ func TestInstall(t *testing.T) {
9494
// Global state to keep track of clusters
9595
contexts = TestHelper.GetMulticlusterContexts()
9696
for _, ctx := range contexts {
97-
err = TestHelper.InstallGatewayAPIWithContext(ctx)
98-
if err != nil {
99-
testutil.AnnotatedFatal(t, "failed to install gateway-api", err)
100-
}
101-
10297
// Pipe cmd & args to `linkerd`
10398
cmd := append([]string{"--context=" + ctx}, cmd...)
10499
out, err := TestHelper.LinkerdRun(cmd...)

testutil/test_helper.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -749,12 +749,6 @@ func (h *TestHelper) InstallGatewayAPI() error {
749749
return err
750750
}
751751

752-
func (h *TestHelper) InstallGatewayAPIWithContext(ctx string) error {
753-
url := fmt.Sprintf("https://github.com/kubernetes-sigs/gateway-api/releases/download/%s/experimental-install.yaml", GATEWAY_API_VERSION)
754-
_, err := h.KubectlWithContext("", ctx, "apply", "-f", url)
755-
return err
756-
}
757-
758752
// ReadFile reads a file from disk and returns the contents as a string.
759753
func ReadFile(file string) (string, error) {
760754
b, err := os.ReadFile(file)

0 commit comments

Comments
 (0)