Skip to content

Commit ca0ba2a

Browse files
committed
Docker: Use in-house tools image to avoid pulling rate-limits
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
1 parent 8b90a3d commit ca0ba2a

File tree

5 files changed

+40
-5
lines changed

5 files changed

+40
-5
lines changed

.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} <docker-selenium@seleniumhq.org>"
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/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} \

0 commit comments

Comments
 (0)