Skip to content

Commit 6bbe1a5

Browse files
committed
Docker: Use in-house tools image to avoid pulling rate-limits
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent 8b90a3d commit 6bbe1a5

File tree

11 files changed

+76
-29
lines changed

11 files changed

+76
-29
lines changed

.github/workflows/helm-chart-test.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,20 @@ jobs:
4949
fail-fast: false
5050
matrix:
5151
include:
52-
- k8s-version: 'v1.26.15'
52+
- k8s-version: 'v1.34.1'
5353
cluster: 'minikube'
54-
helm-version: 'v3.11.3'
55-
docker-version: '26.1.4'
54+
helm-version: 'v3.19.0'
55+
docker-version: '28.4.0'
5656
python-version: '3.9'
5757
test-upgrade: true
5858
service-mesh: false
5959
os: ubuntu-22.04
6060
check-records-output: true
6161
test-strategy: disabled
62-
- k8s-version: 'v1.27.16'
62+
- k8s-version: 'v1.34.1'
6363
cluster: 'minikube'
64-
helm-version: 'v3.12.3'
65-
docker-version: '26.1.4'
64+
helm-version: 'v3.18.6'
65+
docker-version: '28.3.3'
6666
python-version: '3.9'
6767
test-upgrade: true
6868
service-mesh: false
@@ -99,7 +99,7 @@ jobs:
9999
os: ubuntu-22.04
100100
check-records-output: true
101101
test-strategy: job_hostname
102-
- k8s-version: 'v1.31.11'
102+
- k8s-version: 'v1.31.12'
103103
cluster: 'minikube'
104104
helm-version: 'v3.16.4'
105105
docker-version: '27.4.1'
@@ -109,7 +109,7 @@ jobs:
109109
os: ubuntu-22.04
110110
check-records-output: true
111111
test-strategy: deployment_https
112-
- k8s-version: 'v1.32.7'
112+
- k8s-version: 'v1.32.9'
113113
cluster: 'minikube'
114114
helm-version: 'v3.17.4'
115115
docker-version: '26.1.4'
@@ -119,9 +119,9 @@ jobs:
119119
os: ubuntu-22.04
120120
check-records-output: true
121121
test-strategy: playwright_connect_grid
122-
- k8s-version: 'v1.33.3'
122+
- k8s-version: 'v1.33.5'
123123
cluster: 'minikube'
124-
helm-version: 'v3.18.4'
124+
helm-version: 'v3.18.6'
125125
docker-version: '26.1.4'
126126
python-version: '3.10'
127127
test-upgrade: true

.github/workflows/k8s-scaling-test.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,17 @@ jobs:
7171
fail-fast: false
7272
matrix:
7373
include:
74-
- k8s-version: 'v1.27.16'
74+
- k8s-version: 'v1.34.1'
7575
cluster: 'minikube'
76-
helm-version: 'v3.12.3'
77-
docker-version: '26.1.4'
76+
helm-version: 'v3.19.0'
77+
docker-version: '28.4.0'
7878
python-version: '3.9'
7979
os: ubuntu-22.04
8080
test-strategy: test_k8s_autoscaling_job_count_strategy_default_in_chaos
81-
- k8s-version: 'v1.28.15'
81+
- k8s-version: 'v1.34.1'
8282
cluster: 'minikube'
83-
helm-version: 'v3.13.3'
84-
docker-version: '26.1.4'
83+
helm-version: 'v3.18.6'
84+
docker-version: '28.3.3'
8585
python-version: '3.10'
8686
os: ubuntu-22.04
8787
test-strategy: test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions
@@ -99,14 +99,14 @@ jobs:
9999
python-version: '3.12'
100100
os: ubuntu-22.04
101101
test-strategy: test_k8s_autoscaling_deployment_count_in_chaos
102-
- k8s-version: 'v1.31.11'
102+
- k8s-version: 'v1.31.12'
103103
cluster: 'minikube'
104104
helm-version: 'v3.16.4'
105105
docker-version: '27.4.1'
106106
python-version: '3.13'
107107
os: ubuntu-22.04
108108
test-strategy: test_k8s_autoscaling_deployment_count_with_node_max_sessions
109-
- k8s-version: 'v1.32.7'
109+
- k8s-version: 'v1.32.9'
110110
cluster: 'minikube'
111111
helm-version: 'v3.17.4'
112112
docker-version: '26.1.4'

.tools/Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
FROM ubuntu:noble
2+
3+
ARG AUTHORS=SeleniumHQ
4+
LABEL authors="${AUTHORS} <[email protected]>"
5+
LABEL org.opencontainers.image.source="https://github.com/${AUTHORS}/docker-selenium"
6+
7+
ARG KUBECTL_VERSION
8+
9+
RUN apt-get update && apt-get install -y curl && \
10+
ARCH=$(dpkg --print-architecture) && \
11+
VERSION=${KUBECTL_VERSION:-$(curl -L -s https://dl.k8s.io/release/stable.txt)} && \
12+
curl -LO "https://dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kubectl" && \
13+
curl -LO "https://dl.k8s.io/${VERSION}/bin/linux/${ARCH}/kubectl.sha256" && \
14+
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check && \
15+
chmod +x kubectl && \
16+
mv kubectl /usr/local/bin/ && \
17+
rm kubectl.sha256 && \
18+
apt-get clean && rm -rf /var/lib/apt/lists/*
19+
20+
RUN useradd -m kubectl
21+
USER kubectl
22+
23+
RUN kubectl version --client
24+
25+
ENTRYPOINT ["kubectl"]

Makefile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ all: hub \
5656
standalone_firefox \
5757
standalone_docker \
5858
standalone_all_browsers \
59-
video
59+
video \
60+
tools
6061

6162
check_dev_env:
6263
./tests/charts/make/chart_check_env.sh
@@ -292,6 +293,10 @@ video: base
292293
ffmpeg:
293294
cd ./.ffmpeg && docker buildx build --platform $(PLATFORMS) $(BUILD_ARGS) --build-arg FFMPEG_VERSION=$(FFMPEG_VERSION) $(FROM_IMAGE_ARGS) -t $(NAME)/ffmpeg:$(FFMPEG_VERSION)-$(BUILD_DATE) .
294295

296+
tools:
297+
cd ./.tools && docker buildx build --platform $(PLATFORMS) $(BUILD_ARGS) $(FROM_IMAGE_ARGS) -t $(NAME)/tools:$(BUILD_DATE) .
298+
docker tag $(NAME)/tools:$(BUILD_DATE) $(NAME)/tools:latest
299+
295300
all_browsers: node_base
296301
cd ./NodeChromium && docker buildx build --platform $(PLATFORMS) $(BUILD_ARGS) $(FROM_IMAGE_ARGS) --build-arg BASE=node-base --build-arg CHROMIUM_VERSION=$(CHROMIUM_VERSION) -t $(NAME)/node-all-browsers:$(TAG_VERSION) . ; \
297302
cd .. ; \
@@ -414,6 +419,7 @@ tag_latest:
414419
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:latest
415420
docker tag $(NAME)/standalone-all-browsers:$(TAG_VERSION) $(NAME)/standalone-all-browsers:latest
416421
docker tag $(NAME)/video:$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) $(NAME)/video:latest
422+
docker tag $(NAME)/tools:$(BUILD_DATE) $(NAME)/tools:latest
417423
case "$(PLATFORMS)" in *linux/amd64*) \
418424
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:latest && \
419425
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:latest && \
@@ -452,6 +458,7 @@ release_latest: release_grid_scaler_latest
452458
docker push $(NAME)/standalone-docker:latest
453459
docker push $(NAME)/standalone-all-browsers:latest
454460
docker push $(NAME)/video:latest
461+
docker push $(NAME)/tools:latest
455462

456463
generate_latest_sbom:
457464
NAME=$(NAME) FILTER_IMAGE_TAG=latest OUTPUT_FILE=$(SBOM_OUTPUT) ./generate_sbom.sh
@@ -474,6 +481,7 @@ tag_nightly:
474481
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:nightly
475482
docker tag $(NAME)/standalone-all-browsers:$(TAG_VERSION) $(NAME)/standalone-all-browsers:nightly
476483
docker tag $(NAME)/video:$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) $(NAME)/video:nightly
484+
docker tag $(NAME)/tools:$(BUILD_DATE) $(NAME)/tools:nightly
477485
case "$(PLATFORMS)" in *linux/amd64*) \
478486
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:nightly && \
479487
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:nightly && \
@@ -507,6 +515,7 @@ release_nightly: release_grid_scaler_nightly
507515
docker push $(NAME)/standalone-docker:nightly
508516
docker push $(NAME)/standalone-all-browsers:nightly
509517
docker push $(NAME)/video:nightly
518+
docker push $(NAME)/tools:nightly
510519

511520
generate_nightly_sbom:
512521
NAME=$(NAME) FILTER_IMAGE_TAG=nightly OUTPUT_FILE=$(SBOM_OUTPUT) ./generate_sbom.sh

charts/selenium-grid/CONFIGURATION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
3434
| global.seleniumGrid.imageTag | string | `"4.35.0-20250828"` | Image tag for all selenium components |
3535
| global.seleniumGrid.nodesImageTag | string | `"4.35.0-20250828"` | Image tag for browser's nodes |
3636
| global.seleniumGrid.videoImageTag | string | `"ffmpeg-8.0-20250828"` | Image tag for browser's video recorder |
37-
| global.seleniumGrid.kubectlImage | string | `"bitnami/kubectl:latest"` | kubectl image is used to execute kubectl commands in utility jobs |
37+
| global.seleniumGrid.kubectlImage | string | `"selenium/tools:latest"` | kubectl image is used to execute kubectl commands in utility jobs |
3838
| global.seleniumGrid.imagePullSecret | string | `""` | Pull secret for all components, can be overridden individually |
3939
| global.seleniumGrid.logLevel | string | `"INFO"` | Log level for all components. Possible values describe here: https://www.selenium.dev/documentation/grid/configuration/cli_options/#logging |
4040
| global.seleniumGrid.defaultNodeStartupProbe | string | `"exec"` | Set default startup probe method for all nodes (supplied values: httpGet, exec). If not set, the default is httpGet |
@@ -402,7 +402,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
402402
| autoscaling.annotations | object | `{"helm.sh/hook":"post-install,post-upgrade,post-rollback","helm.sh/hook-weight":"1"}` | Annotations for KEDA resources: ScaledObject and ScaledJob |
403403
| autoscaling.patchObjectFinalizers.nameOverride | string | `nil` | Override the name of the patch job |
404404
| autoscaling.patchObjectFinalizers.enabled | bool | `true` | Enable patching finalizers for KEDA scaled resources. Workaround for Hook post-upgrade selenium-grid/templates/x-node-hpa.yaml failed: object is being deleted: scaledobjects.keda.sh "x" already exists |
405-
| autoscaling.patchObjectFinalizers.activeDeadlineSeconds | int | `300` | Deadline (in seconds) for patch job to complete |
405+
| autoscaling.patchObjectFinalizers.activeDeadlineSeconds | int | `600` | Deadline (in seconds) for patch job to complete |
406406
| autoscaling.patchObjectFinalizers.annotations | object | `{"helm.sh/hook":"post-install,post-upgrade,post-rollback,pre-delete","helm.sh/hook-delete-policy":"hook-succeeded,before-hook-creation"}` | Annotations for patch job |
407407
| autoscaling.patchObjectFinalizers.deleteObjectsScript | string | `""` | Define your custom script to replace the default script |
408408
| autoscaling.patchObjectFinalizers.patchFinalizersScript | string | `""` | Define your custom script to replace the default script |

charts/selenium-grid/templates/patch-keda/delete-keda-objects-job.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ spec:
3636
{{- with $.Values.autoscaling.patchObjectFinalizers.resources }}
3737
resources: {{ toYaml . | nindent 12 }}
3838
{{- end }}
39-
{{- with $.Values.autoscaling.patchObjectFinalizers.tolerations }}
40-
tolerations: {{ toYaml . | nindent 12 }}
41-
{{- end }}
39+
{{- with $.Values.autoscaling.patchObjectFinalizers.tolerations }}
40+
tolerations: {{ toYaml . | nindent 8 }}
41+
{{- end }}
4242
volumes:
4343
- name: cleanup-script
4444
configMap:

charts/selenium-grid/templates/patch-keda/patch-keda-objects-job.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ spec:
3636
{{- with $.Values.autoscaling.patchObjectFinalizers.resources }}
3737
resources: {{ toYaml . | nindent 12 }}
3838
{{- end }}
39-
{{- with $.Values.autoscaling.patchObjectFinalizers.tolerations }}
40-
tolerations: {{ toYaml . | nindent 12 }}
41-
{{- end }}
39+
{{- with $.Values.autoscaling.patchObjectFinalizers.tolerations }}
40+
tolerations: {{ toYaml . | nindent 8 }}
41+
{{- end }}
4242
volumes:
4343
- name: cleanup-script
4444
configMap:

charts/selenium-grid/values.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ global:
1313
# -- Image tag for browser's video recorder
1414
videoImageTag: ffmpeg-8.0-20250828
1515
# -- kubectl image is used to execute kubectl commands in utility jobs
16-
kubectlImage: bitnami/kubectl:latest
16+
kubectlImage: selenium/tools:latest
1717
# -- Pull secret for all components, can be overridden individually
1818
imagePullSecret: ""
1919
# -- Log level for all components. Possible values describe here: https://www.selenium.dev/documentation/grid/configuration/cli_options/#logging
@@ -1055,7 +1055,7 @@ autoscaling:
10551055
# -- Enable patching finalizers for KEDA scaled resources. Workaround for Hook post-upgrade selenium-grid/templates/x-node-hpa.yaml failed: object is being deleted: scaledobjects.keda.sh "x" already exists
10561056
enabled: true
10571057
# -- Deadline (in seconds) for patch job to complete
1058-
activeDeadlineSeconds: 300
1058+
activeDeadlineSeconds: 600
10591059
# -- Annotations for patch job
10601060
annotations:
10611061
"helm.sh/hook": post-install,post-upgrade,post-rollback,pre-delete

tests/charts/make/chart_test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ HELM_COMMAND_SET_IMAGES=" \
180180
--set global.seleniumGrid.imageTag=${VERSION} \
181181
--set global.seleniumGrid.nodesImageTag=${VERSION} \
182182
--set global.seleniumGrid.videoImageTag=${VIDEO_TAG} \
183+
--set global.seleniumGrid.kubectlImage=${NAMESPACE}/tools:latest \
183184
--set autoscaling.scaledOptions.pollingInterval=${AUTOSCALING_POLL_INTERVAL} \
184185
--set tracing.enabled=${CHART_ENABLE_TRACING} \
185186
--set global.seleniumGrid.httpLogs=${CHART_ENABLE_TRACING} \

tests/charts/templates/render/dummy.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ monitoring:
4545
autoscaling:
4646
enableWithExistingKEDA: true
4747
scalingType: deployment
48+
patchObjectFinalizers:
49+
tolerations:
50+
- key: "node-role.kubernetes.io/master"
51+
operator: "Equal"
52+
value: "true"
53+
effect: "NoExecute"
4854
scaledObjectOptions:
4955
pollingInterval: 30
5056
initialCooldownPeriod: 0

0 commit comments

Comments
 (0)