Skip to content

Commit 452ebbc

Browse files
committed
tests: pin k3d images for kubernetes worker
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent cdb050b commit 452ebbc

File tree

3 files changed

+49
-17
lines changed

3 files changed

+49
-17
lines changed

Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ARG BUILDKIT_VERSION=v0.29.0
1515
ARG COMPOSE_VERSION=v5.1.0
1616
ARG UNDOCK_VERSION=0.9.0
1717
ARG K3D_VERSION=5.8.3
18+
ARG K3S_VERSION=v1.32.2-k3s1
1819

1920
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
2021
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS golatest
@@ -155,6 +156,9 @@ COPY --link --from=k3d /bin/k3d /usr/bin/
155156
COPY --link --from=binaries /buildx /usr/bin/
156157
RUN mkdir -p /usr/local/lib/docker/cli-plugins && ln -s /usr/bin/buildx /usr/local/lib/docker/cli-plugins/docker-buildx
157158
ENV TEST_DOCKER_EXTRA="docker@28.5=/opt/docker-alt-28,docker@27.5=/opt/docker-alt-27"
159+
ENV TEST_K3S_IMAGE="rancher/k3s:${K3S_VERSION}"
160+
ENV TEST_K3D_TOOLS_IMAGE="ghcr.io/k3d-io/k3d-tools:${K3D_VERSION}"
161+
ENV TEST_K3D_LOADBALANCER_IMAGE="ghcr.io/k3d-io/k3d-proxy:${K3D_VERSION}"
158162

159163
FROM integration-test-base AS integration-test
160164
COPY . .

tests/helpers/k3d.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,23 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
3636
createCtx, cancelCreate := context.WithTimeout(ctx, 90*time.Second)
3737
defer cancelCreate()
3838

39-
cmd := exec.CommandContext(createCtx, k3dBin, "cluster", "create", clusterName,
39+
args := []string{
40+
"cluster", "create", clusterName,
4041
"--wait",
41-
)
42-
cmd.Env = append(
43-
os.Environ(),
44-
"DOCKER_CONTEXT="+dockerAddress,
45-
)
42+
}
43+
if image := KubernetesK3sImage(); image != "" {
44+
args = append(args, "--image="+image)
45+
}
46+
cmd := exec.CommandContext(createCtx, k3dBin, args...)
47+
cmd.Env = k3dEnv(dockerAddress)
4648
out, err := cmd.CombinedOutput()
4749
if err != nil {
4850
diag := KubernetesDiagnostics(clusterName, dockerAddress)
4951
return "", "", nil, errors.Wrapf(err, "failed to create k3d cluster %s: %s\n%s", clusterName, strings.TrimSpace(string(out)), diag)
5052
}
5153
deferF.Append(func() error {
5254
cmd := exec.Command(k3dBin, "cluster", "delete", clusterName)
53-
cmd.Env = append(
54-
os.Environ(),
55-
"DOCKER_CONTEXT="+dockerAddress,
56-
)
55+
cmd.Env = k3dEnv(dockerAddress)
5756
out, err := cmd.CombinedOutput()
5857
if err != nil {
5958
return errors.Wrapf(err, "failed to delete k3d cluster %s: %s", clusterName, string(out))
@@ -65,10 +64,7 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
6564
defer cancelKubeconfig()
6665

6766
cmd = exec.CommandContext(kubeconfigCtx, k3dBin, "kubeconfig", "write", clusterName)
68-
cmd.Env = append(
69-
os.Environ(),
70-
"DOCKER_CONTEXT="+dockerAddress,
71-
)
67+
cmd.Env = k3dEnv(dockerAddress)
7268
out, err = cmd.CombinedOutput()
7369
if err != nil {
7470
diag := KubernetesDiagnostics(clusterName, dockerAddress)
@@ -78,3 +74,17 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
7874

7975
return
8076
}
77+
78+
func k3dEnv(dockerAddress string) []string {
79+
env := append(
80+
os.Environ(),
81+
"DOCKER_CONTEXT="+dockerAddress,
82+
)
83+
if image := KubernetesK3DToolsImage(); image != "" {
84+
env = append(env, "K3D_IMAGE_TOOLS="+image)
85+
}
86+
if image := KubernetesK3DLoadBalancerImage(); image != "" {
87+
env = append(env, "K3D_IMAGE_LOADBALANCER="+image)
88+
}
89+
return env
90+
}

tests/helpers/kubernetes_diagnostics.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ func KubernetesBuildkitImage() string {
2323
return "moby/buildkit:" + tag
2424
}
2525

26+
func KubernetesK3sImage() string {
27+
return os.Getenv("TEST_K3S_IMAGE")
28+
}
29+
30+
func KubernetesK3DToolsImage() string {
31+
return os.Getenv("TEST_K3D_TOOLS_IMAGE")
32+
}
33+
34+
func KubernetesK3DLoadBalancerImage() string {
35+
return os.Getenv("TEST_K3D_LOADBALANCER_IMAGE")
36+
}
37+
2638
func KubernetesDiagnostics(clusterName, dockerContext string) string {
2739
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
2840
defer cancel()
@@ -56,16 +68,22 @@ func appendK3sServerDiagnostics(ctx context.Context, buf *bytes.Buffer, clusterN
5668
}
5769

5870
for _, nodeName := range nodeNames {
71+
appendCommandOutput(ctx, buf, "docker inspect "+nodeName, "docker", []string{
72+
"inspect",
73+
"--format",
74+
"Status={{.State.Status}} Health={{if .State.Health}}{{.State.Health.Status}}{{else}}<none>{{end}} Restarting={{.State.Restarting}} ExitCode={{.State.ExitCode}} Error={{.State.Error}}",
75+
nodeName,
76+
}, []string{"DOCKER_CONTEXT=" + dockerContext})
5977
appendCommandOutput(ctx, buf, "docker logs "+nodeName, "docker", []string{"logs", "--tail", "80", nodeName}, []string{"DOCKER_CONTEXT=" + dockerContext})
6078
}
6179

6280
for _, nodeName := range nodeNames {
6381
if !strings.Contains(nodeName, "-server-") {
6482
continue
6583
}
66-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" k3s kubectl get pods", "docker", []string{"exec", nodeName, "k3s", "kubectl", "get", "pods", "-A", "-o", "wide"}, []string{"DOCKER_CONTEXT=" + dockerContext})
67-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" k3s kubectl get events", "docker", []string{"exec", nodeName, "k3s", "kubectl", "get", "events", "-A", "--sort-by=.lastTimestamp"}, []string{"DOCKER_CONTEXT=" + dockerContext})
68-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" k3s kubectl describe pods", "docker", []string{"exec", nodeName, "k3s", "kubectl", "describe", "pods", "-A"}, []string{"DOCKER_CONTEXT=" + dockerContext})
84+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get pods", "docker", []string{"exec", nodeName, "kubectl", "get", "pods", "-A", "-o", "wide"}, []string{"DOCKER_CONTEXT=" + dockerContext})
85+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get events", "docker", []string{"exec", nodeName, "kubectl", "get", "events", "-A", "--sort-by=.lastTimestamp"}, []string{"DOCKER_CONTEXT=" + dockerContext})
86+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl describe pods", "docker", []string{"exec", nodeName, "kubectl", "describe", "pods", "-A"}, []string{"DOCKER_CONTEXT=" + dockerContext})
6987
break
7088
}
7189
}

0 commit comments

Comments
 (0)