Skip to content

Commit 49c4a2f

Browse files
authored
K8s: Add configs for sessions external datastore (#2491)
* K8s: Add configs for sessions external datastore * Add docker-compose file for reference --------- Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent 7e6b9b3 commit 49c4a2f

27 files changed

+437
-27
lines changed

Base/Dockerfile

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ ARG OPENTELEMETRY_VERSION=1.44.1
1111
ARG GRPC_VERSION=1.68.1
1212
ARG NETTY_VERSION=4.1.115.Final
1313
ARG CS_VERSION=2.1.18
14+
ARG POSTGRESQL_VERSION=42.7.4
15+
ARG MVN_SELENIUM_VERSION=4.27.0
1416

1517
#Arguments to define the user running Selenium
1618
ARG SEL_USER=seluser
@@ -118,8 +120,16 @@ RUN --mount=type=secret,id=SEL_PASSWD \
118120
&& if [ -f "/tmp/cs" ]; then \
119121
java -jar /tmp/cs fetch --classpath --cache /external_jars \
120122
io.opentelemetry:opentelemetry-exporter-otlp:${OPENTELEMETRY_VERSION} \
121-
io.grpc:grpc-netty:${GRPC_VERSION} io.netty:netty-codec-http:${NETTY_VERSION} > /external_jars/.classpath.txt \
122-
&& chmod 664 /external_jars/.classpath.txt ; \
123+
io.grpc:grpc-netty:${GRPC_VERSION} \
124+
io.netty:netty-codec-http:${NETTY_VERSION} \
125+
> /external_jars/.classpath.txt \
126+
&& chmod 664 /external_jars/.classpath.txt \
127+
&& java -jar /tmp/cs fetch --classpath --cache /external_jars \
128+
org.seleniumhq.selenium:selenium-session-map-jdbc:${MVN_SELENIUM_VERSION} \
129+
org.postgresql:postgresql:${POSTGRESQL_VERSION} \
130+
org.seleniumhq.selenium:selenium-session-map-redis:${MVN_SELENIUM_VERSION} \
131+
> /external_jars/.classpath_session_map.txt \
132+
&& chmod 664 /external_jars/.classpath_session_map.txt ; \
123133
fi \
124134
&& rm -fr /root/.cache/* \
125135
# (Note that .bashrc is only executed in interactive bash shells.)
@@ -165,6 +175,8 @@ ENV SE_BIND_HOST=false \
165175
SE_SUPERVISORD_CHILD_LOG_DIR="/tmp" \
166176
SE_SUPERVISORD_LOG_FILE="/tmp/supervisord.log" \
167177
SE_SUPERVISORD_PID_FILE="/tmp/supervisord.pid" \
178+
SE_SUPERVISORD_AUTO_RESTART=true \
179+
SE_SUPERVISORD_START_RETRIES=5 \
168180
SE_LOG_TIMESTAMP_FORMAT="%Y-%m-%d %H:%M:%S,%3N" \
169181
SE_LOG_LEVEL="INFO" \
170182
SE_HTTP_LOGS=false \

Distributor/selenium-grid-distributor.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
priority=0
66
command=/opt/bin/start-selenium-grid-distributor.sh
77
autostart=true
8-
autorestart=false
8+
autorestart=%(ENV_SE_SUPERVISORD_AUTO_RESTART)s
99
startsecs=0
10-
startretries=0
10+
startretries=%(ENV_SE_SUPERVISORD_START_RETRIES)s
11+
stopsignal=TERM
1112

1213
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
1314
redirect_stderr=true

EventBus/selenium-grid-eventbus.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
priority=0
66
command=/opt/bin/start-selenium-grid-eventbus.sh
77
autostart=true
8-
autorestart=false
8+
autorestart=%(ENV_SE_SUPERVISORD_AUTO_RESTART)s
99
startsecs=0
10-
startretries=0
10+
startretries=%(ENV_SE_SUPERVISORD_START_RETRIES)s
11+
stopsignal=TERM
1112

1213
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
1314
redirect_stderr=true

Hub/selenium-grid-hub.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
priority=0
66
command=/opt/bin/start-selenium-grid-hub.sh
77
autostart=true
8-
autorestart=false
8+
autorestart=%(ENV_SE_SUPERVISORD_AUTO_RESTART)s
99
startsecs=0
10-
startretries=0
10+
startretries=%(ENV_SE_SUPERVISORD_START_RETRIES)s
11+
stopsignal=TERM
1112

1213
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
1314
redirect_stderr=true

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ chart_test_autoscaling_disabled:
917917
./tests/charts/make/chart_test.sh NoAutoscaling
918918

919919
chart_test_autoscaling_deployment_https:
920-
PLATFORMS=$(PLATFORMS) CHART_FULL_DISTRIBUTED_MODE=true CHART_ENABLE_BASIC_AUTH=true \
920+
PLATFORMS=$(PLATFORMS) CHART_FULL_DISTRIBUTED_MODE=true CHART_ENABLE_BASIC_AUTH=true TEST_EXTERNAL_DATASTORE=postgresql \
921921
SECURE_INGRESS_ONLY_DEFAULT=true INGRESS_DISABLE_USE_HTTP2=true SELENIUM_GRID_PROTOCOL=https CHART_ENABLE_INGRESS_HOSTNAME=true SELENIUM_GRID_PORT=443 \
922922
SELENIUM_GRID_AUTOSCALING_MIN_REPLICA=0 MAX_SESSIONS_FIREFOX=1 MAX_SESSIONS_EDGE=1 MAX_SESSIONS_CHROME=1 TEST_NAME_OVERRIDE=true \
923923
VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \
@@ -955,7 +955,7 @@ chart_test_autoscaling_job:
955955
./tests/charts/make/chart_test.sh JobAutoscaling
956956

957957
chart_test_autoscaling_playwright_connect_grid:
958-
PLATFORMS=$(PLATFORMS) CHART_ENABLE_TRACING=true CHART_ENABLE_BASIC_AUTH=true MATRIX_TESTS=CDPTests \
958+
PLATFORMS=$(PLATFORMS) CHART_FULL_DISTRIBUTED_MODE=true CHART_ENABLE_BASIC_AUTH=true TEST_EXTERNAL_DATASTORE=redis MATRIX_TESTS=CDPTests \
959959
BASIC_AUTH_USERNAME=docker-selenium BASIC_AUTH_PASSWORD=2NMI4jdBi6k7bENoeUfV25295VvzwAE9chM24a+2VL95uOHozo \
960960
SECURE_INGRESS_ONLY_DEFAULT=true SECURE_USE_EXTERNAL_CERT=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -I | cut -d' ' -f1) SELENIUM_GRID_PORT=443 \
961961
VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \

Router/selenium-grid-router.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
priority=0
66
command=/opt/bin/start-selenium-grid-router.sh
77
autostart=true
8-
autorestart=false
8+
autorestart=%(ENV_SE_SUPERVISORD_AUTO_RESTART)s
99
startsecs=0
10-
startretries=0
10+
startretries=%(ENV_SE_SUPERVISORD_START_RETRIES)s
11+
stopsignal=TERM
1112

1213
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
1314
redirect_stderr=true

SessionQueue/selenium-grid-session-queue.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
priority=0
66
command=/opt/bin/start-selenium-grid-session-queue.sh
77
autostart=true
8-
autorestart=false
8+
autorestart=%(ENV_SE_SUPERVISORD_AUTO_RESTART)s
99
startsecs=0
10-
startretries=0
10+
startretries=%(ENV_SE_SUPERVISORD_START_RETRIES)s
11+
stopsignal=TERM
1112

1213
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
1314
redirect_stderr=true

Sessions/Dockerfile

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,24 @@ FROM ${NAMESPACE}/base:${VERSION}
44
ARG AUTHORS
55
LABEL authors=${AUTHORS}
66

7-
USER ${SEL_UID}
8-
97
#========================
108
# Selenium SessionMap Configuration
119
#========================
1210

13-
EXPOSE 5556
11+
USER root
1412

15-
COPY --chown="${SEL_UID}:${SEL_GID}" start-selenium-grid-sessions.sh \
13+
COPY --chown="${SEL_UID}:${SEL_GID}" start-selenium-grid-sessions.sh generate_config \
1614
/opt/bin/
15+
RUN chmod +x /opt/bin/start-selenium-grid-sessions.sh /opt/bin/generate_config
1716

1817
COPY selenium-grid-sessions.conf /etc/supervisor/conf.d/
1918

20-
ENV SE_OTEL_SERVICE_NAME="selenium-session-map"
19+
USER ${SEL_UID}
20+
21+
EXPOSE 5556
22+
23+
ENV SE_OTEL_SERVICE_NAME="selenium-session-map" \
24+
# Path to the Configfile
25+
CONFIG_FILE=/opt/selenium/config.toml \
26+
GENERATE_CONFIG=true \
27+
SE_SESSIONS_MAP_EXTERNAL_DATASTORE=false

Sessions/generate_config

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
if [[ -z "$CONFIG_FILE" ]]; then
4+
FILENAME="/opt/selenium/config.toml"
5+
else
6+
FILENAME="$CONFIG_FILE"
7+
fi
8+
9+
echo "[sessions]" >"$FILENAME"
10+
11+
if [ "${SE_SESSIONS_MAP_EXTERNAL_DATASTORE}" = "true" ]; then
12+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_SCHEME}" ]]; then
13+
echo "scheme = \"${SE_SESSIONS_MAP_EXTERNAL_SCHEME}\"" >>"$FILENAME"
14+
fi
15+
16+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_IMPLEMENTATION}" ]]; then
17+
echo "implementation = \"${SE_SESSIONS_MAP_EXTERNAL_IMPLEMENTATION}\"" >>"$FILENAME"
18+
fi
19+
20+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_HOSTNAME}" ]]; then
21+
echo "hostname = \"${SE_SESSIONS_MAP_EXTERNAL_HOSTNAME}\"" >>"$FILENAME"
22+
fi
23+
24+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_PORT}" ]]; then
25+
echo "port = \"${SE_SESSIONS_MAP_EXTERNAL_PORT}\"" >>"$FILENAME"
26+
fi
27+
28+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_JDBC_URL}" ]]; then
29+
echo "jdbc-url = \"${SE_SESSIONS_MAP_EXTERNAL_JDBC_URL}\"" >>"$FILENAME"
30+
fi
31+
32+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_JDBC_USER}" ]]; then
33+
echo "jdbc-user = \"${SE_SESSIONS_MAP_EXTERNAL_JDBC_USER}\"" >>"$FILENAME"
34+
fi
35+
36+
if [[ -n "${SE_SESSIONS_MAP_EXTERNAL_JDBC_PASSWORD}" ]]; then
37+
echo "jdbc-password = \"${SE_SESSIONS_MAP_EXTERNAL_JDBC_PASSWORD}\"" >>"$FILENAME"
38+
fi
39+
fi

Sessions/init.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CREATE TABLE IF NOT EXISTS sessions_map(
2+
session_ids varchar(256),
3+
session_caps text,
4+
session_uri varchar(256),
5+
session_stereotype text,
6+
session_start varchar(256)
7+
);

0 commit comments

Comments
 (0)