From 16cebbe5583f74d5c733341d160eee64cf209c6d Mon Sep 17 00:00:00 2001 From: Pierre Delpy Date: Fri, 6 Nov 2026 13:43:45 +0100 Subject: [PATCH] Add the ITCC Overview, a Teiler without OIDC, to the itcc project Enabled with ENABLE_TEILER, served under /itcc-overview. Local apps: quality report, export, validator (ENABLE_OMICS) and local explorer (ENABLE_LENS). Central apps: explorer and data warehouse. The dashboard lists apps only if local and central apps exist. teiler-backend:develop, because 1.0.2 (latest) rejects the relative orchestrator URL. --- itcc/modules/teiler-compose.yml | 113 ++++++++++++++++++++++++++++++++ itcc/modules/teiler-setup.sh | 8 +++ itcc/teiler-assets/styling.json | 4 ++ 3 files changed, 125 insertions(+) create mode 100644 itcc/modules/teiler-compose.yml create mode 100644 itcc/modules/teiler-setup.sh create mode 100644 itcc/teiler-assets/styling.json diff --git a/itcc/modules/teiler-compose.yml b/itcc/modules/teiler-compose.yml new file mode 100644 index 0000000..91713f8 --- /dev/null +++ b/itcc/modules/teiler-compose.yml @@ -0,0 +1,113 @@ +# ITCC Overview, built from the Teiler. Without OIDC: the apps are public in the dashboard and all routes are behind the auth middleware +services: + + overview-orchestrator: + image: docker.verbis.dkfz.de/cache/samply/teiler-orchestrator:latest + container_name: bridgehead-overview-orchestrator + labels: + - "traefik.enable=true" + - "traefik.http.routers.overview_orchestrator_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview`)" + - "traefik.http.services.overview_orchestrator_itcc.loadbalancer.server.port=9000" + - "traefik.http.routers.overview_orchestrator_itcc.tls=true" + - "traefik.http.middlewares.overview_orchestrator_itcc_strip.stripprefix.prefixes=/itcc-overview" + - "traefik.http.routers.overview_orchestrator_itcc.middlewares=overview_orchestrator_itcc_strip,auth" + environment: + TEILER_BACKEND_URL: "/itcc-overview-backend" + TEILER_DASHBOARD_URL: "/itcc-overview-dashboard" + DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE_LOWER_CASE}" + HTTP_RELATIVE_PATH: "/itcc-overview" + + overview-dashboard: + image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:develop + container_name: bridgehead-overview-dashboard + labels: + - "traefik.enable=true" + - "traefik.http.routers.overview_dashboard_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview-dashboard`)" + - "traefik.http.services.overview_dashboard_itcc.loadbalancer.server.port=80" + - "traefik.http.routers.overview_dashboard_itcc.tls=true" + - "traefik.http.middlewares.overview_dashboard_itcc_strip.stripprefix.prefixes=/itcc-overview-dashboard" + - "traefik.http.routers.overview_dashboard_itcc.middlewares=overview_dashboard_itcc_strip,auth" + environment: + DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}" + TEILER_BACKEND_URL: "/itcc-overview-backend" + TEILER_DASHBOARD_URL: "/itcc-overview-dashboard" + TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}" + TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}" + TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}" + TEILER_PROJECT: "ITCC" + EXPORTER_API_KEY: "${EXPORTER_API_KEY}" + TEILER_ORCHESTRATOR_URL: "/itcc-overview" + TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/itcc-overview" + REPORTER_DEFAULT_TEMPLATE_ID: "itcc-qb" + EXPORTER_DEFAULT_TEMPLATE_ID: "itcc" + + overview-backend: + image: docker.verbis.dkfz.de/cache/samply/teiler-backend:develop + container_name: bridgehead-overview-backend + labels: + - "traefik.enable=true" + - "traefik.http.routers.overview_backend_itcc.rule=Host(`${HOST}`) && PathPrefix(`/itcc-overview-backend`)" + - "traefik.http.services.overview_backend_itcc.loadbalancer.server.port=8085" + - "traefik.http.routers.overview_backend_itcc.tls=true" + - "traefik.http.middlewares.overview_backend_itcc_strip.stripprefix.prefixes=/itcc-overview-backend" + - "traefik.http.routers.overview_backend_itcc.middlewares=overview_backend_itcc_strip,auth" + environment: + LOG_LEVEL: "INFO" + APPLICATION_PORT: "8085" + DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}" + TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/itcc-overview" + TEILER_ORCHESTRATOR_URL: "/itcc-overview" + TEILER_DASHBOARD_DE_URL: "/itcc-overview-dashboard/de" + TEILER_DASHBOARD_EN_URL: "/itcc-overview-dashboard/en" + TEILER_DASHBOARD_STYLING: "/itcc-overview-backend/assets/styling.json" + TEILER_DASHBOARD_LOGO_TEXT: "ITCC Overview" + TEILER_BACKEND_ASSETS_DIRECTORY: "/app/assets" + HTTP_PROXY: "http://forward_proxy:3128" + TEILER_APP1_NAME: "quality-report" + TEILER_APP1_ROLES: "TEILER_PUBLIC" + TEILER_APP1_BACKENDURL: "/itcc-reporter" + TEILER_APP1_BACKENDCHECKURL: "http://reporter:8095/info" + TEILER_APP2_NAME: "exporter" + TEILER_APP2_ROLES: "TEILER_PUBLIC" + TEILER_APP2_BACKENDURL: "/itcc-exporter" + TEILER_APP2_BACKENDCHECKURL: "http://exporter:8092/info" + TEILER_APP3_NAME: "execution" + TEILER_APP3_ROLES: "TEILER_PUBLIC" + TEILER_APP3_INMENU: "false" + TEILER_APP3_BACKENDURL: "/itcc-exporter" + TEILER_APP3_BACKENDCHECKURL: "http://exporter:8092/info" + TEILER_APP4_NAME: "validator" + TEILER_APP4_TITLE: "Validator" + TEILER_APP4_DESCRIPTION: "Checks the local data against the ITCC data model" + TEILER_APP4_SOURCEURL: "https://${HOST}/itcc-validator/" + TEILER_APP4_SOURCECHECKURL: "http://blaze-validator:8091/" + TEILER_APP4_ROLES: "TEILER_PUBLIC" + TEILER_APP4_ICONCLASS: "bi bi-check2-square" + TEILER_APP4_ISEXTERNALLINK: "true" + # The validator belongs to the omics ingest + TEILER_APP4_ISACTIVATED: "${ENABLE_OMICS:-false}" + TEILER_APP5_NAME: "local-explorer" + TEILER_APP5_TITLE: "Local Explorer" + TEILER_APP5_SOURCEURL: "https://${HOST}/" + TEILER_APP5_SOURCECHECKURL: "http://itcc-explorer:3000/" + TEILER_APP5_ROLES: "TEILER_PUBLIC" + TEILER_APP5_ICONCLASS: "bi bi-search" + TEILER_APP5_ISEXTERNALLINK: "true" + TEILER_APP5_ISACTIVATED: "${ENABLE_LENS:-false}" + TEILER_APP6_NAME: "central-explorer" + TEILER_APP6_TITLE: "Central Explorer" + TEILER_APP6_SOURCEURL: "https://portal.pedcanportal.eu/" + TEILER_APP6_ROLES: "TEILER_PUBLIC" + TEILER_APP6_ICONCLASS: "bi bi-globe" + TEILER_APP6_ISEXTERNALLINK: "true" + TEILER_APP6_ISLOCAL: "false" + TEILER_APP7_NAME: "data-warehouse" + TEILER_APP7_TITLE: "Central Data Warehouse" + TEILER_APP7_DESCRIPTION: "Reachable from the DKFZ intranet only" + TEILER_APP7_SOURCEURL: "https://garage-itcc.sci-cloud.dkfz.de/auth/login" + TEILER_APP7_ROLES: "TEILER_PUBLIC" + TEILER_APP7_ICONCLASS: "bi bi-database" + TEILER_APP7_ISEXTERNALLINK: "true" + TEILER_APP7_ISLOCAL: "false" + volumes: + - "/srv/docker/bridgehead/itcc/teiler-assets:/app/assets:ro" diff --git a/itcc/modules/teiler-setup.sh b/itcc/modules/teiler-setup.sh new file mode 100644 index 0000000..dc8dfc4 --- /dev/null +++ b/itcc/modules/teiler-setup.sh @@ -0,0 +1,8 @@ +#!/bin/bash -e + +if [ "$ENABLE_TEILER" == true ];then + log INFO "Teiler setup detected -- will start Teiler services." + OVERRIDE+=" -f ./$PROJECT/modules/teiler-compose.yml" + TEILER_DEFAULT_LANGUAGE=EN + TEILER_DEFAULT_LANGUAGE_LOWER_CASE=${TEILER_DEFAULT_LANGUAGE,,} +fi diff --git a/itcc/teiler-assets/styling.json b/itcc/teiler-assets/styling.json new file mode 100644 index 0000000..6ce0761 --- /dev/null +++ b/itcc/teiler-assets/styling.json @@ -0,0 +1,4 @@ +{ + "logo": "/logo-ITCC.jpg", + "logoHeight": 40 +}