Skip to content

Commit 528c394

Browse files
authored
Merge branch 'main' into 2025/refactor/pgBackup
2 parents d60fd0c + 441db22 commit 528c394

File tree

10 files changed

+90
-14
lines changed

10 files changed

+90
-14
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
- [ ] Service is restartable
2020
- [ ] Service restart is zero-downtime
2121
- [ ] Service has >1 replicas in PROD
22-
- [ ] Service has docker heathlcheck enabled
22+
- [ ] Service has docker healthcheck enabled
2323
- [ ] Service is monitored (via prometheus and grafana)
2424
- [ ] Service is not bound to one specific node (e.g. via files or volumes)
2525
- [ ] Relevant OPS E2E Test are added
26+
- [ ] Grafana dashboards updated accordingly
2627
2728
If exposed via traefik
2829
- [ ] Service's Public URL is included in maintenance mode

charts/Makefile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,12 @@ helmfile-sync: .check-helmfile-installed helmfile.yaml ## Syncs the helmfile con
5050
fi
5151

5252
.PHONY: configure-local-hosts
53-
configure-local-hosts: ## Adds local hosts entries for the machine
54-
@echo "Adding $(MACHINE_FQDN) hosts to /etc/hosts ..."
55-
@grep -q '127.0.0.1 k8s.monitoring.$(MACHINE_FQDN)' /etc/hosts || echo '127.0.0.1 k8s.monitoring.$(MACHINE_FQDN)' | sudo tee -a /etc/hosts
53+
configure-local-hosts: $(REPO_CONFIG_LOCATION) ## Adds local hosts entries for the machine
54+
# "Updating /etc/hosts with k8s $(MACHINE_FQDN) hosts ..."
55+
@set -a; source $(REPO_CONFIG_LOCATION); set +a; \
56+
grep -q "127.0.0.1 $$K8S_MONITORING_FQDN" /etc/hosts || echo "127.0.0.1 $$K8S_MONITORING_FQDN" | sudo tee -a /etc/hosts
57+
@set -a; source $(REPO_CONFIG_LOCATION); set +a; \
58+
grep -q "127.0.0.1 $$K8S_PRIVATE_FQDN" /etc/hosts || echo "127.0.0.1 $$K8S_PRIVATE_FQDN" | sudo tee -a /etc/hosts
5659

5760
.PHONY: helmfile-diff
5861
helmfile-diff: .check-helmfile-installed helmfile.yaml ## Shows the differences that would be applied by helmfile

scripts/deployments/deploy_everything_locally.bash

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,4 +258,9 @@ if [ "$start_simcore" -eq 0 ]; then
258258
pushd "${service_dir}"
259259
call_make "." up-"$stack_target"
260260
popd
261+
log_info "starting vendor services..."
262+
service_dir="${repo_basedir}"/services/vendors
263+
pushd "${service_dir}"
264+
call_make "." up-"$stack_target"
265+
popd
261266
fi

services/maintenance-page/docker-compose.yml.j2

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ services:
2828
- traefik.enable=true
2929
- traefik.swarm.network=${PUBLIC_NETWORK}
3030
- traefik.http.routers.{{"maintenance_" + j2item.replace('@','').replace(' ','').replace('.','').replace('-','').replace('\'','') + "_html"}}.priority={{MAINTENANCE_PAGES_TRAEFIK_PRIORITY}}
31+
- traefik.http.routers.{{"maintenance_" + j2item.replace('@','').replace(' ','').replace('.','').replace('-','').replace('\'','') + "_html"}}.rule=Host(`{{VENDOR_CHATBOT_SUBDOMAIN_PREFIX}}.{{j2item}}`) || (Host(`{{j2item}}`) && PathPrefix(`/`)) || (HostRegexp(`services.{{j2item}}`) && PathPrefix(`/`))
3132
- traefik.http.routers.{{"maintenance_" + j2item.replace('@','').replace(' ','').replace('.','').replace('-','').replace('\'','') + "_html"}}.rule=Host(`{{VENDOR_MANUAL_SUBDOMAIN_PREFIX}}.{{j2item}}`) || (Host(`{{j2item}}`) && PathPrefix(`/`)) || (HostRegexp(`services.{{j2item}}`) && PathPrefix(`/`))
3233
- traefik.http.routers.{{"maintenance_" + j2item.replace('@','').replace(' ','').replace('.','').replace('-','').replace('\'','') + "_html"}}.tls=true
3334
- traefik.http.services.{{"maintenance_" + j2item.replace('@','').replace(' ','').replace('.','').replace('-','').replace('\'','') + "_html"}}.loadbalancer.server.port=80

services/simcore/docker-compose.yml.j2

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,34 @@ services:
337337
cpus: "1.0"
338338
memory: "512M"
339339
340+
wb-auth:
341+
networks:
342+
- monitored # traces
343+
- public # public service use auth
344+
deploy:
345+
replicas: ${WB_AUTH_REPLICAS}
346+
update_config:
347+
parallelism: 2
348+
order: start-first
349+
failure_action: rollback
350+
delay: 10s
351+
restart_policy:
352+
condition: any
353+
delay: 5s
354+
max_attempts: 3
355+
window: 120s
356+
placement:
357+
constraints:
358+
- node.labels.simcore==true
359+
resources:
360+
reservations:
361+
cpus: "0.1"
362+
memory: "256M"
363+
limits:
364+
cpus: "1"
365+
memory: "1G"
366+
# healthcheck: defined in image
367+
340368
storage:
341369
environment:
342370
- S3_ENDPOINT=${S3_ENDPOINT}

services/traefik/docker-compose.yml.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ services:
131131
- traefik.http.middlewares.ops_ratelimit.ratelimit.sourcecriterion.ipstrategy.depth=1
132132
# Platform user auth: Use this middleware to enforce only authenticated users
133133
# https://doc.traefik.io/traefik/middlewares/http/forwardauth
134-
- traefik.http.middlewares.authenticated_platform_user.forwardauth.address=http://${WEBSERVER_HOST}:${WEBSERVER_PORT}/v0/auth:check
134+
- traefik.http.middlewares.authenticated_platform_user.forwardauth.address=http://${WB_AUTH_WEBSERVER_HOST}:${WB_AUTH_WEBSERVER_PORT}/v0/auth:check
135135
- traefik.http.middlewares.authenticated_platform_user.forwardauth.trustForwardHeader=true
136136
- traefik.http.middlewares.authenticated_platform_user.forwardauth.authResponseHeaders=Set-Cookie,osparc-sc2
137137
#

services/traefik/template.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ DEPLOYMENT_FQDNS_WWW_CAPTURE_TRAEFIK_RULE='${DEPLOYMENT_FQDNS_WWW_CAPTURE_TRAEFI
3434
PUBLIC_NETWORK=${PUBLIC_NETWORK}
3535
MONITORED_NETWORK=${MONITORED_NETWORK}
3636

37-
WEBSERVER_HOST=${WEBSERVER_HOST}
38-
WEBSERVER_PORT=${WEBSERVER_PORT}
37+
WB_AUTH_WEBSERVER_HOST=${WB_AUTH_WEBSERVER_HOST}
38+
WB_AUTH_WEBSERVER_PORT=${WB_AUTH_WEBSERVER_PORT}
3939

4040
TRAEFIK_DOMAINS_REDIRECT_FROM=${TRAEFIK_DOMAINS_REDIRECT_FROM}
4141
TRAEFIK_DOMAINS_REDIRECT_TO=${TRAEFIK_DOMAINS_REDIRECT_TO}

services/vendors/docker-compose.yml.j2

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services:
55
image: ${VENDOR_MANUAL_IMAGE}
66
init: true
77
{%- raw %}
8-
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
8+
hostname: "v-manual-{{.Node.Hostname}}-{{.Task.Slot}}"
99
{%- endraw %}
1010
deploy:
1111
replicas: ${VENDOR_MANUAL_REPLICAS}
@@ -30,11 +30,45 @@ services:
3030
- traefik.http.services.vendor_manual.loadbalancer.server.port=${VENDOR_MANUAL_PORT}
3131
- traefik.http.routers.vendor_manual.entrypoints=https
3232
- traefik.http.routers.vendor_manual.tls=true
33-
- traefik.http.routers.vendor_manual.rule={{ generate_vendors_manual_traefik_rule(VENDOR_MANUAL_PRODUCTS, VENDOR_MANUAL_SUBDOMAIN_PREFIX) }}
33+
- traefik.http.routers.vendor_manual.rule={{ generate_vendors_traefik_rule(VENDOR_MANUAL_PRODUCTS, VENDOR_MANUAL_SUBDOMAIN_PREFIX) }}
3434
- traefik.http.routers.vendor_manual.middlewares=ops_gzip@swarm, authenticated_platform_user@swarm
3535
networks:
3636
- public
37-
37+
chat:
38+
image: ${VENDOR_CHATBOT_IMAGE}
39+
init: true
40+
{%- raw %}
41+
hostname: "v-chat-{{.Node.Hostname}}-{{.Task.Slot}}"
42+
{%- endraw %}
43+
deploy:
44+
replicas: ${VENDOR_CHATBOT_REPLICAS}
45+
placement:
46+
constraints:
47+
- node.labels.simcore==true
48+
resources:
49+
limits:
50+
cpus: "1.0"
51+
memory: 2.5G
52+
reservations:
53+
cpus: "0.1"
54+
memory: 512M
55+
update_config:
56+
parallelism: 1
57+
order: start-first
58+
failure_action: continue
59+
delay: 10s
60+
labels:
61+
- traefik.enable=true
62+
- traefik.swarm.network=${PUBLIC_NETWORK}
63+
- traefik.http.services.vendor_chat.loadbalancer.server.port=${VENDOR_CHATBOT_PORT}
64+
- traefik.http.routers.vendor_chat.entrypoints=https
65+
- traefik.http.routers.vendor_chat.tls=true
66+
- traefik.http.routers.vendor_chat.rule={{ generate_vendors_traefik_rule(VENDOR_CHATBOT_PRODUCTS, VENDOR_CHATBOT_SUBDOMAIN_PREFIX) }}
67+
- traefik.http.routers.vendor_chat.middlewares=authenticated_platform_user@swarm
68+
- prometheus-job=vendor-chat
69+
- prometheus-port=8000
70+
networks:
71+
- public
3872
networks:
3973
public:
4074
external: true
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
def _generate_vendors_manual_traefik_rule(domains: str, subdomain_prefix: str) -> str:
1+
def _generate_vendors_traefik_rule(domains: str, subdomain_prefix: str) -> str:
22
domain_list = domains.strip().strip(",").split(",")
33
domains = [f"{subdomain_prefix}.{domain}" for domain in domain_list]
44
return " || ".join(f"Host(`{d}`)" for d in domains)
55

66

77
def j2_environment(env):
8-
env.globals.update(
9-
generate_vendors_manual_traefik_rule=_generate_vendors_manual_traefik_rule
10-
)
8+
env.globals.update(generate_vendors_traefik_rule=_generate_vendors_traefik_rule)
119
return env

services/vendors/template.env

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ VENDOR_MANUAL_REPLICAS=${VENDOR_MANUAL_REPLICAS}
33
VENDOR_MANUAL_SUBDOMAIN_PREFIX=${VENDOR_MANUAL_SUBDOMAIN_PREFIX}
44
VENDOR_MANUAL_PRODUCTS=${VENDOR_MANUAL_PRODUCTS}
55
VENDOR_MANUAL_PORT=${VENDOR_MANUAL_PORT}
6+
VENDOR_CHATBOT_IMAGE=${VENDOR_CHATBOT_IMAGE}
7+
VENDOR_CHATBOT_REPLICAS=${VENDOR_CHATBOT_REPLICAS}
8+
VENDOR_CHATBOT_SUBDOMAIN_PREFIX=${VENDOR_CHATBOT_SUBDOMAIN_PREFIX}
9+
VENDOR_CHATBOT_PRODUCTS=${VENDOR_CHATBOT_PRODUCTS}
10+
VENDOR_CHATBOT_PORT=${VENDOR_CHATBOT_PORT}
611
PUBLIC_NETWORK=${PUBLIC_NETWORK}
12+
OTEL_EXPORTER_OTLP_ENDPOINT=${TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT}:${TRACING_OPENTELEMETRY_COLLECTOR_PORT}

0 commit comments

Comments
 (0)