mirror of
https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk.git
synced 2025-12-06 23:41:43 +01:00
Compare commits
94 Commits
feat/nubus
...
fix/trossn
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a395759551 | ||
|
|
8aa1a7fa7d | ||
|
|
ce03400043 | ||
|
|
61d74966d0 | ||
|
|
97f7a1cafd | ||
|
|
49ad36ef4e | ||
|
|
7d0d6ea8d1 | ||
|
|
a46a632616 | ||
|
|
4b99357b21 | ||
|
|
f194f24845 | ||
|
|
be6806f62f | ||
|
|
fd3df7df67 | ||
|
|
6b609edc4a | ||
|
|
63f8394e04 | ||
|
|
74d444e2d6 | ||
|
|
8a2d951c3b | ||
|
|
46412d1a9e | ||
|
|
26a7641a5a | ||
|
|
671f57a809 | ||
|
|
fe923bb9cd | ||
|
|
b4570a9a87 | ||
|
|
1067e725b3 | ||
|
|
dfaf4be640 | ||
|
|
e54aaab072 | ||
|
|
b806d51311 | ||
|
|
db7f5d60bd | ||
|
|
972020f946 | ||
|
|
23ef1d557b | ||
|
|
382af1dfb9 | ||
|
|
7239df2ec1 | ||
|
|
86a328bda1 | ||
|
|
85149086ae | ||
|
|
01c5e6b359 | ||
|
|
a8692d5506 | ||
|
|
1ad35f1e12 | ||
|
|
01767d3806 | ||
|
|
7268f607a5 | ||
|
|
e52343440d | ||
|
|
c03e4a5340 | ||
|
|
c90f7c1742 | ||
|
|
ceb09bee8c | ||
|
|
890b36ecbb | ||
|
|
6ef3641d82 | ||
|
|
45e569955d | ||
|
|
0ce346b162 | ||
|
|
c07b25c4b9 | ||
|
|
e89b16a747 | ||
|
|
064a5ad246 | ||
|
|
d8f3e05e58 | ||
|
|
368fe13ddb | ||
|
|
fcf33825d5 | ||
|
|
b1d0a05a0c | ||
|
|
b0eb28bc3f | ||
|
|
1a811743df | ||
|
|
d7a127fe26 | ||
|
|
e31a0a258e | ||
|
|
742c293243 | ||
|
|
f856205afc | ||
|
|
9fa8ace80f | ||
|
|
dc39b94e88 | ||
|
|
a31c5f59a6 | ||
|
|
a899699e21 | ||
|
|
bd2d7cf748 | ||
|
|
ecb566f61e | ||
|
|
75cd077351 | ||
|
|
6202bc4719 | ||
|
|
e1e8a7f121 | ||
|
|
af711b0edb | ||
|
|
4f92001d68 | ||
|
|
58693162e6 | ||
|
|
b95fd1152a | ||
|
|
a4ff89b213 | ||
|
|
d7fbc572ca | ||
|
|
4d99bf3bf0 | ||
|
|
6e4972107e | ||
|
|
2f88752ae6 | ||
|
|
f3d8cf08ef | ||
|
|
592e17027b | ||
|
|
6570c13f3a | ||
|
|
931ed95ce1 | ||
|
|
2b48698817 | ||
|
|
b2cfa8b996 | ||
|
|
11796699bb | ||
|
|
1c6666fe45 | ||
|
|
923209b474 | ||
|
|
650c41c3f0 | ||
|
|
88ac2396e6 | ||
|
|
1d47fa681a | ||
|
|
96baa6cc15 | ||
|
|
7167055303 | ||
|
|
e0852119e8 | ||
|
|
4e56ce4073 | ||
|
|
923533d7b7 | ||
|
|
04d9372cfc |
14
.gitignore
vendored
14
.gitignore
vendored
@@ -5,9 +5,19 @@
|
||||
.yamllint
|
||||
|
||||
# Ignore changes to sample environments
|
||||
helmfile/environments/dev/values.yaml.gotmpl
|
||||
helmfile/environments/prod/values.yaml.gotmpl
|
||||
helmfile/environments/dev/*.yaml.gotmpl
|
||||
helmfile/environments/prod/*.yaml.gotmpl
|
||||
|
||||
# Ignore in CI generated files
|
||||
.kyverno/opendesk.yaml
|
||||
.kyverno/kyverno-test.yaml
|
||||
|
||||
# Ignore editor backup files
|
||||
*~
|
||||
|
||||
# Ignore ./log directory and *.log files
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Ignore backup files, e.g. created by the script that eases the local chart development
|
||||
*.bak
|
||||
|
||||
121
.gitlab-ci.yml
121
.gitlab-ci.yml
@@ -4,7 +4,7 @@
|
||||
---
|
||||
include:
|
||||
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
|
||||
ref: "v2.3.2"
|
||||
ref: "v2.3.3"
|
||||
file:
|
||||
- "ci/common/automr.yml"
|
||||
- "ci/common/lint.yml"
|
||||
@@ -15,25 +15,32 @@ include:
|
||||
ref: "main"
|
||||
- local: "/.gitlab/lint/lint-opendesk.yml"
|
||||
rules:
|
||||
- if: "$JOB_OPENDESK_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event'"
|
||||
- if: >
|
||||
$JOB_OPENDESK_LINTER_ENABLED == 'false' ||
|
||||
$CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|trigger|api'
|
||||
when: "never"
|
||||
- when: "always"
|
||||
- local: "/.gitlab/lint/lint-kyverno.yml"
|
||||
rules:
|
||||
- if: "$JOB_KYVERNO_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|triggers'"
|
||||
- if: >
|
||||
$JOB_OPENDESK_LINTER_ENABLED == 'false' ||
|
||||
$CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|trigger|api'
|
||||
when: "never"
|
||||
- when: "always"
|
||||
|
||||
stages:
|
||||
- ".pre"
|
||||
- "renovate"
|
||||
- "scan"
|
||||
- "automr"
|
||||
- "env-cleanup"
|
||||
- "env"
|
||||
- "pre-services-deploy"
|
||||
- "migrations-pre"
|
||||
- "basic-services-deploy"
|
||||
- "component-deploy-stage-1"
|
||||
- "component-deploy-stage-2"
|
||||
- "migrations-post"
|
||||
- "lint"
|
||||
- "tests"
|
||||
- "env-stop"
|
||||
@@ -60,7 +67,8 @@ variables:
|
||||
- "yes"
|
||||
- "no"
|
||||
DEBUG_ENABLED:
|
||||
description: "Allows to set `debug.enabled` to true for a deployment, needs to be supported by stage specific configuration containting: `debug.enabled: {{ env \"DEBUG_ENABLED\" | default false }}`"
|
||||
description: "Allows to set `debug.enabled` to true for a deployment, needs to be supported by stage specific\
|
||||
configuration containting: `debug.enabled: {{ env \"DEBUG_ENABLED\" | default false }}`"
|
||||
value: "no"
|
||||
options:
|
||||
- "yes"
|
||||
@@ -71,6 +79,12 @@ variables:
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
DEPLOY_MIGRATIONS:
|
||||
description: "Deploy K8s job for migrations (pre & post)."
|
||||
value: "no"
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
DEPLOY_SERVICES:
|
||||
description: "Enable Service deployment."
|
||||
value: "no"
|
||||
@@ -78,7 +92,7 @@ variables:
|
||||
- "yes"
|
||||
- "no"
|
||||
DEPLOY_UMS:
|
||||
description: "Enable Univention Management Stack deployment."
|
||||
description: "Enable Nubus deployment."
|
||||
value: "no"
|
||||
options:
|
||||
- "yes"
|
||||
@@ -149,6 +163,12 @@ variables:
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
RUN_RENOVATE:
|
||||
description: "Triggers the Renovate based check for dependency updates."
|
||||
value: "no"
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
TESTS_BRANCH:
|
||||
description: "Branch of E2E-tests on which the test pipeline is triggered"
|
||||
value: "main"
|
||||
@@ -184,7 +204,7 @@ env-cleanup:
|
||||
needs: []
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
$ENV_STOP_BEFORE != "no"
|
||||
when: "on_success"
|
||||
@@ -196,6 +216,7 @@ env-cleanup:
|
||||
done
|
||||
kubectl delete pvc --all --namespace ${NAMESPACE};
|
||||
kubectl delete jobs --all --namespace ${NAMESPACE};
|
||||
kubectl delete configmaps --all --namespace ${NAMESPACE};
|
||||
else
|
||||
helmfile destroy --namespace ${NAMESPACE};
|
||||
fi
|
||||
@@ -209,7 +230,7 @@ env-start:
|
||||
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/
|
||||
when: "on_success"
|
||||
script:
|
||||
@@ -230,7 +251,7 @@ policies-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_SERVICES != "no")
|
||||
when: "on_success"
|
||||
@@ -238,12 +259,36 @@ policies-deploy:
|
||||
COMPONENT: "services"
|
||||
ADDITIONAL_ARGS: "-l name=opendesk-otterize"
|
||||
|
||||
migrations-pre:
|
||||
stage: "migrations-pre"
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_MIGRATIONS != "no")
|
||||
when: "on_success"
|
||||
variables:
|
||||
COMPONENT: "migrations-pre"
|
||||
|
||||
migrations-post:
|
||||
stage: "migrations-post"
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_MIGRATIONS != "no")
|
||||
when: "on_success"
|
||||
variables:
|
||||
COMPONENT: "migrations-post"
|
||||
|
||||
services-deploy:
|
||||
stage: "basic-services-deploy"
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_SERVICES != "no")
|
||||
when: "on_success"
|
||||
@@ -255,7 +300,7 @@ provisioning-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_UMS != "no" || $DEPLOY_PROVISIONING != "no")
|
||||
when: "on_success"
|
||||
@@ -267,12 +312,12 @@ ums-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_UMS != "no")
|
||||
when: "on_success"
|
||||
variables:
|
||||
COMPONENT: "univention-management-stack"
|
||||
COMPONENT: "nubus"
|
||||
|
||||
ox-deploy:
|
||||
stage: "component-deploy-stage-1"
|
||||
@@ -280,7 +325,7 @@ ox-deploy:
|
||||
timeout: "30m"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_OX != "no")
|
||||
when: "on_success"
|
||||
@@ -292,7 +337,7 @@ ics-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_ICS != "no")
|
||||
when: "on_success"
|
||||
@@ -304,7 +349,7 @@ xwiki-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_XWIKI != "no")
|
||||
when: "on_success"
|
||||
@@ -316,7 +361,7 @@ collabora-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no" || $DEPLOY_COLLABORA != "no")
|
||||
when: "on_success"
|
||||
@@ -328,7 +373,7 @@ cryptpad-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no" || $DEPLOY_CRYPTPAD != "no")
|
||||
when: "on_success"
|
||||
@@ -340,7 +385,7 @@ nextcloud-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no")
|
||||
when: "on_success"
|
||||
@@ -352,7 +397,7 @@ openproject-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_OPENPROJECT != "no")
|
||||
when: "on_success"
|
||||
@@ -364,7 +409,7 @@ openproject-bootstrap-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || ($DEPLOY_OPENPROJECT != "no" && $DEPLOY_NEXTCLOUD != "no"))
|
||||
when: "on_success"
|
||||
@@ -376,7 +421,7 @@ jitsi-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_JITSI != "no")
|
||||
when: "on_success"
|
||||
@@ -388,7 +433,7 @@ element-deploy:
|
||||
extends: ".deploy-common"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
|
||||
$NAMESPACE =~ /.+/ &&
|
||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_ELEMENT != "no")
|
||||
when: "on_success"
|
||||
@@ -404,7 +449,7 @@ env-stop:
|
||||
needs: []
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" && $NAMESPACE =~ /.+/
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" && $NAMESPACE =~ /.+/
|
||||
when: "manual"
|
||||
script:
|
||||
- "echo 'We do not stop the env (delete the namespace) at the moment in this stage, as deleting a branches also
|
||||
@@ -434,7 +479,7 @@ run-tests:
|
||||
stage: "tests"
|
||||
rules:
|
||||
- if: >
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" && $NAMESPACE =~ /.+/ && $RUN_TESTS == "yes"
|
||||
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" && $NAMESPACE =~ /.+/ && $RUN_TESTS == "yes"
|
||||
when: "on_success"
|
||||
script:
|
||||
- *ums-default-password
|
||||
@@ -539,25 +584,28 @@ avscan-start:
|
||||
|
||||
# Overwrite shared settings
|
||||
.common-semantic-release:
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/semantic-release-patched:1.0.0"
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/semantic-release-patched:latest"
|
||||
tags: []
|
||||
|
||||
conventional-commits-linter:
|
||||
rules:
|
||||
- if: "$JOB_CONVENTIONAL_COMMITS_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event'"
|
||||
- if: >
|
||||
$RUN_RENOVATE == "yes" ||
|
||||
$JOB_CONVENTIONAL_COMMITS_LINTER_ENABLED == 'false' ||
|
||||
$CI_PIPELINE_SOURCE =~ 'tags|merge_request_event'
|
||||
when: "never"
|
||||
- when: "always"
|
||||
|
||||
common-yaml-linter:
|
||||
rules:
|
||||
- if: "$JOB_COMMON_YAML_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|triggers|web|merge_request_event'"
|
||||
- if: "$JOB_COMMON_YAML_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|web|merge_request_event'"
|
||||
when: "never"
|
||||
- when: "always"
|
||||
|
||||
reuse-linter:
|
||||
allow_failure: false
|
||||
rules:
|
||||
- if: "$JOB_REUSE_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|triggers|web|merge_request_event'"
|
||||
- if: "$JOB_REUSE_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|web|merge_request_event'"
|
||||
when: "never"
|
||||
- when: "always"
|
||||
|
||||
@@ -623,4 +671,21 @@ release:
|
||||
- "semantic-release"
|
||||
needs:
|
||||
- "generate-docs"
|
||||
|
||||
renovate:
|
||||
rules:
|
||||
- if: >
|
||||
$RUN_RENOVATE == "yes"
|
||||
when: "on_success"
|
||||
# The `-full` image does not install the dependencies on the fly, that is our preferred approach
|
||||
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/renovate/renovate:37.356-full"
|
||||
variables:
|
||||
RENOVATE_CONFIG_FILE: "${CI_PROJECT_DIR}/.renovate/config.yaml"
|
||||
RENOVATE_ENDPOINT: "${CI_API_V4_URL}"
|
||||
# Increase the renovatebot log level on stdout
|
||||
LOG_LEVEL: "DEBUG"
|
||||
script:
|
||||
- "renovate ${RENOVATE_EXTRA_FLAGS}"
|
||||
stage: "renovate"
|
||||
|
||||
...
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
variables:
|
||||
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.3\
|
||||
@sha256:4630299fddf4248af1ad04528f0435d78f5b2694a154c99fe72b960260a7be61"
|
||||
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.4\
|
||||
@sha256:386e84e2c85c33537479e4bb1e1fe744c9cce5e87bcb9a3a384dcdc1727c19c0"
|
||||
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.4\
|
||||
@sha256:4120fe717071876f4c9ff128f26019d089fda158a4fb1912911e09af2fd3875f"
|
||||
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.5\
|
||||
@sha256:60870adb64b0503d4a6efd16cef4e074b91a4ca52b48811cfcea057bcccd07e4"
|
||||
|
||||
.common:
|
||||
cache: {}
|
||||
|
||||
@@ -17,12 +17,12 @@ lint-kyverno:
|
||||
- "intercom-service"
|
||||
- "jitsi"
|
||||
- "nextcloud"
|
||||
- "nubus"
|
||||
- "open-xchange"
|
||||
- "openproject"
|
||||
- "openproject-bootstrap"
|
||||
- "provisioning"
|
||||
- "services"
|
||||
- "univention-management-stack"
|
||||
- "xwiki"
|
||||
script:
|
||||
- "cd ${CI_PROJECT_DIR}/helmfile/apps/${APP}"
|
||||
|
||||
@@ -7,6 +7,11 @@ include:
|
||||
lint-opendesk:
|
||||
extends: ".lint-common"
|
||||
image: "${OPENDESK_CI_CLI_IMAGE}"
|
||||
rules:
|
||||
- if: >
|
||||
$RUN_RENOVATE == "yes"
|
||||
when: "never"
|
||||
- when: "always"
|
||||
script:
|
||||
- "node /app/src/index.js sort-all -d ${CI_PROJECT_DIR}/helmfile"
|
||||
- "git diff --exit-code"
|
||||
|
||||
16
.gitlab/merge_request_templates/Default.md
Normal file
16
.gitlab/merge_request_templates/Default.md
Normal file
@@ -0,0 +1,16 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
# Summary
|
||||
|
||||
- *describe the reason for/content of the MR*
|
||||
|
||||
# Commits
|
||||
|
||||
%{all_commits}
|
||||
|
||||
# Authors
|
||||
|
||||
%{co_authored_by}
|
||||
92
.renovate/config.yaml
Normal file
92
.renovate/config.yaml
Normal file
@@ -0,0 +1,92 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
# Platform type of repository
|
||||
platform: "gitlab"
|
||||
|
||||
# Enable onboarding merge request
|
||||
onboarding: false
|
||||
|
||||
# If set to true: keep repository data between runs instead of deleting the data
|
||||
persistRepoData: false
|
||||
|
||||
# Controls Renovate's behavior regarding repository config files such as renovate.json
|
||||
requireConfig: "ignored"
|
||||
|
||||
# List of Repositories
|
||||
# See: https://docs.renovatebot.com/configuration-options/
|
||||
repositories:
|
||||
- repository: "bmi/opendesk/deployment/opendesk"
|
||||
# Set the branch to read current dependency state from, this is especially useful during
|
||||
# renovate setup when looking into your feature branch or when your default branch is
|
||||
# not the one you want to check on.
|
||||
baseBranches: [ "develop" ]
|
||||
# Set a limit for the maximum number of parallel MRs (default 10)
|
||||
prConcurrentLimit: 50
|
||||
# Prefix to use for all branch names created by renovate bot (default: "renovate/")
|
||||
branchPrefix: "renovate/"
|
||||
# Lowercase merge request and commit titles ("never" = leave titles untouched )
|
||||
commitMessageLowerCase: "never"
|
||||
# Commit scope to use if Semantic Commits are enabled (fix(<scope>)...)
|
||||
semanticCommitScope: "renovate"
|
||||
# Commit type to use if Semantic Commits are enabled (default: "chore")
|
||||
semanticCommitType: "chore"
|
||||
# Enable dependency dashboard
|
||||
dependencyDashboard: true
|
||||
# Include package files only within these defined paths
|
||||
includePaths:
|
||||
- "helmfile/environments/default/images.yaml"
|
||||
- "helmfile/environments/default/charts.yaml"
|
||||
customManagers:
|
||||
- customType: "regex"
|
||||
fileMatch:
|
||||
- "helmfile/environments/default/images.yaml"
|
||||
datasourceTemplate: "docker"
|
||||
matchStrings:
|
||||
# yamllint disable rule:line-length rule:quoted-strings
|
||||
- ' providerResponsible: "(?<depType>.+?)"[\s\S]+? upstreamRegistry: "(?<registryUrl>.+?)"[\s\S]+? upstreamRepository: "(?<depName>.+?)"[\s\S]+? tag: "(?<currentValue>[^@]+)@(?<currentDigest>sha256:[a-f0-9]+)"'
|
||||
# yamllint enable rule:line-length rule:quoted-strings
|
||||
- customType: "regex"
|
||||
fileMatch:
|
||||
- "helmfile/environments/default/charts.yaml"
|
||||
datasourceTemplate: "docker"
|
||||
matchStrings:
|
||||
# yamllint disable rule:line-length rule:quoted-strings
|
||||
- ' providerResponsible: "(?<depType>.+?)"[\s\S]+? upstreamRegistry: "(?<registryUrl>.+?)"[\s\S]+? upstreamRepository: "(?<depName>.+?)"[\s\S]+? version: "(?<currentValue>.+?)"'
|
||||
# yamllint enable rule:line-length rule:quoted-strings
|
||||
# Rules for matching packages
|
||||
packageRules:
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "openDesk" ]
|
||||
groupName: "Platform"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "Collabora" ]
|
||||
groupName: "Collabora"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "Element" ]
|
||||
groupName: "Element"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "Nordeck" ]
|
||||
groupName: "Nordeck"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "Open-Xchange" ]
|
||||
groupName: "Open-Xchange"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "OpenProject" ]
|
||||
groupName: "OpenProject"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "OpenProject" ]
|
||||
groupName: "OpenProject"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "Univention" ]
|
||||
groupName: "Univention"
|
||||
- matchDatasources: [ "docker" ]
|
||||
matchDepTypes: [ "XWiki" ]
|
||||
groupName: "XWiki"
|
||||
# Add merge request labels
|
||||
labels:
|
||||
- "renovate"
|
||||
# Enable custom regex manager only
|
||||
enabledManagers:
|
||||
- "custom.regex"
|
||||
...
|
||||
14
.reuse/dep5
14
.reuse/dep5
@@ -1,12 +1,16 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: openDesk
|
||||
Upstream-Contact: <git+bmi-souveraener-arbeitsplatz-cla-1339-29pr0g9pj4or9yi6wfly6pbhg-issue@opencode.de>
|
||||
Source: https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/deployment/sovereign-workplace
|
||||
Upstream-Name: openDesk - der Souveräne Arbeitsplatz
|
||||
Upstream-Contact: <opendesk@zendis.de>
|
||||
Source: https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk
|
||||
|
||||
Files: helmfile/environments/default/theme/*
|
||||
Copyright: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
Files: helmfile/files/theme/*
|
||||
Copyright: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
License: Apache-2.0
|
||||
|
||||
Files: helmfile/files/gpg-pubkeys/*
|
||||
Copyright: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
License: CC0-1.0
|
||||
|
||||
Files: cspell.json
|
||||
Copyright: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
License: Apache-2.0
|
||||
|
||||
106
CHANGELOG.md
106
CHANGELOG.md
@@ -1,3 +1,109 @@
|
||||
# [0.9.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.8.1...v0.9.0) (2024-07-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **collabora:** Update to 24.04.5.1.1. ([8a2d951](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8a2d951c3b59c3f8ddb508ad8f95798774b7c4b0))
|
||||
* **collabora:** Update to 24.04.5.1.2. ([74d444e](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/74d444e2d6065082be3ca90373a4d3b1836ea7a8))
|
||||
* **docs:** Update workflow.md. ([fd3df7d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/fd3df7df6740d8e54b433c039d294843582e8947))
|
||||
* **docu:** Update documentation on integration uses cases ([#95](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/95)). ([382af1d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/382af1dfb966b5d10da4790212d6422a4a8c5618))
|
||||
* **helmfile:** Add S3 bucket for migrations. ([972020f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/972020f946d8238e65b1c1e2942682c797306e1a))
|
||||
* **helmfile:** Streamline prefixes for customizable defaults. UPGRADES: See `./docs/migrations.md` for more details. ([26a7641](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/26a7641a5ab764196af6bbe26d97907de86f541e))
|
||||
* **jitsi:** Raise memory limit for jicofo and jvb as required by upstream product. ([fe923bb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/fe923bb9cd58873957adb018c1410d33bb4d8f3a))
|
||||
* **keycloak:** Support for custom OIDC Clients and ClientScopes. ([46412d1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/46412d1a9e4547dea8d0da3e322400ea148edf19))
|
||||
* **nextcloud:** Support templating of default quota and `*_retention_obligation` settings ([#93](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/93)). ([23ef1d5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/23ef1d557bc0fdf6faac59f7a287f1ef1b302404))
|
||||
* **nextcloud:** Update to 28.0.7 including latest apps for 28. ([671f57a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/671f57a809eb4bb791698cda39f7711ac4833334))
|
||||
* **nextcloud:** Update to 28.0.7 including the apps, fix admin panel warnings ([#94](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/94)). Updated `cluster.networking.cidr` potentially requires manual migration, see `docs/migrations.md` for details. ([63f8394](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/63f8394e044670a89a642e933600b68ff740a102))
|
||||
* **openproject:** Bump to 14.3.0 and update Helm chart to 7.0.0. ([6b609ed](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6b609edc4a60601ca45372b4fc691f0ac7c9ed93))
|
||||
* **openproject:** Support for adding token to enable OpenProject Premium. ([dfaf4be](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/dfaf4be640209f5908815cceaf29db591212ddaa))
|
||||
* **xwiki:** Add email address mapping to LDAP sync; Fix hostname `null` value in notification links. ([1067e72](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1067e725b3dabce4ddfeb60b4cbe9e5b4d0db0e5))
|
||||
* **xwiki:** Remove .rtf and .odt export options as they are currently non functional. ([b806d51](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b806d51311c6d406ea3c93842601ddf5dbd13bb3))
|
||||
* **xwiki:** Update to 16.4. ([db7f5d6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/db7f5d60bdae437cebe58ab10f928a4a348e1ee3))
|
||||
* **xwiki:** Update to 16.4.1. ([e54aaab](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e54aaab072f31713b5172e4bab9ba7e9ca9c5c26))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **authentication:** Avoid that users can open a app they do not have the appropriate LDAP group set for. Implementation is based on role based client scopes. Introducing also an openDesk migration approach with a pre and post deployment stage. ([b4570a9](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b4570a9a873efa6c896fe543ab0ba3b94fd086c0))
|
||||
|
||||
## [0.8.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.8.0...v0.8.1) (2024-07-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **collabora:** Bump image to 24.04.4.1.1. ([368fe13](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/368fe13ddb080f0c8f42cbd3612a29f818308708))
|
||||
* **collabora:** Bump image to 24.04.4.2.1. ([01767d3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/01767d38061259853e4bd8b2eba31d3b04c4e672))
|
||||
* **docs:** Add Ports section to getting started. ([c07b25c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c07b25c4b9a702e214373fe08d95827286ebd866))
|
||||
* **docs:** Correction regarding the currently supported ingress controller. ([8514908](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/85149086ae70cb85a1718715747985a3da2a7b64))
|
||||
* **docs:** Update regarding the currently supported ingress controller. ([064a5ad](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/064a5ad246ea7217c2fb107787228d7aca9b5028))
|
||||
* **element:** Provide the internal cluster domain to `synapse-web`. ([a8692d5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a8692d5506dc65895a562423d8ddb7da9078fc3a))
|
||||
* **helmfile:** Add script to ease local development of platform charts. ([d8f3e05](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d8f3e05e584116f6196d43e0ea9bb8946ab2e5ab))
|
||||
* **helmfile:** Enable SMTP for XWiki and Element/Synapse; Streamline mail sender addresses within platform based on `<localpart>@<component>.<domain>` and allow configuration of `<localpart>`. ([01c5e6b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/01c5e6b359dd5eb42c98e818da301871bea79264))
|
||||
* **helmfile:** Include all `.yaml.gotmpl` files for the envs in `environments.yaml`. ([e523434](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e52343440d81c0596177399058b4711cc0d5da67))
|
||||
* **helmfile:** Streamline `functional.yaml`. *Upgrade notice:* If you set a non default value for `.Values.portal.enableDeploymentInformation` please change it to `.Values.admin.portal.deploymentInformation.enabled` with this version. ([e89b16a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e89b16a747f95be7661b1fd4f5c90acce638542e))
|
||||
* **jitsi:** Update PatchJVB bitnami/kubectl image to 1.30.2. ([6ef3641](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6ef3641d82d88d6fed80652b239bc63115abbf2d))
|
||||
* **nubus:** Enable Keycloak's user account console. ([c03e4a5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c03e4a534090dde46363a7cfab718bb307e22621))
|
||||
* **nubus:** Remove doublette ingress annotations. ([890b36e](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/890b36ecbb8c9311b5048d8d6d50ee5acf00ea61))
|
||||
* **open-xchange:** Fixing YAML indentation of updater resources ([0ce346b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0ce346b162feb0bc6fee7f18caee84917117abe1))
|
||||
* **openproject:** Bump image to 14.2.0. ([1ad35f1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1ad35f1e12e236607e3830da6d08010eb465b501))
|
||||
* **openproject:** Switch DBInit container image to Alpine based version to reduce footprint. ([c90f7c1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c90f7c1742d415d5a787ff5832959e2974b77b83))
|
||||
* **openproject:** Update PostgreSQL image for DB init to 16.3. ([45e5699](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/45e569955d09c584490e6826651f7564567c1f9b))
|
||||
* **services:** Allow Postfix "relayHost" to be empty. ([7268f60](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7268f607a5839c6e940ce07fa15c1ffec9610d19))
|
||||
|
||||
# [0.8.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.1...v0.8.0) (2024-06-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ci:** Allow CI to be triggered by API authorized personal access token. ([b95fd11](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b95fd1152a2122de0fbc2b31cacb8a1b1c5917b7))
|
||||
* **collabora:** Semi-disable update checker. ([d7a127f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d7a127fe269ddf0347adce692f138eb1a6359508))
|
||||
* **collabora:** Update to 24.04.3.1.1. ([5869316](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/58693162e6c2f72ba6254dd0168dea48539b7d43))
|
||||
* **docs:** Spell check and streamline. ([4d99bf3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4d99bf3bf085a6f8d4dbdef442fa969150dfff4d))
|
||||
* **element:** Bump container images (widgets, community artifacts). ([f856205](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f856205afce914ea62a9e309b9400714f4c4d040))
|
||||
* **element:** Bump to v1.11.67. ([a4ff89b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a4ff89b213afef9fd35dd6ab3c54bf0e8e8b20c9))
|
||||
* **element:** Update Synapse. ([9fa8ace](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9fa8ace80f9af5d5c96073fe836cf606956c4f43))
|
||||
* **helmfile:** Remove unused ox-provisioning hostname. ([e31a0a2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e31a0a258e274274e20aab41c4c757d891bff639))
|
||||
* **jitsi:** Update jitsi-keycloak-adapter image to Docker tag v20240314. ([6202bc4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6202bc4719e96c537c67a65a9419aa183edc6d55))
|
||||
* **nubus:** Change to new Univention upstream registry. ([d7fbc57](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d7fbc572ca5b3ee4eca31bf50f4e00f257a72b83))
|
||||
* **nubus:** Disable UDM REST API routing by default and always disable UMC local login. ([e1e8a7f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e1e8a7f121c41c3f23db4541211d255dfb06591a))
|
||||
* **nubus:** Guardian version bump and refactoring. ([2f88752](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2f88752ae6a9df7ff3cb9a3c2d158589f7defb33))
|
||||
* **nubus:** Re-add selfservice-listener image configuration. ([af711b0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/af711b0edb05bb96fe2ad7e51d5862ed97043178))
|
||||
* **open-xchange:** Set Nubus LDAP attribute to render manager_name in address book. See https://forge.univention.org/bugzilla/show_bug.cgi?id=53741 for reference. ([4f92001](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4f92001d688416133fcfd3415afb5f4bbceb7356))
|
||||
* **openproject:** Bump library/postgres image to v16. ([742c293](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/742c293243e5c8165e065b5b53af7bac6647fad1))
|
||||
* **openproject:** Bump to 14.1.0, set default timezone on deployment to `Europe/Berlin` and raise default memory limit to 2Gi. ([6e49721](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6e4972107e8eac498ace98217488f4e07fabb6b1))
|
||||
* **openproject:** Update Helm chart to v5.1.4. ([75cd077](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/75cd077351c0a892afcd57c835b77206ea90da66))
|
||||
* **openproject:** Update to 14.1.1 and bump PostgreSQL 13 image for InitDB. ([bd2d7cf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bd2d7cf748f8cb6b1693056c4a5fc4a60b598acd))
|
||||
* **services:** Update `opendesk-home` to v1.0.2 to fix issue with Element `.well-known` ingress collision. ([b0eb28b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b0eb28bc3f577a46021444832e0cc132f6e4b0e1))
|
||||
* **univention-management-stack:** Add functional switch to disable deployment information. ([a31c5f5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a31c5f59a68e90ba9e80350ebd5827e7b05d4ef5))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **element:** Enable Matrix federation via https. ([ecb566f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ecb566f61e9818ff204501730576af360e4e90d0))
|
||||
* **helmfile:** Add support for Ingress parameter configuration (proxy-body-size, proxy-read-timeout, proxy-send-timeout). ([dc39b94](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/dc39b94e8824683e54e0f2902e8b4bfe1c43442a))
|
||||
* **helmfile:** Create child helmfile for GitOps approach. ([a899699](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a899699e21b1d8da9886a93a2e74442799e23e96))
|
||||
* **nubus:** Cleanup Keycloak values. ([f3d8cf0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f3d8cf08efbba1b1dd5969821c3af7603202e67f))
|
||||
|
||||
## [0.7.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.0...v0.7.1) (2024-05-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ci:** Add Renovate dependency update automation. ([650c41c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/650c41c3f04b6c7c04a1d5eca76aba7f75e14b96))
|
||||
* **cryptpad:** Update Helm chart v0.0.19 and include CryptPad app in Helmfile deployment. ([931ed95](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/931ed95ce16d5be6bde7ea1c1140406f00fef060))
|
||||
* **docu:** Add IdP federation documentation. ([7167055](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7167055303bdbe9ad677b16635089c0328a849ff))
|
||||
* **docu:** Rename SYNAPSE_DOMAIN to MATRIX_DOMAIN. If you use SYNAPSE_DOMAIN in your deployment, ensure you set the MATRIX_DOMAIN accordingly before upgrading. ([96baa6c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/96baa6cc15bac8d3ce315132699e301093d5d6d8))
|
||||
* **element:** Provide certificate for alternative Synapse domain. ([88ac239](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/88ac2396e6888e0f28a80ceebaa0f51d2ba436ee))
|
||||
* **helmfile:** Use Open CoDE as default registry for Univention helm chart ([#71](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/71)). ([4e56ce4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4e56ce4073105003dffbcaa91af473c1f707cd13))
|
||||
* **jitsi:** Bump images to stable-9457-2. ([1d47fa6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1d47fa681adf29e4b4ca432a9d5390972098d2e0))
|
||||
* **jitsi:** Raise Jibri memory limits to fullfil Jibri's 2Gi /dev/shm requirement and update Helm chart; To update an existing installation you need to manually delete the `jitsi-prosody` stateful set before the update e.g. `kubectl -n <your_namespace> delete --cascade=orphan statefulsets jitsi-prosody`. Ensure you use the `--cascade=orphan` part, otherwise you have to remove and reinstall the complete deployment. ([6570c13](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6570c13f3a3ad5864de5afe6afb4c60483cd489f))
|
||||
* **nextcloud:** Bump to 28.0.5 incl. latest app versions. ([04d9372](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/04d9372cfccc80145962faf4c2387949a43c8f2c))
|
||||
* **nubus:** Bump Keycloak to 24.0.3. ([923533d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/923533d7b7527de728f73813397ed0c2a0427da5))
|
||||
* **nubus:** Enable 2FA for group "Domain Admins" by default. ([1179669](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/11796699bb551f8b83badd13204654c880b65efe))
|
||||
* **nubus:** Update keycloak-bootstap and keycloak-extensions. ([1c6666f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1c6666fe45fb7acd83c26b5f2b808fce3fb9e20b))
|
||||
* **open-xchange:** Support change of username. ([b2cfa8b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b2cfa8b9965ce50f593295c80c363bad7ef0454e))
|
||||
* **openproject:** Bump version to 14.0.1, update Helm chart to 4.5.0. ([e085211](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e0852119e8e248431f51a86e3bd5177cef0b1e93))
|
||||
|
||||
# [0.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.6.0...v0.7.0) (2024-05-06)
|
||||
|
||||
|
||||
|
||||
31
README.md
31
README.md
@@ -28,20 +28,20 @@ openDesk is a Kubernetes based, open-source and cloud-native digital workplace s
|
||||
|
||||
openDesk currently features the following functional main components:
|
||||
|
||||
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
|
||||
| -------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.59](https://github.com/element-hq/element-desktop/releases/tag/v1.11.59) | [For the most recent release](https://element.io/user-guide) |
|
||||
| Diagram editor | Cryptpad ft. diagrams.net | [5.6.0](https://github.com/cryptpad/cryptpad/releases/tag/5.6.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
|
||||
| File management | Nextcloud | [28.0.5](https://nextcloud.com/de/changelog/#28-0-5) | [Nextcloud 28](https://docs.nextcloud.com/) |
|
||||
| Groupware | OX App Suite | [8.23](https://documentation.open-xchange.com/appsuite/releases/8.23/) | Online documentation available from within the installed application; [Additional resources](https://www.open-xchange.com/resources/oxpedia) |
|
||||
| Knowledge management | XWiki | [15.10.8](https://www.xwiki.org/xwiki/bin/view/Blog/XWiki15108Released) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
|
||||
| Portal & IAM | Nubus | Product Preview[^1] | [Univention's documentation website](https://docs.software-univention.de/n/en/index.html) |
|
||||
| Project management | OpenProject | [14.0.1](https://www.openproject.org/docs/release-notes/14-0-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
||||
| Videoconferencing | Jitsi | [2.0.8922](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_8922) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
||||
| Weboffice | Collabora | [23.05.9.4.1](https://www.collaboraoffice.com/collabora-online-23-05-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
|
||||
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
|
||||
| -------------------- | --------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.67](https://github.com/element-hq/element-desktop/releases/tag/v1.11.67) | [For the most recent release](https://element.io/user-guide) |
|
||||
| Diagram editor | CryptPad ft. diagrams.net | [5.6.0](https://github.com/cryptpad/cryptpad/releases/tag/5.6.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
|
||||
| File management | Nextcloud | [28.0.5](https://nextcloud.com/de/changelog/#28-0-5) | [Nextcloud 28](https://docs.nextcloud.com/) |
|
||||
| Groupware | OX App Suite | [8.26](https://documentation.open-xchange.com/appsuite/releases/8.26/) | Online documentation available from within the installed application; [Additional resources](https://www.open-xchange.com/resources/oxpedia) |
|
||||
| Knowledge management | XWiki | [16.4.1](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.4.1/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
|
||||
| Portal & IAM | Nubus | Product Preview[^1] | [Univention's documentation website](https://docs.software-univention.de/n/en/index.html) |
|
||||
| Project management | OpenProject | [14.3.0](https://www.openproject.org/docs/release-notes/14-3-0/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
||||
| Videoconferencing | Jitsi | [2.0.9646](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9646) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
||||
| Weboffice | Collabora | [24.04.6.1.1](https://www.collaboraoffice.com/code-24-04-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
|
||||
|
||||
While not all components are perfectly shaped for the execution inside containers, one of the project's objectives is to
|
||||
align the applications with best practises regarding container design and operations.
|
||||
align the applications with best practices regarding container design and operations.
|
||||
|
||||
This documentation aims to give you all that is needed to set up your own instance of the openDesk.
|
||||
|
||||
@@ -91,7 +91,7 @@ Gitlab provides an
|
||||
[overview on the releases](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/releases)
|
||||
of this project.
|
||||
|
||||
Please find a list of the artefacts related to the release either in the source code archive attached to the release or
|
||||
Please find a list of the artifacts related to the release either in the source code archive attached to the release or
|
||||
in the files from the release's git-tag:
|
||||
- `./helmfile/environments/default/images.yaml`
|
||||
- `./helmfile/environments/default/charts.yaml`
|
||||
@@ -123,8 +123,7 @@ Copyright (C) 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwal
|
||||
# Footnotes
|
||||
|
||||
[^1]: Nubus is the Cloud Portal and IAM from Univention.
|
||||
It is currently integrated as a product preview within openDesk therefore,
|
||||
not all resources like documentation and structured release notes are available,
|
||||
while the
|
||||
It is currently integrated as a product preview within openDesk therefore, not all resources like documentation
|
||||
and structured release notes are available, while the
|
||||
[source code can already be found on Open CoDE](https://gitlab.opencode.de/bmi/opendesk/component-code/crossfunctional/univention).
|
||||
Please find updates regarding the Nubus at https://nubus.io.
|
||||
|
||||
80
cspell.json
Normal file
80
cspell.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"version": "0.2",
|
||||
"ignorePaths": [],
|
||||
"dictionaryDefinitions": [],
|
||||
"dictionaries": [],
|
||||
"words": [
|
||||
"openDesk",
|
||||
"AppSuite",
|
||||
"Collabora",
|
||||
"Digitale",
|
||||
"Jitsi",
|
||||
"Nextcloud",
|
||||
"Öffentlichen",
|
||||
"OpenProject",
|
||||
"Souveränität",
|
||||
"Verwaltung",
|
||||
"Zentrum",
|
||||
"Keycloak",
|
||||
"NATS",
|
||||
"slapadd",
|
||||
"slapcat",
|
||||
"RDBMS",
|
||||
"Velero",
|
||||
"Univention",
|
||||
"OIDC",
|
||||
"kcadmin",
|
||||
"DMARC",
|
||||
"homeserver",
|
||||
"Bundesministerium",
|
||||
"Innern",
|
||||
"Heimat",
|
||||
"Projektgruppe",
|
||||
"Aufbau",
|
||||
"Filepicker",
|
||||
"Weboffice",
|
||||
"Xchange",
|
||||
"opencode",
|
||||
"seccomp",
|
||||
"psql",
|
||||
"databasename",
|
||||
"helmfile",
|
||||
"gotmpl",
|
||||
"containerd",
|
||||
"letsencrypt",
|
||||
"CNCF",
|
||||
"kubespray",
|
||||
"ICAP",
|
||||
"Ceph",
|
||||
"Coturn",
|
||||
"Minio",
|
||||
"Kyverno",
|
||||
"Otterize",
|
||||
"IBAC",
|
||||
"pubkeys",
|
||||
"Grundschutz",
|
||||
"Kubescape",
|
||||
"Gitflow",
|
||||
"hadolint",
|
||||
"explorative",
|
||||
"Nordeck",
|
||||
"Nubus",
|
||||
"Souveräne",
|
||||
"Arbeitsplatz",
|
||||
"commandline",
|
||||
"helmfiles",
|
||||
"SMTPS",
|
||||
"IMAPS",
|
||||
"xwiki",
|
||||
"cryptpad",
|
||||
"clamav",
|
||||
"templating",
|
||||
"localpart",
|
||||
"Addressbooks",
|
||||
"filestore",
|
||||
"trashbin",
|
||||
"bootstrap"
|
||||
],
|
||||
"ignoreWords": [],
|
||||
"import": []
|
||||
}
|
||||
36
dev/README.md
Normal file
36
dev/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<h1>Tools for local development</h1>
|
||||
|
||||
* [charts-local.py](#charts-localpy)
|
||||
* [Commandline parameter](#commandline-parameter)
|
||||
* [`--branch`](#--branch)
|
||||
* [`--revert`](#--revert)
|
||||
|
||||
# charts-local.py
|
||||
|
||||
This script helps you on cloning the platform development Helm charts and referencing them directly in the openDesk
|
||||
Helmfile deployment for comfortable local test and development. The charts will be cloned into a directory
|
||||
parallel created next to the `opendesk` repo containing this documentation and the `charts-local.py` script.
|
||||
The name of the chart directory is derived from the branch name you are working with in this `opendesk` repo.
|
||||
|
||||
The script will create `.bak` copies of the helmfiles that have been touched.
|
||||
|
||||
Run the script with `-h` to get information about the script's parameter on commandline.
|
||||
|
||||
## Commandline parameter
|
||||
|
||||
### `--branch`
|
||||
|
||||
Optional parameter: Defines a branch for the `opendesk` repo to work with. The script will create the branch if it
|
||||
does not exist yet. Otherwise it will switch to defined branch.
|
||||
|
||||
If parameter is omitted the current branch of the `opendesk` repo will be used.
|
||||
|
||||
### `--revert`
|
||||
|
||||
Reverts the changes in the helmfiles pointing to the local Helm charts by copying the backup files created by the
|
||||
scripts itself back to their original location.
|
||||
170
dev/charts-local.py
Executable file
170
dev/charts-local.py
Executable file
@@ -0,0 +1,170 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import os.path
|
||||
import logging
|
||||
import yaml
|
||||
import sys
|
||||
import shutil
|
||||
import re
|
||||
import configargparse
|
||||
|
||||
from pathlib import Path
|
||||
from git import Repo
|
||||
|
||||
p = configargparse.ArgParser()
|
||||
p.add('--branch', env_var='CHART_DEV_BRANCH', help='The branch you want to work with. Will be created by the script if it does not exist yet.')
|
||||
p.add('--git_hostname', env_var='GIT_HOSTNAME', default='git@gitlab.opencode.de', help='Set the hostname for the chart git checkouts.')
|
||||
p.add('--revert', default=False, action='store_true', help='Set this parameter if you want to revert the referencing of the local helm chart checkout paths in the helmfiles.')
|
||||
p.add('--loglevel', env_var='LOGLEVEL', default='DEBUG', help='Set the loglevel: DEBUG, INFO, WARNING, ERROR, CRITICAL-')
|
||||
options = p.parse_args()
|
||||
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
# some static definitions
|
||||
log_path = script_path+'/../logs'
|
||||
charts_yaml = script_path+'/../helmfile/environments/default/charts.yaml'
|
||||
base_repo_path = script_path+'/..'
|
||||
base_helmfile = base_repo_path+'/helmfile_generic.yaml'
|
||||
helmfile_backup_extension = '.bak'
|
||||
|
||||
Path(log_path).mkdir(parents=True, exist_ok=True)
|
||||
|
||||
logFormatter = logging.Formatter("%(asctime)s %(levelname)-5.5s %(message)s")
|
||||
rootLogger = logging.getLogger()
|
||||
rootLogger.setLevel(options.loglevel)
|
||||
|
||||
fileHandler = logging.FileHandler("{0}/{1}.log".format(log_path, os.path.basename(__file__)))
|
||||
fileHandler.setFormatter(logFormatter)
|
||||
rootLogger.addHandler(fileHandler)
|
||||
|
||||
consoleHandler = logging.StreamHandler()
|
||||
consoleHandler.setFormatter(logFormatter)
|
||||
rootLogger.addHandler(consoleHandler)
|
||||
|
||||
logging.debug(f"Working with relative paths from script location: {script_path}")
|
||||
logging.debug(f"Log directory: {log_path}")
|
||||
logging.debug(f"charts.yaml : {charts_yaml}")
|
||||
|
||||
|
||||
def create_or_switch_branch_base_repo():
|
||||
base_repo = Repo(path=base_repo_path)
|
||||
current_branch = base_repo.active_branch.name
|
||||
if not options.branch:
|
||||
branch = current_branch
|
||||
logging.debug(f"No branch specified on commandline, working with current branch: {current_branch}")
|
||||
else:
|
||||
branch = options.branch
|
||||
if branch in base_repo.branches:
|
||||
if branch != current_branch:
|
||||
logging.debug(f"Selected {branch} already exists, switching.")
|
||||
# ToDo: Graceful handle: "Please commit your changes or stash them before you switch branches."
|
||||
base_repo.git.switch(branch)
|
||||
else:
|
||||
logging.debug(f"Already on selected brach {branch}")
|
||||
else:
|
||||
logging.debug(f"Creating branch {branch} and switching")
|
||||
base_repo.git.branch(branch)
|
||||
base_repo.git.switch(branch)
|
||||
return branch
|
||||
|
||||
|
||||
def clone_charts_locally(branch, charts):
|
||||
charts_clone_path = script_path+'/../../'+branch.replace('/', '_')
|
||||
charts_dict = {}
|
||||
doublette_dict = {}
|
||||
if os.path.isdir(charts_clone_path):
|
||||
logging.warning(f"Path {charts_clone_path} already exists, will not clone any charts.")
|
||||
else:
|
||||
logging.debug(f"creating directory {charts_clone_path} to clone charts into")
|
||||
Path(charts_clone_path).mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for chart in charts['charts']:
|
||||
if 'opendesk/components/platform-development/charts' in charts['charts'][chart]['repository']:
|
||||
tag = charts['charts'][chart]['version']
|
||||
logging.debug(f"Working on {chart} / tag {tag}")
|
||||
repository = charts['charts'][chart]['repository']
|
||||
git_url = options.git_hostname+':'+repository
|
||||
chart_repo_path = charts_clone_path+'/'+charts['charts'][chart]['name']
|
||||
if git_url in doublette_dict:
|
||||
logging.debug(f"{chart} located at {git_url} is already checked out to {doublette_dict[git_url]}")
|
||||
charts_dict[chart] = doublette_dict[git_url]
|
||||
else:
|
||||
if os.path.isdir(chart_repo_path):
|
||||
logging.debug(f"Already exists {chart_repo_path} leaving it unmodified")
|
||||
else:
|
||||
logging.debug(f"Cloning into {chart_repo_path}")
|
||||
Repo.clone_from(git_url, chart_repo_path)
|
||||
chart_repo = Repo(path=chart_repo_path)
|
||||
chart_repo.git.checkout('v'+charts['charts'][chart]['version'])
|
||||
doublette_dict[git_url] = chart_repo_path
|
||||
charts_dict[chart] = chart_repo_path
|
||||
return charts_dict
|
||||
|
||||
|
||||
def grep_yaml(file):
|
||||
with open(file, 'r') as file:
|
||||
content = ''
|
||||
for line in file.readlines():
|
||||
if not ': {{' in line and not '- {{' in line:
|
||||
content += line
|
||||
return yaml.safe_load(content)
|
||||
|
||||
|
||||
def get_child_helmfiles():
|
||||
child_helmfiles = []
|
||||
root_helmfile = grep_yaml(base_helmfile)
|
||||
for entry in root_helmfile['helmfiles']:
|
||||
child_helmfiles.append(base_repo_path+'/'+entry['path'])
|
||||
return child_helmfiles
|
||||
|
||||
|
||||
def process_the_helmfiles(charts_dict, charts):
|
||||
chart_def_prefix = ' chart: "'
|
||||
child_helmfiles = get_child_helmfiles()
|
||||
for child_helmfile in child_helmfiles:
|
||||
child_helmfile_updated = False
|
||||
output = []
|
||||
with open(child_helmfile, 'r') as file:
|
||||
for line in file:
|
||||
if chart_def_prefix in line:
|
||||
for chart_ident in charts_dict:
|
||||
if '.Values.charts.'+chart_ident+'.name' in line:
|
||||
logging.debug(f"found match with {chart_ident} in {line.strip()}")
|
||||
line = chart_def_prefix+charts_dict[chart_ident]+'/charts/'+charts['charts'][chart_ident]['name']+'" # replaced by local-dev script'+"\n"
|
||||
child_helmfile_updated = True
|
||||
break
|
||||
output.append(line)
|
||||
if child_helmfile_updated:
|
||||
child_helmfile_backup = child_helmfile+helmfile_backup_extension
|
||||
if os.path.isfile(child_helmfile_backup):
|
||||
logging.debug("backup {child_helmfile_backup} already exists, will not create a new one.")
|
||||
else:
|
||||
logging.debug(f"creating backup {child_helmfile_backup}.")
|
||||
shutil.copy2(child_helmfile, child_helmfile_backup)
|
||||
logging.debug(f"Updating {child_helmfile}")
|
||||
with open(child_helmfile, 'w') as file:
|
||||
file.writelines(output)
|
||||
|
||||
|
||||
def revert_the_helmfiles():
|
||||
child_helmfiles = get_child_helmfiles()
|
||||
for child_helmfile in child_helmfiles:
|
||||
child_helmfile_backup = child_helmfile+helmfile_backup_extension
|
||||
if os.path.isfile(child_helmfile_backup):
|
||||
logging.debug(f"Reverting {child_helmfile} from backup {child_helmfile_backup}")
|
||||
os.rename(child_helmfile_backup, child_helmfile)
|
||||
else:
|
||||
logging.debug(f"Did not found the backup file {child_helmfile_backup}")
|
||||
|
||||
##
|
||||
## Main program
|
||||
##
|
||||
if options.revert:
|
||||
revert_the_helmfiles()
|
||||
else:
|
||||
branch = create_or_switch_branch_base_repo()
|
||||
with open(charts_yaml, 'r') as file:
|
||||
charts = yaml.safe_load(file)
|
||||
charts_dict = clone_charts_locally(branch, charts)
|
||||
process_the_helmfiles(charts_dict, charts)
|
||||
6
dev/requirements.txt
Normal file
6
dev/requirements.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
configargparse
|
||||
pyyaml
|
||||
GitPython
|
||||
@@ -10,15 +10,13 @@ This section covers the internal system requirements as well as external service
|
||||
<!-- TOC -->
|
||||
* [Overview](#overview)
|
||||
* [Component integration](#component-integration)
|
||||
* [Intercom Service (ICS)](#intercom-service-ics)
|
||||
* [Intercom Service / Silent Login](#intercom-service--silent-login)
|
||||
* [Filepicker](#filepicker)
|
||||
* [Central Navigation](#central-navigation)
|
||||
* [(Read \& write) Central contacts](#read--write-central-contacts)
|
||||
* [OpenProject Filestore](#openproject-filestore)
|
||||
* [Central Contacts](#central-contacts)
|
||||
* [File Store (OpenProject -\> Nextcloud)](#file-store-openproject---nextcloud)
|
||||
* [Identity data flows](#identity-data-flows)
|
||||
* [Provisioning](#provisioning)
|
||||
* [Component specific documentation](#component-specific-documentation)
|
||||
* [Links to component docs](#links-to-component-docs)
|
||||
<!-- TOC -->
|
||||
|
||||
# Overview
|
||||
@@ -50,7 +48,7 @@ they need to be replaced in production deployments.
|
||||
| PostgreSQL | Database | Eval |
|
||||
| Redis | Cache Database | Eval |
|
||||
| Univention Management Stack | Identity Management & Portal | Functional |
|
||||
| XWiki | Knowledgebase | Functional |
|
||||
| XWiki | Knowledge Management | Functional |
|
||||
|
||||
# Component integration
|
||||
|
||||
@@ -58,58 +56,91 @@ Some use cases require inter component integration.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
OXAppSuiteFrontend-->|SilentLogin, Filepicker, CentralNavigation|IntercomService
|
||||
Element-->|CentralNavigation|IntercomService
|
||||
IntercomService-->|SilentLogin, TokenExchange|IdP
|
||||
IntercomService-->|Filepicker|Nextcloud
|
||||
IntercomService-->|CentralNavigation|Portal
|
||||
OXAppSuiteBackend-->|Filepicker|Nextcloud
|
||||
Nextcloud-->|CentralNavigation|Portal
|
||||
OpenProject-->|CentralNavigation|Portal
|
||||
OpenProject-->|Filestore|Nextcloud
|
||||
XWiki-->|CentralNavigation|Portal
|
||||
Nextcloud-->|CentralContacts|OXAppSuiteBackend
|
||||
OXAppSuiteFrontend-->|Filepicker|OXAppSuiteBackend
|
||||
OX-AppSuite_Frontend-->|Silent Login, Filepicker, Central Navigation|Intercom_Service
|
||||
Element-->|Silent Login, Central Navigation|Intercom_Service
|
||||
Intercom_Service-->|Silent Login, Token Exchange|IdP
|
||||
Intercom_Service-->|Filepicker|Nextcloud
|
||||
Intercom_Service-->|Central Navigation|Portal
|
||||
OX-AppSuite_Backend-->|Filepicker|Nextcloud
|
||||
Nextcloud-->|Central Navigation|Portal
|
||||
OpenProject-->|Central Navigation|Portal
|
||||
OpenProject-->|File Store|Nextcloud
|
||||
XWiki-->|Central Navigation|Portal
|
||||
Nextcloud-->|Central Contacts|OX-AppSuite_Backend
|
||||
OX-AppSuite_Frontend-->|Filepicker|OX-AppSuite_Backend
|
||||
```
|
||||
|
||||
## Intercom Service (ICS)
|
||||
Most details can be found in the upstream documentation that is linked in the respective sections.
|
||||
|
||||
The Univention Intercom Service's role is to enable cross-application integration based on browser interaction.
|
||||
Handling authentication when the frontend of an application is using the API from another application is often a
|
||||
## Intercom Service / Silent Login
|
||||
|
||||
The Intercom Service's role is to enable cross-application integration based on the user's browser interaction as handling
|
||||
authentication when the frontend of an application has to call the API from another application is often a
|
||||
challenge.
|
||||
For more details on the ICS please refer to its own [doc](./components/intercom-service.md).
|
||||
|
||||
To establish a session with the Intercom Service, the application that wants to use the ICS must initiate a silent
|
||||
login.
|
||||
To establish a session with the Intercom Service an application can use the silent login feature within an iframe.
|
||||
|
||||
Currently only OX AppSuite is using the frontend-based integration, and therefore it is right now the only consumer of
|
||||
the ICS API.
|
||||
Currently only OX AppSuite and Element are using the frontend based integration.
|
||||
|
||||
**Links**
|
||||
- [Intercom Service upstream documentation](https://docs.software-univention.de/intercom-service/latest/index.html).
|
||||
|
||||
## Filepicker
|
||||
|
||||
The Nextcloud filepicker which is integrated into the OX AppSuite allows you to add attachments or links to files from
|
||||
and saving attachments to Nextcloud.
|
||||
The Nextcloud filepicker is integrated into the OX AppSuite supporting the following use cases against the respective openDesk instance's Nextcloud:
|
||||
- Attaching files from Nextcloud to emails.
|
||||
- Adding links of Nextcloud files to emails.
|
||||
- Saving attachments from emails into Nextcloud.
|
||||
- Attaching files from Nextcloud to calendar entries.
|
||||
|
||||
The filepicker is using frontend and backend based integration.
|
||||
Frontend-based integration means that OX AppSuite in the browser is communicating with ICS.
|
||||
While using backend-based integration, OX AppSuite middleware is communicating with Nextcloud, which is especially used
|
||||
when adding a file to an email or storing a file into Nextcloud.
|
||||
The filepicker is using frontend and backend based integration:
|
||||
- For frontend based integration the OX AppSuite frontend uses the Intercom Service.
|
||||
- Backend based integration is coming from OX AppSuite middleware. The middleware is communicating directly with Nextcloud,
|
||||
which is used when adding a file to an email or storing a file into Nextcloud, to avoid passing these files through the user's browser.
|
||||
|
||||
**Links**
|
||||
- [OX AppSuite Nextcloud Integration upstream documentation](https://gitlab.open-xchange.com/extensions/nextcloud-integration/-/tree/main/documentation).
|
||||
|
||||
## Central Navigation
|
||||
|
||||
Central navigation is based on an API endpoint in the portal that provides the contents of the portal for a user to
|
||||
allow components to render the menu showing all available SWP applications for the user.
|
||||
Central navigation is based on an API endpoint in the Nubus portal that returns a JSON containing the contents of the portal for
|
||||
a given user. The response from the API endpoint is used in the openDesk applications to render the central navigation.
|
||||
|
||||
## (Read & write) Central contacts
|
||||
The API can be called by
|
||||
- frontend services through the Intercom Service's `/navigation.json` endpoint or
|
||||
- backend services directly at the portal's `/univention/portal/navigation.json` endpoint.
|
||||
|
||||
Open-Xchange App Suite is used to manage contacts within openDesk. There is an API in the AppSuite that is being used by
|
||||
Nextcloud to lookup contacts as well as to create contacts. This is maybe done when a file is shared with a not yet
|
||||
available personal contact.
|
||||
The central navigation expects the API caller to present a shared secret for authentication and the username for whom the portal
|
||||
contents should be returned for.
|
||||
|
||||
## OpenProject Filestore
|
||||
A `curl` based request returning the navigation contents looks like this:
|
||||
|
||||
By default, Nextcloud is a configured option for storing attachments in OpenProject.
|
||||
The Filestore can be enabled on a per-project level in OpenProject's project admin section.
|
||||
```
|
||||
curl 'https://portal.<DOMAIN>/univention/portal/navigation.json?base=https%3A//portal.<DOMAIN>&language=de-DE' -u "<USERNAME>:<SHARED_SECRET>"
|
||||
```
|
||||
|
||||
## Central Contacts
|
||||
|
||||
OX App Suite is managing contacts in openDesk. Therefore Nextcloud's PHP backend is using the OX AppSuite's middleware Contacts API to
|
||||
- create a new contact in the user's contacts folder when a file is shared with a yet unknown email address.
|
||||
- retrieve contacts from the user's contacts folder to support search-as-you-type when starting to share a file.
|
||||
|
||||
**Links:**
|
||||
- Currently used [OX Contacts API (deprecated)](https://documentation.open-xchange.com/components/middleware/http/8/index.html#!Contacts).
|
||||
- New [OX Addressbooks API](https://documentation.open-xchange.com/components/middleware/http/8/index.html#!Addressbooks) the Central Contacts integration will switch to.
|
||||
|
||||
## File Store (OpenProject -> Nextcloud)
|
||||
|
||||
While OpenProject allows you to attach files to work packages directly, it is often preferred that the files are
|
||||
stored within Nextcloud or to link an existing file from your openDesk Nextcloud to a work package.
|
||||
|
||||
Therefore openDesk pre-configures the trust between the openDesk instance's OpenProject and Nextcloud during the `openproject-boostrap` deployment step. As prerequisite for that openDesk's Nextcloud contains the `integration_openproject` app.
|
||||
|
||||
The file store still needs to be enabled on a per-project level in OpenProject's project admin section.
|
||||
|
||||
**Links:**
|
||||
- [OpenProject's documentation on Nextcloud integration](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/)
|
||||
- [OpenProject Integration Nextcloud app](https://apps.nextcloud.com/apps/integration_openproject)
|
||||
|
||||
# Identity data flows
|
||||
|
||||
@@ -157,27 +188,3 @@ deleting activities for the following objects to the OX AppSuite using the AppSu
|
||||
- Groups
|
||||
- Functional Mailboxes
|
||||
- Resources
|
||||
|
||||
# Component specific documentation
|
||||
|
||||
We want to provide more information per component in separate, component-specific markdown file.
|
||||
To establish a common view on the components, we are going to cover various aspects:
|
||||
|
||||
- **Component overview**: Shall provide a quick introduction including the components prerequisites and subcomponents (f.e. pods).
|
||||
- **Resources**: Will contain a link to the component upstream documentation, the helm chart and image locations.
|
||||
- **Operational Capabilities**
|
||||
- **Install**: The components install within the SWP.
|
||||
- **Restart**: Deleting and restarting pods works seamlessly.
|
||||
- **Update**: Redeploying the component with a different configuration works as expected. The component makes use of the updates configuration afterwards.
|
||||
- **Upgrade**: Component allows upgrading existing deployments with more current versions of itself.
|
||||
- **Secrets**: The component uses K8s secrets.
|
||||
- **Logging**: Only logging to STDOUT, no logs inside the container.
|
||||
- **Monitoring**: Application provides based on kube-prometheus-stack CRD: ServiceMonitor and PrometheusRule. Optional: Grafana Dashboard.
|
||||
- **Scale**: If supported (as we use community products) the component should be manually scalable. Optional: Autoscaling.
|
||||
- **Network policies**: Deny by default, allow application related traffic.
|
||||
- **Uninstall**: Documented and working complete uninstallation of the component.
|
||||
- **Debugging**: Some helpful information when it comes to debugging a component, e.g. setting log level.
|
||||
|
||||
# Links to component docs
|
||||
|
||||
- [Intercom-Service](./components/intercom-service.md)
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
**Content / Quick navigation**
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Component overview
|
||||
|
||||
The Intercom Service (ICS) is used to address integrational use cases where the frontend of one application has to call APIs from another application.
|
||||
|
||||
# Resources
|
||||
|
||||
- External documentation: https://docs.software-univention.de/intercom-service/latest/index.html
|
||||
- Helm chart: https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/components/charts/sovereign-workplace-intercom-service
|
||||
- Image: not yet published on Open CoDE, image will be provided through external artifactory.
|
||||
|
||||
# Operational Capabilities
|
||||
|
||||
## Install
|
||||
|
||||
## Restart
|
||||
|
||||
## Update
|
||||
|
||||
## Upgrade
|
||||
|
||||
## Secrets
|
||||
|
||||
## Logging
|
||||
|
||||
## Monitoring
|
||||
|
||||
## Scale
|
||||
|
||||
## Network policies
|
||||
|
||||
## Uninstall
|
||||
|
||||
# Debugging
|
||||
|
||||
ICS does not have a debug level option yet. But please refer to the most current documentation of the component. You just want to look into the standard log output of the component.
|
||||
@@ -31,10 +31,10 @@ environments you may want to make use of them in a very thoughtful and selective
|
||||
# Enable debugging
|
||||
|
||||
Set `debug.enable` to `true` in [`debug.yaml`](../helmfile/environments/default/debug.yaml) to set the
|
||||
component's loglevel to debug and it get some features like:
|
||||
component's log level to debug and it get some features like:
|
||||
- The `/admin` console is routed for Keycloak.
|
||||
- An ingress for `http://minio-console.<your_domain>` is configured.
|
||||
and set the loglevel for components to "Debug".
|
||||
and set the log level for components to "Debug".
|
||||
|
||||
**Note:** All containers should write their log output to STDOUT, if you find (valuable) logs inside a container, please let us know!
|
||||
|
||||
@@ -46,13 +46,13 @@ This can be a challenge the more security hardened container images are, because
|
||||
|
||||
Adding a container to a Pod can ease the pain.
|
||||
|
||||
Below you will find some wrap-up notes when it comes to debugging openDesk by adding debug containers. Of course there are a lot of more detailled resources out in the wild.
|
||||
Below you will find some wrap-up notes when it comes to debugging openDesk by adding debug containers. Of course there are a lot of more detailed resources out in the wild.
|
||||
|
||||
## Adding a container to a pod/deployment - Dev/Test only
|
||||
|
||||
You can add a container by editing and updating an existing deployment, which is quite comforable with tools like [Lens](https://k8slens.dev/).
|
||||
You can add a container by editing and updating an existing deployment, which is quite comfortable with tools like [Lens](https://k8slens.dev/).
|
||||
|
||||
- Select the container you want to make use of as debugging container, in the example below it's `registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0`.
|
||||
- Select the container you want to make use of as debugging container, in the example below it's `registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:latest`.
|
||||
- Ensure the `shareProcessNamespace` option is enabled for the Pod.
|
||||
- Reference the selected container within the `containers` array of the deployment.
|
||||
- In case you want to access another containers filesystem, ensure the user/group settings of both containers match.
|
||||
@@ -64,7 +64,7 @@ The following example can e.g. be used to debug the `openDesk-Nextcloud-PHP` con
|
||||
shareProcessNamespace: true
|
||||
containers:
|
||||
- name: debugging
|
||||
image: registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
|
||||
image: registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:latest
|
||||
command: ["/bin/bash", "-c", "while true; do echo 'This is a temporary container for debugging'; sleep 5 ; done"]
|
||||
securityContext:
|
||||
capabilities:
|
||||
@@ -92,8 +92,8 @@ Sometimes you do not want to add a container permanently to your existing deploy
|
||||
|
||||
For the commands further down this section we set some environment variables first:
|
||||
- `NAMESPACE`: The namespace the Pod you want to inspects is running in.
|
||||
- `DEPLOYMENT_NAME`: The name of the deployment responsible for spawning the Pod you want to inspect within the prementioned namespace.
|
||||
- `POD_NAME`: The name of the Pod you want to inspect within the prementioned namespace.
|
||||
- `DEPLOYMENT_NAME`: The name of the deployment responsible for spawning the Pod you want to inspect within the pre-mentioned namespace.
|
||||
- `POD_NAME`: The name of the Pod you want to inspect within the pre-mentioned namespace.
|
||||
- `EPH_CONTAINER_NAME`: Chose the name for the container, "debugging" seem obvious.
|
||||
- `DEBUG_IMAGE`: The image you want to make use of for debugging purposes.
|
||||
|
||||
@@ -101,9 +101,9 @@ e.g.
|
||||
|
||||
```
|
||||
export EPH_CONTAINER_NAME=debugging
|
||||
export NAMESPACE=my_testdeployment
|
||||
export NAMESPACE=my_test_deployment
|
||||
export DEPLOYMENT_NAME=opendesk-nextcloud-php
|
||||
export POD_NAME=opendesk-nextcloud-php-6686d47cfb-7vtmf
|
||||
export POD_NAME=opendesk-nextcloud-php-6686d47cfb-7642f
|
||||
export DEBUG_IMAGE=registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
|
||||
```
|
||||
|
||||
|
||||
@@ -11,11 +11,12 @@ But contributions will be possible soon once the CLA process is sorted out.
|
||||
|
||||
* [Overview](#overview)
|
||||
* [Default branch, `develop` and other branches](#default-branch-develop-and-other-branches)
|
||||
* [External artefacts - `charts.yaml` and `images.yaml`](#external-artefacts---chartsyaml-and-imagesyaml)
|
||||
* [External artifacts - `charts.yaml` and `images.yaml`](#external-artifacts---chartsyaml-and-imagesyaml)
|
||||
* [Linting](#linting)
|
||||
* [Disable linting selectively](#disable-linting-selectively)
|
||||
* [Renovate](#renovate)
|
||||
* [Mirroring](#mirroring)
|
||||
* [Get new artefacts mirrored](#get-new-artefacts-mirrored)
|
||||
* [Get new artifacts mirrored](#get-new-artifacts-mirrored)
|
||||
* [Creating new charts / images](#creating-new-charts--images)
|
||||
|
||||
# Overview
|
||||
@@ -26,21 +27,31 @@ the development of the deployment automation of openDesk.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[./helmfile.yaml]-->B[./helmfile/apps/*all_configured_apps*/helmfile.yaml\nReferences the relevant app Helm\ncharts using details from 'charts.yaml']
|
||||
J[helmfile.yaml\nor a helmfile outside of this repository]-->A
|
||||
J-->K[./helmfile/environemnts/*your_environment*/values.yaml.gotmpl\nor any an environment values file]
|
||||
A[./helmfile_generic.yaml]-->B[./helmfile/apps/*all_configured_apps*/helmfile.yaml\nReferences the relevant app Helm\ncharts using details from 'charts.yaml']
|
||||
B-->C[./values-*all_configured_components*.yaml.gotmpl\nValues to template the charts\nwith references to the `images.yaml`]
|
||||
A-->D[./helmfile/environments/default/*\nwith just some examples below]
|
||||
D-->F[charts.yaml]
|
||||
D-->G[images.yaml]
|
||||
D-->H[global.*]
|
||||
D-->I[secrets.yaml\nreplicas.yaml\nresources.yaml\n...]
|
||||
A-->|overwrite defaults with your\ndeployment/environment specific values|E[./helmfile/environments/*your_environment*/values.yaml.gotmpl]
|
||||
A-->|overwrite defaults with your\ndeployment/environment specific values|E[./helmfile/environments/default/values.yaml.gotmpl]
|
||||
```
|
||||
|
||||
The `helmfile.yaml` in the root folder is the basis for the whole deployment. It references the app specific `helmfile.yaml` files as well as some
|
||||
global values files in `./environments/default`. It allows you to overwrite defaults by using one of the three predefined environments `dev`, `test`
|
||||
and `prod`.
|
||||
The `helmfile.yaml` file in the root folder serves as the foundation
|
||||
for the entire deployment. It references the `helmfile_generic.yaml`
|
||||
file, which includes app-specific `helmfile.yaml` files, as well as
|
||||
global values files located in `./environments/default`.
|
||||
|
||||
Before you look into any app specifc configuration it is recommended to review the contents of `./environments/default` to get an understanding of what
|
||||
`helmfile.yaml` also refers to three predefined environments: `dev`,
|
||||
`test`, and `prod`.
|
||||
|
||||
The `helmfile_generic.yaml` file is designed to be referenced from
|
||||
external repositories, where custom environments may be defined. An
|
||||
example is demonstrated in the `helmfile.yaml` file.
|
||||
|
||||
Before you look into any app specific configuration it is recommended to review the contents of `./environments/default` to get an understanding of what
|
||||
details are maintained in there, as they are usually referenced by the app configurations.
|
||||
|
||||
# Default branch, `develop` and other branches
|
||||
@@ -54,17 +65,17 @@ for more details on naming conventions.
|
||||
There is a CI bot that automatically creates a merge request once you initially pushed your branch to Open CoDE.
|
||||
The merge request will of course target the `develop` branch, be in status `draft` and have you as assignee.
|
||||
|
||||
In case you do not plan to actually merge from the branch you have pushed, please close or delete the autocreated MR.
|
||||
In case you do not plan to actually merge from the branch you have pushed, please close or delete the auto-created MR.
|
||||
|
||||
# External artefacts - `charts.yaml` and `images.yaml`
|
||||
# External artifacts - `charts.yaml` and `images.yaml`
|
||||
|
||||
The `charts.yaml` and `images.yaml` are the central place to reference external artefacts that are used for the deployment.
|
||||
The `charts.yaml` and `images.yaml` are the central place to reference external artifacts that are used for the deployment.
|
||||
|
||||
Beside the deployment automation itself some tools work with the contents of the files:
|
||||
|
||||
- **Linting**: Ensures consistency of the file contents for the other tools.
|
||||
- **Renovate**: Automatically create MRs that update the components to their latest version.
|
||||
- **Mirror**: Mirror artefacts to Open CoDE.
|
||||
- **Mirror**: Mirror artifacts to Open CoDE.
|
||||
|
||||
Please find details on these tools below.
|
||||
|
||||
@@ -84,24 +95,34 @@ with the many available examples in the yaml files.
|
||||
Example:
|
||||
```
|
||||
synapse:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Element'
|
||||
# upstreamRegistry: 'registry-1.docker.io'
|
||||
# upstreamRepository: 'matrixdotorg/synapse'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Element"
|
||||
# upstreamRegistry: "https://registry-1.docker.io"
|
||||
# upstreamRepository: "matrixdotorg/synapse"
|
||||
# upstreamMirrorTagFilterRegEx: '^v(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['1', '91', '2']
|
||||
# upstreamMirrorStartFrom: ["1", "91", "2"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/element/images-mirror/synapse"
|
||||
tag: "v1.91.2@sha256:1d19508db417bb2b911c8e086bd3dc3b719ee75c6f6194d58af59b4c32b11322"
|
||||
```
|
||||
|
||||
### Disable linting selectively
|
||||
|
||||
If you follow the "push early, push often" paradigm to save your work to the central Git instance or you just fix a typo in the text
|
||||
of an existing documentation you might want to avoid the CI with its linting to be executed, as it might not offer additional value.
|
||||
|
||||
GitLab offers two options to skip the CI on a commit/push:
|
||||
- Add `[ci skip]` to your commit message ([details](https://docs.gitlab.com/ee/ci/pipelines/#skip-a-pipeline)).
|
||||
**Note:** The string has to be removed before merging your feature branch into `develop`.
|
||||
- Use the related git push option `git push -o ci.skip` ([details](https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd)).
|
||||
|
||||
## Renovate
|
||||
|
||||
Uses a regular expression to match the values of the following attributes:
|
||||
|
||||
- `registry`
|
||||
- `repository`
|
||||
- `tag`
|
||||
- `# upstreamRegistry` *required*: Attribute's value must be prefixed with `https://` for Renovate.
|
||||
- `# upstreamRepository` *required*
|
||||
- `tag` *required*
|
||||
|
||||
Checks for newer versions of the given artefact and creates a MR containing the newest version's tag (and digest).
|
||||
|
||||
@@ -111,19 +132,19 @@ Checks for newer versions of the given artefact and creates a MR containing the
|
||||
|
||||
**Note:** The mirror is scheduled to run every hour at 42 minutes past the hour.
|
||||
|
||||
openDesk strives to make all relevant artefacts available on Open CoDE so there is the mirroring process
|
||||
configured to pull artefacts that do not originate from Open CoDE into projects called `*-Mirror` within the
|
||||
openDesk strives to make all relevant artifacts available on Open CoDE so there is the mirroring process
|
||||
configured to pull artifacts that do not originate from Open CoDE into projects called `*-Mirror` within the
|
||||
[openDesk Components section](https://gitlab.opencode.de/bmi/opendesk/components).
|
||||
|
||||
The mirror script takes the information on what artefacts to mirror from the annotation inside the two yaml files:
|
||||
The mirror script takes the information on what artifacts to mirror from the annotation inside the two yaml files:
|
||||
- `# upstreamRegistry` *required*: To identify the source registry
|
||||
- `# upstreamRepository` *required*: To identify the source repository
|
||||
- `# upstreamMirrorTagFilterRegEx` *required*: If this annotation is set it activates the mirror for the component. Only tags are being mirrored that match the given regular expression.
|
||||
- `# upstreamMirrorStartFrom` *optional*: Array of numeric values in case you want to mirror only artefacts beginning with a specific version. You must use capturing groups
|
||||
- `# upstreamMirrorTagFilterRegEx` *required*: If this annotation is set it activates the mirror for the component. Only tags are being mirrored that match the given regular expression. **Note:** You have to use single quotes for this attribute's value in case you use backslash leading regex notation like `\d`.
|
||||
- `# upstreamMirrorStartFrom` *optional*: Array of numeric values in case you want to mirror only artifacts beginning with a specific version. You must use capturing groups
|
||||
in `# upstreamMirrorTagFilterRegEx` to identify the single numeric elements of the version within the tag and use per capturing group (left to right) one numeric array
|
||||
element here to define the version the mirror should start with.
|
||||
|
||||
### Get new artefacts mirrored
|
||||
### Get new artifacts mirrored
|
||||
|
||||
If you want new images or charts to be mirrored that are not yet included in one of the yaml files there are two options:
|
||||
|
||||
@@ -134,7 +155,7 @@ You include them in your branch with all required annotations and either
|
||||
# Creating new charts / images
|
||||
|
||||
When you create new Helm charts please check out the
|
||||
[openDesk Best Practises](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-best-practises)
|
||||
[openDesk Best Practices](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-best-practises)
|
||||
for Helm charts.
|
||||
|
||||
You may also want to make use of our [standard CI](https://gitlab.opencode.de/bmi/opendesk/tooling/gitlab-config) to
|
||||
|
||||
@@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# Overview
|
||||
|
||||
The follownig enhanced configuration use cases are described in separate documents.
|
||||
The following enhanced configuration use cases are described in separate documents.
|
||||
|
||||
- [Separate mail & Matrix domain](enhanced-configuration/separate-mail-matrix-domain.md)
|
||||
- [Federation with external identity provider](enhanced-configuration/idp-federation.md)
|
||||
|
||||
@@ -39,14 +39,14 @@ We will provide additional documents regarding user provisioning in the future,
|
||||
- If you need to create more than just a couple of test accounts you can use the [openDesk User Importer](https://gitlab.opencode.de/bmi/opendesk/tooling/user-import) that utilizes the UDM REST API for user account creation.
|
||||
- Downsides: Managing groups and deleting accounts needs to be done manually.
|
||||
- Automated Pre-provisioning:
|
||||
- Pre-provisioning users and groups including de-provisioning (deleting) accounts is the best practise as it ensures that openDesk is in sync with your organization's IAM.
|
||||
- Pre-provisioning users and groups including de-provisioning (deleting) accounts is the best practice as it ensures that openDesk is in sync with your organization's IAM.
|
||||
- There are at least two ways of implementing the pre-provisioning:
|
||||
- UDM REST API:
|
||||
- Build a provisioning solution by yourself using the [UDM REST API](https://docs.software-univention.de/developer-reference/5.0/en/udm/rest-api.html).
|
||||
- The API gives you full control over the contents of the IAM in order to create, update or delete users and groups.
|
||||
- Directory Connector:
|
||||
- Nubus Directory Importer:
|
||||
- It is based on a Python one-way directory synchronization for users and groups.
|
||||
- We will provide more details on this approach soon one the tool is made publicly available.
|
||||
- Please find more details in the [upstream product's documentation](https://docs.software-univention.de/nubus-kubernetes-operation/latest/en/howto-connect-external-iam.html).
|
||||
- Ad-hoc provisioning (AHP)
|
||||
- This feature is currently not available in the openDesk Keycloak, but there are plans by the Supplier Univention to make it available.
|
||||
- Ad-hoc provisioning creates an user account on the fly during a users first login.
|
||||
@@ -90,7 +90,7 @@ For the following configuration steps login with user `kcadmin` and grab the pas
|
||||
|
||||
As we use the Keycloak of another openDesk instance to simulate your organization's IdP in this example, especially URL paths within the Keycloak might differ if you use different products.
|
||||
|
||||
Please let us know about your experiences or differences you came accross.
|
||||
Please let us know about your experiences or differences you came across.
|
||||
|
||||
### Separate realm
|
||||
|
||||
@@ -146,12 +146,12 @@ The following configuration is taking place in the Keycloak realm `opendesk`.
|
||||
- *Client ID*: Use the client ID you took form your organization's IdP config (`opendesk-federation-client` in this example)
|
||||
- *Client Secret*: Use the secret you took form your organization's IdP config
|
||||
- When completed with *Add* you get to the detailed IdP configured that also needs some updates (you may need to open the *Advanced* section to access some settings)
|
||||
- *Backchannel logout*: `On`
|
||||
- *Disable user info*: `On`
|
||||
- *Back-channel logout*: `On`
|
||||
- *Disable user info*: `On`
|
||||
- *First login flow override*: `auto-federate-flow`
|
||||
|
||||
- In case you want to forcefully redirect all users to your organizations IdP (disabling login with local openDesk accounts):
|
||||
- *Authentication* > `2fa-browser`
|
||||
- Click on the cogwheel next to the *Identitify Provider Redirector*
|
||||
- Click on the cogwheel next to the *Identity Provider Re-director*
|
||||
- *Alias*: `auto-federate-idp`
|
||||
- *Default Identity Provider*: `auto-federate-idp`
|
||||
|
||||
@@ -5,28 +5,59 @@ SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
<h1>Matrix federation</h1>
|
||||
|
||||
<!-- TOC -->
|
||||
* [Use case](#use-case)
|
||||
* [Example configuration](#example-configuration)
|
||||
* [DNS setup](#dns-setup)
|
||||
* [Disable federation](#disable-federation)
|
||||
* [Separate Matrix domain](#separate-matrix-domain)
|
||||
<!-- TOC -->
|
||||
|
||||
# Use case
|
||||
|
||||
By default you only can chat with users that also have an account within your openDesk installation. The Element chat application and its server component Synapse are based on the Matrix protocol that supports federation with other Matrix servers to communicate with the users with accounts on these servers.
|
||||
The Element chat application and its server component Synapse are based on the Matrix protocol,
|
||||
that supports federation with other Matrix servers to communicate with the users with accounts on these servers.
|
||||
|
||||
By default, you can chat with users that have an account within your openDesk installation and federate with other
|
||||
matrix-based servers.
|
||||
Federation support can be disabled.
|
||||
|
||||
# Example configuration
|
||||
|
||||
The following values are used in this example documentation. Please ensure when you come across such a value even if it is part of a URL hostname or path that you adapt it where needed to your setup:
|
||||
The following values are used in this example documentation.
|
||||
Please ensure when you come across such a value,
|
||||
even if it is part of a URL hostname or path, that you adapt it where needed to your setup:
|
||||
|
||||
- `opendesk.domain.tld`: the mandatory `DOMAIN` setting for your deployment resulting in `https://chat.opendesk.domain.tld` to access the Element chat.
|
||||
- `my_organization.tld`: an optional alternative domain used for mail and/or Matrix. If not used it is also set to `opendesk.domain.tld`.
|
||||
- `opendesk.domain.tld`: the mandatory `DOMAIN` setting for your deployment resulting in
|
||||
`https://chat.opendesk.domain.tld` to access the Element chat.
|
||||
- `my_organization.tld`: an optional alternative domain used for mail and/or Matrix.
|
||||
If not used it is also set to `opendesk.domain.tld`.
|
||||
|
||||
## DNS setup
|
||||
## Disable federation
|
||||
|
||||
If you want to federate with other Matrix instances, you need to have both SRV records:
|
||||
The following setting can disable federation:
|
||||
|
||||
| Record name | Type | Value | Additional Information |
|
||||
| ----------------------------------- | ---- | -------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||
| _matrix._tcp.my_organization.tld | SRV | `1 10 PORT matrix.opendesk.domain.tld` | `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service |
|
||||
| matrix-fed._tcp.my_organization.tld | SRV | `1 10 PORT matrix.opendesk.domain.tld` | `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service |
|
||||
```yaml
|
||||
functional:
|
||||
externalServices:
|
||||
matrix:
|
||||
federation:
|
||||
enabled: false
|
||||
```
|
||||
|
||||
*Note:* `matrix.opendesk.domain.tld` in the "Value" column can also be the IP address where synapse TLS port is listening to.
|
||||
## Separate Matrix domain
|
||||
|
||||
If you want to federate with other Matrix instances and use a separate Matrix domain, you need to provide a JSON file on
|
||||
the Matrix domain to use delegation.
|
||||
This is not included inside openDesk.
|
||||
|
||||
Domain path: `https://my_organization.tld/.well-known/matrix/server`
|
||||
|
||||
Content:
|
||||
```JSON
|
||||
{
|
||||
"m.server": "matrix-federation.opendesk.domain.tld:443"
|
||||
}
|
||||
```
|
||||
|
||||
More detailed information can be found in Matrix/Synapse documentation:
|
||||
[Matrix Delegation](https://matrix-org.github.io/synapse/v1.98/delegate.html)
|
||||
|
||||
@@ -9,6 +9,10 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Example configuration](#example-configuration)
|
||||
* [Mail domain](#mail-domain)
|
||||
* [Matrix domain](#matrix-domain)
|
||||
* [DNS](#dns)
|
||||
* [Webserver](#webserver)
|
||||
* [Content Security Policy](#content-security-policy)
|
||||
* [.well-known](#well-known)
|
||||
|
||||
# Use case
|
||||
|
||||
@@ -59,10 +63,37 @@ or via environment variable
|
||||
export MATRIX_DOMAIN=my_organization.tld
|
||||
```
|
||||
|
||||
This setup requires also a different DNS setup:
|
||||
### DNS
|
||||
|
||||
The following changes apply to the standard DNS:
|
||||
|
||||
| Record name | Type | Value | Comment |
|
||||
| -------------------------------- | ---- | -------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||
| _matrix._tcp.my_organization.tld | SRV | `1 10 PORT matrix.opendesk.domain.tld` | `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service |
|
||||
|
||||
*Note:* `matrix.opendesk.domain.tld` in the "Value" column can also be the IP address where synapse TLS port is listening to.
|
||||
|
||||
### Webserver
|
||||
|
||||
#### Content Security Policy
|
||||
|
||||
The webserver of `my_organization.tld` should add `*.opendesk.domain.tld` to it's CSP header.
|
||||
|
||||
#### .well-known
|
||||
|
||||
If you want to use other Matrix clients,
|
||||
e.g., Element Messenger for [iOS](https://apps.apple.com/de/app/element-messenger/id1083446067)
|
||||
or [Android](https://play.google.com/store/apps/details?id=im.vector.app),
|
||||
you need to create a JSON file with the following contents that is served from
|
||||
`https://my_organization.tld/.well-known/matrix/client`:
|
||||
|
||||
```json
|
||||
{
|
||||
"m.homeserver": {
|
||||
"base_url": "https://matrix.opendesk.domain.tld"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This ensures clients know where to find the Matrix protocol endpoint when users specify `my_organization.tld`
|
||||
as their homeserver.
|
||||
|
||||
@@ -9,7 +9,7 @@ This document will cover the additional configuration to use external services l
|
||||
|
||||
<!-- TOC -->
|
||||
* [Database](#database)
|
||||
* [Objectstore](#objectstore)
|
||||
* [Object storage](#object-storage)
|
||||
* [Cache](#cache)
|
||||
<!-- TOC -->
|
||||
|
||||
@@ -72,10 +72,10 @@ service.
|
||||
| | | | Username | `databases.xwiki.username` | `xwiki_user` |
|
||||
| | | | Password | `databases.xwiki.password` | |
|
||||
|
||||
# Objectstore
|
||||
# Object storage
|
||||
|
||||
When deploying this suite to production, you need to configure the applications to use your production grade objectstore
|
||||
service.
|
||||
When deploying this suite to production, you need to configure the applications to use your production grade object
|
||||
storage service.
|
||||
|
||||
| Component | Name | Parameter | Key | Default |
|
||||
|-------------|-------------|-----------------|------------------------------------------|--------------------|
|
||||
|
||||
@@ -3,7 +3,7 @@ SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG Ze
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<h1>Getting stated</h1>
|
||||
<h1>Getting started</h1>
|
||||
|
||||
This documentation should enable you to create your own evaluation instance of openDesk on your Kubernetes cluster.
|
||||
|
||||
@@ -21,6 +21,9 @@ This documentation should enable you to create your own evaluation instance of o
|
||||
* [Container runtime](#container-runtime)
|
||||
* [Volumes](#volumes)
|
||||
* [Connectivity](#connectivity)
|
||||
* [Ports](#ports)
|
||||
* [Web based user interface](#web-based-user-interface)
|
||||
* [Mail clients](#mail-clients)
|
||||
* [Mail/SMTP configuration](#mailsmtp-configuration)
|
||||
* [TURN configuration](#turn-configuration)
|
||||
* [Certificate issuer](#certificate-issuer)
|
||||
@@ -29,6 +32,7 @@ This documentation should enable you to create your own evaluation instance of o
|
||||
* [Install single app](#install-single-app)
|
||||
* [Install single release/chart](#install-single-releasechart)
|
||||
* [Access deployment](#access-deployment)
|
||||
* [Using from external repository](#using-from-external-repository)
|
||||
* [Uninstall](#uninstall)
|
||||
<!-- TOC -->
|
||||
|
||||
@@ -48,7 +52,7 @@ files.
|
||||
> All configuration options and their default values can be found in files at `helmfile/environments/default/`
|
||||
|
||||
For the following guide, we will use `dev` as environment, where variables can be set in
|
||||
`helmfile/environments/dev/values.yaml`.
|
||||
`helmfile/environments/dev/values.yaml.gotmpl`.
|
||||
|
||||
## DNS
|
||||
|
||||
@@ -96,29 +100,29 @@ export DOMAIN=domain.tld
|
||||
|
||||
All available apps and their default value can be found in `helmfile/environments/default/workplace.yaml`.
|
||||
|
||||
| Component | Name | Default | Description |
|
||||
|-----------------------------|-------------------------------------|---------|--------------------------------|
|
||||
| Certificates | `certificates.enabled` | `true` | TLS certificates |
|
||||
| ClamAV (Distributed) | `clamavDistributed.enabled` | `false` | Antivirus engine |
|
||||
| ClamAV (Simple) | `clamavSimple.enabled` | `true` | Antivirus engine |
|
||||
| Collabora | `collabora.enabled` | `true` | Weboffice |
|
||||
| CryptPad | `cryptpad.enabled` | `true` | Weboffice |
|
||||
| Dovecot | `dovecot.enabled` | `true` | Mail backend |
|
||||
| Element | `element.enabled` | `true` | Secure communications platform |
|
||||
| Intercom Service | `intercom.enabled` | `true` | Cross service data exchange |
|
||||
| Jitsi | `jitsi.enabled` | `true` | Videoconferencing |
|
||||
| MariaDB | `mariadb.enabled` | `true` | Database |
|
||||
| Memcached | `memcached.enabled` | `true` | Cache Database |
|
||||
| MinIO | `minio.enabled` | `true` | Object Storage |
|
||||
| Nextcloud | `nextcloud.enabled` | `true` | File share |
|
||||
| OpenProject | `openproject.enabled` | `true` | Project management |
|
||||
| OX Appsuite | `oxAppsuite.enabled` | `true` | Groupware |
|
||||
| Provisioning | `oxConnector.enabled` | `true` | Backend provisioning |
|
||||
| Postfix | `postfix.enabled` | `true` | MTA |
|
||||
| PostgreSQL | `postgresql.enabled` | `true` | Database |
|
||||
| Redis | `redis.enabled` | `true` | Cache Database |
|
||||
| Univention Management Stack | `univentionManagementStack.enabled` | `true` | Identity Management & Portal |
|
||||
| XWiki | `xwiki.enabled` | `true` | Knowledgebase |
|
||||
| Component | Name | Default | Description |
|
||||
| -------------------- | --------------------------- | ------- | ------------------------------ |
|
||||
| Certificates | `certificates.enabled` | `true` | TLS certificates |
|
||||
| ClamAV (Distributed) | `clamavDistributed.enabled` | `false` | Antivirus engine |
|
||||
| ClamAV (Simple) | `clamavSimple.enabled` | `true` | Antivirus engine |
|
||||
| Collabora | `collabora.enabled` | `true` | Weboffice |
|
||||
| CryptPad | `cryptpad.enabled` | `true` | Weboffice |
|
||||
| Dovecot | `dovecot.enabled` | `true` | Mail backend |
|
||||
| Element | `element.enabled` | `true` | Secure communications platform |
|
||||
| Intercom Service | `intercom.enabled` | `true` | Cross service data exchange |
|
||||
| Jitsi | `jitsi.enabled` | `true` | Videoconferencing |
|
||||
| MariaDB | `mariadb.enabled` | `true` | Database |
|
||||
| Memcached | `memcached.enabled` | `true` | Cache Database |
|
||||
| MinIO | `minio.enabled` | `true` | Object Storage |
|
||||
| Nextcloud | `nextcloud.enabled` | `true` | File share |
|
||||
| Nubus | `nubus.enabled` | `true` | Identity Management & Portal |
|
||||
| OpenProject | `openproject.enabled` | `true` | Project management |
|
||||
| OX Appsuite | `oxAppsuite.enabled` | `true` | Groupware |
|
||||
| Provisioning | `oxConnector.enabled` | `true` | Backend provisioning |
|
||||
| Postfix | `postfix.enabled` | `true` | MTA |
|
||||
| PostgreSQL | `postgresql.enabled` | `true` | Database |
|
||||
| Redis | `redis.enabled` | `true` | Cache Database |
|
||||
| XWiki | `xwiki.enabled` | `true` | Knowledge management |
|
||||
|
||||
Exemplary, Jitsi can be disabled like:
|
||||
|
||||
@@ -132,7 +136,7 @@ jitsi:
|
||||
By default Helm charts and container images are fetched from OCI registries. These registries can be found for most cases
|
||||
in the [openDesk/component section on Open CoDE](https://gitlab.opencode.de/bmi/opendesk/components).
|
||||
|
||||
For untouched upstream artefacts that do not belong to a functional component's core we use upstream registries
|
||||
For untouched upstream artifacts that do not belong to a functional component's core we use upstream registries
|
||||
like Docker Hub.
|
||||
|
||||
Doing a test deployment will most likely be fine with this setup. In case you want to deploy multiple times a day
|
||||
@@ -191,22 +195,34 @@ If your cluster has not the default `10.0.0.0/8` CIDR configured, you need to pr
|
||||
```yaml
|
||||
cluster:
|
||||
networking:
|
||||
cidr: "127.0.0.0/8"
|
||||
cidr:
|
||||
- "127.0.0.0/8"
|
||||
```
|
||||
|
||||
If your load balancer / reverse proxy IPs are not already covered by the above `cidr` you need to
|
||||
explicitly configure the related IPs or IP ranges:
|
||||
|
||||
```yaml
|
||||
cluster:
|
||||
networking:
|
||||
incomingCIDR:
|
||||
- "172.16.0.0/12"
|
||||
```
|
||||
|
||||
### Ingress
|
||||
|
||||
By default, the `ingressClassName` is empty to choose your default ingress controller, you may want to customize it by
|
||||
setting:
|
||||
By default, the `ingressClassName` is empty to choose your default ingress controller. You may want to customize it by
|
||||
setting the following attribute to the name of the currently only supported ingress controller `ingress-nginx` (see
|
||||
[requirements.md](./requirements.md)) for reference) within your deployment if that is not the clusters default ingress.
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
ingressClassName: "cilium"
|
||||
ingressClassName: "name-of-my-nginx-ingress"
|
||||
```
|
||||
|
||||
### Container runtime
|
||||
|
||||
Some apps require specific configuration for container runtimes. You can set your container runtime like `cri-o`,
|
||||
Some apps require specific configuration for the container runtime. You can set your container runtime like `cri-o`,
|
||||
`containerd` or `docker` by:
|
||||
|
||||
```yaml
|
||||
@@ -237,9 +253,32 @@ persistence:
|
||||
|
||||
## Connectivity
|
||||
|
||||
### Ports
|
||||
|
||||
**Note:** If you use `NodePort` for service exposure, you need to check your deployment for the actual ports.
|
||||
|
||||
#### Web based user interface
|
||||
|
||||
To use the openDesk functionality with its web based user interface you need to publicly expose the following ports:
|
||||
|
||||
| Component | Description | Port | Type |
|
||||
| ------------------ | ----------------------- | ----: | ---: |
|
||||
| Jitsi Video Bridge | ICE Port for video data | 10000 | UDP |
|
||||
|
||||
#### Mail clients
|
||||
|
||||
To connect with mail clients like [Thunderbird](https://www.thunderbird.net/), the following ports need public exposure:
|
||||
|
||||
| Component | Description | Port | Type |
|
||||
| ------------------ | ----------------------- | ----: | ---: |
|
||||
| Dovecot | IMAPS | 993 | TCP |
|
||||
| | POP3S | 995 | TCP |
|
||||
| Postfix | SMTP | 25 | TCP |
|
||||
| | SMTPS | 587 | TCP |
|
||||
|
||||
### Mail/SMTP configuration
|
||||
|
||||
To use the full potential of the openDesk, you need to set up an SMTP Smarthost/Relay which allows to send emails from
|
||||
To use the full potential of the openDesk, you need to set up an SMTP relay which allows sending emails from
|
||||
the whole subdomain.
|
||||
|
||||
```yaml
|
||||
@@ -348,8 +387,7 @@ When all apps are successfully deployed and pod status' went to `Running` or `Su
|
||||
https://portal.domain.tld
|
||||
```
|
||||
|
||||
If you change the subdomain of `univentionManagementStack`, you need to replace `portal`
|
||||
by your specified subdomain.
|
||||
If you change the subdomain of `nubus`, you need to replace `portal` by your specified subdomain.
|
||||
|
||||
**Credentials:**
|
||||
|
||||
@@ -367,7 +405,19 @@ section provide you with the desired information to login with the two default u
|
||||
| Username | Password | Description |
|
||||
|-----------------|--------------------------------------------|------------------|
|
||||
| `default.user` | `40615..............................e9e2f` | Application user |
|
||||
| `default.admin` | `bdbbb..............................04db6` | Administrator |
|
||||
| `default.admin` | `17027..............................04db6` | Administrator |
|
||||
|
||||
## Using from external repository
|
||||
|
||||
It is possible to refer to `./helmfile_generic.yaml` from an external
|
||||
directory or repository. The `helmfile.yaml` that refers to
|
||||
`./helmfile_generic.yaml` may define custom environments. These custom
|
||||
environments may overwrite certain configuration values. These
|
||||
configuration values are:
|
||||
|
||||
* `global.domain`
|
||||
* `global.helmRegistry`
|
||||
* `global.master_password`
|
||||
|
||||
# Uninstall
|
||||
|
||||
|
||||
97
docs/migrations.md
Normal file
97
docs/migrations.md
Normal file
@@ -0,0 +1,97 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<h1>Upgrade migrations</h1>
|
||||
|
||||
* [Disclaimer](#disclaimer)
|
||||
* [Releases upgrades](#releases-upgrades)
|
||||
* [From v0.9.0](#from-v090)
|
||||
* [Automated migrations](#automated-migrations)
|
||||
* [Updated IAM component Nubus](#updated-iam-component-nubus)
|
||||
* [Manual cleanup](#manual-cleanup)
|
||||
* [From v0.8.1](#from-v081)
|
||||
* [Updated `cluster.networking.cidr`](#updated-clusternetworkingcidr)
|
||||
* [Updated customizable template attributes](#updated-customizable-template-attributes)
|
||||
* [`migrations` S3 bucket](#migrations-s3-bucket)
|
||||
* [Related components and artefacts](#related-components-and-artefacts)
|
||||
* [Development](#development)
|
||||
|
||||
# Disclaimer
|
||||
|
||||
We do not offer support for upgrades before we reach openDesk 1.0.
|
||||
|
||||
Though we try to ease the pain when it comes to 0.x upgrades. That is what this document is for.
|
||||
|
||||
Limitations:
|
||||
- We assume that the PV reclaim policy is set to `delete`, so expect that PVs get deleted as soon as the related PVC was deleted and will cover an explicit delete for PVs.
|
||||
|
||||
# Releases upgrades
|
||||
|
||||
## From v0.9.0
|
||||
|
||||
### Automated migrations
|
||||
|
||||
#### Updated IAM component Nubus
|
||||
|
||||
openDesk is integrating the latest [Nubus](https://www.univention.de/produkte/nubus/) development from Univention. The now redundant and scalable LDAP requires migration activities. These have been automated to avoid manual interaction. The `run_2` of the openDesk
|
||||
upgrade migrations executes the following steps:
|
||||
|
||||
- Stage PRE:
|
||||
- Delete service `ums-keycloak`, as it will be recreated headless.
|
||||
- Scale down `statefulset/ums-ldap-server` and `statefulset/ums-ldap-notifier` in preparation or the next step:
|
||||
- Create two new PVCs `shared-data-ums-ldap-server-primary-0` and `shared-data-ums-ldap-server-primary-1` for the new LDAP primary pods as copy from the existing `shared-data-ums-ldap-server-0`. The LDAP secondaries will sync from the primary nodes.
|
||||
- Stage POST:
|
||||
- Restart Keycloak.
|
||||
|
||||
##### Manual cleanup
|
||||
|
||||
Currently we do not execute possible cleanup steps as part of the migrations POST stage. So you might want to remove the no longer used PVCs after successful upgrade:
|
||||
```
|
||||
NAMESPACE=<your_namespace>
|
||||
kubectl -n ${NAMESPACE} delete pvc shared-data-ums-ldap-server-0
|
||||
kubectl -n ${NAMESPACE} delete pvc shared-run-ums-ldap-server-0
|
||||
```
|
||||
|
||||
## From v0.8.1
|
||||
|
||||
### Updated `cluster.networking.cidr`
|
||||
|
||||
- Action: `cluster.networking.cidr` is now an array (was a string until 0.8.1), please update your setup accordingly if you explicitly set this value.
|
||||
- Reference:[cluster.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/cluster.yaml)
|
||||
|
||||
### Updated customizable template attributes
|
||||
|
||||
- Action: Please ensure you update you custom deployment values according with the updated default value structure.
|
||||
- References:
|
||||
- `functional.` prefix for `authentication.*`, `externalServices.*`, `admin.*` and `filestore.*`, see [functional.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/functional.yaml).
|
||||
- `debug.` prefix for `cleanup.*`, see [debug.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/debug.yaml).
|
||||
- `monitoring.` prefix for `prometheus.*` and `graphana.*`, see [monitoring.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/monitoring.yaml).
|
||||
- `smtp.` prefix for `localpartNoReply`, see [smtp.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/smtp.yaml).
|
||||
|
||||
### `migrations` S3 bucket
|
||||
|
||||
- Action: For self managed/external S3/object storages, please ensure you add a bucket `migrations` to your S3.
|
||||
- Reference: `objectstores.migrations` in [objectstores.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/objectstores.yaml)
|
||||
|
||||
# Related components and artefacts
|
||||
|
||||
openDesk comes with two upgrade steps as part of the deployment, they can be found in the folder [/helmfile/apps](../helmfile/apps/) as all other components:
|
||||
|
||||
- `migrations-pre`: Is the very first app that gets deployed.
|
||||
- `migrations-post`: Is the last app that gets deployed.
|
||||
|
||||
Both migrations have to be deployed exclusively at their first/last position and not in parallel with other components.
|
||||
|
||||
The status of the upgrade migrations is tracked in the ConfigMap `migrations-status`, more details can be found in the [README.md of the related container image](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/README.md).
|
||||
|
||||
## Development
|
||||
|
||||
When a new upgrade migration is required, ensure to address the following list:
|
||||
|
||||
- Update the generated release version file [`global.generated.yaml`](../helmfile/environments/default/global.generated.yaml) at least on the patch level to test the upgrade in your feature branch as well as trigger it in the `develop` branch after the feature branch was merged. The set value gets overwritten during the release process with the release's actual version number.
|
||||
- You have to implement the migration logic as a runner script in the [`opendesk-migrations`](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations) image. Please find more instructions in the linked repository.
|
||||
- You most likely have to update the [`opendesk-migrations` Helm chart](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-migrations) within the `rules` section of the [`role.yaml`](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-migrations/-/blob/main/charts/opendesk-migrations/templates/role.yaml) to provide the permissions required for the execution of your migration's logic.
|
||||
- You have to set the runner's ID you want to execute in the [migrations.yaml.gotmpl](../helmfile/shared/migrations.yaml.gotmpl). See also the `migrations.*` section of [the Helm chart's README.md](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-migrations/-/blob/main/charts/opendesk-migrations/README.md).
|
||||
- Update the [`charts.yaml`](../helmfile/environments/default/charts.yaml) and [`images.yaml`](../helmfile/environments/default/images.yaml) to reflect the newer releases of the `opendesk-migrations` Helm chart and container image.
|
||||
@@ -20,9 +20,9 @@ This section covers the internal system requirements as well as external service
|
||||
# tl;dr
|
||||
openDesk is a Kubernetes only solution and requires an existing Kubernetes (K8s) cluster.
|
||||
|
||||
- K8s cluster >= 1.24, [CNCF Certified Kubernetes Distro](https://www.cncf.io/certification/software-conformance/)
|
||||
- K8s cluster >= 1.24, [CNCF Certified Kubernetes distribution](https://www.cncf.io/certification/software-conformance/)
|
||||
- Domain and DNS Service
|
||||
- Ingress controller (supported are nginx-ingress, HAProxy)
|
||||
- Ingress controller (Ingress NGINX)
|
||||
- [Helm](https://helm.sh/) >= v3.9.0
|
||||
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= **v0.157.0**
|
||||
- [HelmDiff](https://github.com/databus23/helm-diff) >= 3.6.0
|
||||
@@ -33,16 +33,16 @@ openDesk is a Kubernetes only solution and requires an existing Kubernetes (K8s)
|
||||
|
||||
The following minimal requirements are thought for initial evaluation deployment:
|
||||
|
||||
| Spec | Value |
|
||||
|------|------------------------------------------------------|
|
||||
| CPU | 8 Cores of x64 or x86 CPU (ARM is not supported yet) |
|
||||
| RAM | 16 GB, recommended 32 GB |
|
||||
| Disk | HDD or SSD, >10 GB |
|
||||
| Spec | Value |
|
||||
| ---- | ----------------------------------------------------- |
|
||||
| CPU | 12 Cores of x64 or x86 CPU (ARM is not supported yet) |
|
||||
| RAM | 32 GB, more recommended |
|
||||
| Disk | HDD or SSD, >10 GB |
|
||||
|
||||
# Kubernetes
|
||||
|
||||
Any self-hosted or managed K8s cluster >= 1.24 listed in
|
||||
[CNCF Certified Kubernetes Distros](https://www.cncf.io/certification/software-conformance/) should be supported.
|
||||
[CNCF Certified Kubernetes distributions](https://www.cncf.io/certification/software-conformance/) should be supported.
|
||||
|
||||
The deployment is tested against [kubespray](https://github.com/kubernetes-sigs/kubespray) based clusters.
|
||||
|
||||
@@ -53,10 +53,11 @@ The deployment is tested against [kubespray](https://github.com/kubernetes-sigs/
|
||||
The deployment is intended to use only over HTTPS via a configured FQDN, therefor it is required to have a proper
|
||||
configured ingress controller deployed.
|
||||
|
||||
**Maintained controllers:**
|
||||
- [NGINX Ingress Controller](https://github.com/nginxinc/kubernetes-ingress)
|
||||
**Supported controllers:**
|
||||
- [Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx)
|
||||
- [HAProxy Kubernetes Ingress Controller](https://github.com/haproxytech/kubernetes-ingress)
|
||||
|
||||
Note: The platform development team is evaluating the use of [Gateway API](https://gateway-api.sigs.k8s.io/).
|
||||
If you have feedback on that topic, please share it with us.
|
||||
|
||||
# Volume provisioner
|
||||
|
||||
@@ -75,16 +76,18 @@ openDesk certificate management disabled.
|
||||
|
||||
# External services
|
||||
|
||||
Evaluation the openDesk deployment does not require any external service to start, but features may be limited.
|
||||
For development and evaluation of openDesk we bundle some service to start with. Be aware that for production
|
||||
deployments you need to make use of your own production grade services, see the
|
||||
[external-services.md](./external-services.md) for configuration details.
|
||||
|
||||
| Group | Type | Version | Tested against |
|
||||
|----------|---------------------|---------|-----------------------|
|
||||
| Cache | Memached | `1.6.x` | Memached |
|
||||
| -------- | ------------------- | ------- | --------------------- |
|
||||
| Cache | Memcached | `1.6.x` | Memcached |
|
||||
| | Redis | `7.x.x` | Redis |
|
||||
| Database | MariaDB | `10.x` | MariaDB |
|
||||
| | PostgreSQL | `15.x` | PostgreSQL |
|
||||
| Mail | Mail Transfer Agent | | Postfix |
|
||||
| | PKI/CI (SMIME) | | |
|
||||
| | PKI/CI (S/MIME) | | |
|
||||
| Security | AntiVirus/ICAP | | ClamAV |
|
||||
| Storage | K8s ReadWriteOnce | | Ceph / Cloud specific |
|
||||
| | K8s ReadWriteMany | | Ceph / NFS |
|
||||
|
||||
@@ -16,7 +16,7 @@ This document should cover the abilities to scale apps.
|
||||
The Replicas can be increased of almost any component, but is only effective for high-availability or load-balancing for
|
||||
apps with a check-mark in `Scaling (effective)` column.
|
||||
|
||||
Verified positive effects are marke with a check-mark in `Scaling (verified)` column, apps which are not yet tested are
|
||||
Verified positive effects are marked with a check-mark in `Scaling (verified)` column, apps which are not yet tested are
|
||||
marked with a gear.
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ marked with a gear.
|
||||
| | `replicas.jitsi ` | :white_check_mark: | :gear: |
|
||||
| | `replicas.jitsiKeycloakAdapter` | :white_check_mark: | :gear: |
|
||||
| | `replicas.jvb ` | :x: | :x: |
|
||||
| Keycloak | `replicas.keycloak` | :white_check_mark: | :gear: |
|
||||
| Keycloak | `replicas.keycloak` | :white_check_mark: | :white_check_mark: |
|
||||
| Memcached | `replicas.memcached` | :gear: | :gear: |
|
||||
| Minio | `replicas.minioDistributed` | :white_check_mark: | :white_check_mark: |
|
||||
| Nextcloud | `replicas.nextcloudApache2` | :white_check_mark: | :white_check_mark: |
|
||||
|
||||
@@ -170,6 +170,7 @@ This list gives you an overview of templated security settings and if they compl
|
||||
| **nextcloud**/opendesk-nextcloud/apache2 | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud/exporter | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud/php | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
|
||||
| **open-xchange**/dovecot | :x: | no | n/a | yes | n/a | n/a | n/a | yes | no ["CHOWN","DAC_OVERRIDE","KILL","NET_BIND_SERVICE","SETGID","SETUID","SYS_CHROOT"] |
|
||||
| **open-xchange**/open-xchange/appsuite/core-documentconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes |
|
||||
| **open-xchange**/open-xchange/appsuite/core-guidedtours | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **open-xchange**/open-xchange/appsuite/core-imageconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes |
|
||||
@@ -196,31 +197,17 @@ This list gives you an overview of templated security settings and if they compl
|
||||
| **services**/postgresql | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **services**/redis/master | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **univention-management-stack**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-guardian-authorization-api | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-guardian-management-api | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-guardian-management-ui | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-keycloak | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-keycloak-bootstrap | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-keycloak-extensions/handler | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-keycloak-extensions/proxy | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-ldap-notifier | :x: | no | no | no | no | 0 | 0 | yes | yes |
|
||||
| **univention-management-stack**/ums-ldap-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-notifications-api | :x: | no | no | no | no | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-open-policy-agent | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-portal-frontend | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-portal-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-portal-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-provisioning/dispatcher | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-provisioning/events-and-consumer-api | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums-provisioning/udm-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-selfservice-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-stack-data-swp | :x: | no | no | no | no | 0 | 0 | yes | yes |
|
||||
| **univention-management-stack**/ums-stack-data-ums | :x: | no | no | no | no | 0 | 0 | yes | yes |
|
||||
| **univention-management-stack**/ums-stack-gateway | :x: | no | no | no | yes | 1001 | 1001 | yes | yes |
|
||||
| **univention-management-stack**/ums-store-dav | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-udm-rest-api | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-umc-gateway | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums-umc-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums/keycloak | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums/keycloak-bootstrap | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums/keycloak-extensions/handler | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums/keycloak-extensions/proxy | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **univention-management-stack**/ums/ldap-notifier | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
|
||||
| **univention-management-stack**/ums/portal-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums/selfservice-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums/stack-data-swp | :x: | no | no | no | no | 0 | 0 | yes | yes |
|
||||
| **univention-management-stack**/ums/stack-gateway | :x: | no | no | no | yes | 1001 | 0 | yes | yes |
|
||||
| **univention-management-stack**/ums/umc-gateway | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **univention-management-stack**/ums/umc-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
|
||||
| **xwiki**/xwiki | :x: | no | no | no | yes | 100 | 101 | yes | yes |
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ theme:
|
||||
|
||||
# Colors
|
||||
|
||||
The primary color and their derivates with lesser opacity be customized by:
|
||||
The primary color and their derives with lesser opacity be customized by:
|
||||
|
||||
```yaml
|
||||
theme:
|
||||
|
||||
@@ -22,8 +22,8 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Branch workflows](#branch-workflows)
|
||||
* [`main`](#main)
|
||||
* [`develop`](#develop)
|
||||
* [`docu`](#docu)
|
||||
* [`mntn`](#mntn)
|
||||
* [`docs`](#docs)
|
||||
* [`fix`](#fix)
|
||||
* [`feat`](#feat)
|
||||
* [Branch names](#branch-names)
|
||||
* [Commit messages / Conventional Commits](#commit-messages--conventional-commits)
|
||||
@@ -46,7 +46,7 @@ The following section should provide a high-level view of the involved parties i
|
||||
- **Open source product suppliers**
|
||||
- Focus areas
|
||||
- Development of upstream products
|
||||
- Development of integrational functionality relevant to openDesk and others
|
||||
- Development of integrative functionality relevant to openDesk and others
|
||||
- Providing source code and the artifacts required to install openDesk to Open CoDE
|
||||
- Hand over to _openDesk platform development_
|
||||
- Helm charts
|
||||
@@ -151,7 +151,7 @@ As the way to mark the license header as a comment differs between the various f
|
||||
|
||||
### Disclaimer
|
||||
|
||||
openDesk consists only of community products, so there is no SLA to receive service updates or backports of critical security fixes. This has two consequences:
|
||||
openDesk consists only of community products, so there is no SLA to receive service updates or backport of critical security fixes. This has two consequences:
|
||||
- In production scenarios, you should replace the community versions of the functional components with supported, SLA-backed paid versions.
|
||||
- openDesk aims to always update to the latest available releases of the community components and we therefore have rolling technical releases.
|
||||
|
||||
@@ -169,8 +169,8 @@ The basic facts for the flow are:
|
||||
- Developers can create sub-branches from their feature branch(es) as needed.
|
||||
- When a *feature* branch gets pushed a Merge Request in `Draft` state is automatically created.
|
||||
- We know three types of *feature* branches:
|
||||
- `docu`: Doing just documentation changes
|
||||
- `mntn`: Maintenance of the openDesk software components and minor configurational changes
|
||||
- `docs`: Doing just documentation changes
|
||||
- `fix`: Maintenance of the openDesk software components and minor configurational changes
|
||||
- `feat`: All changes that do not fall into the two categories above, especially
|
||||
- supplier deliverables and
|
||||
- configurational changes that have a significant impact on openDesk users or require migrations[^1]
|
||||
@@ -185,21 +185,21 @@ gitGraph
|
||||
checkout "develop"
|
||||
commit id: "QA 'nightly develop'"
|
||||
commit id: " "
|
||||
branch "docu"
|
||||
checkout "docu"
|
||||
branch "docs"
|
||||
checkout "docs"
|
||||
commit id: "Documentation commits" type: HIGHLIGHT
|
||||
checkout "develop"
|
||||
merge "docu"
|
||||
merge "docs"
|
||||
checkout "main"
|
||||
merge "develop" tag: "No release"
|
||||
checkout "develop"
|
||||
commit id: " "
|
||||
branch "mntn"
|
||||
checkout "mntn"
|
||||
branch "fix"
|
||||
checkout "fix"
|
||||
commit id: "Maintenance commits" type: HIGHLIGHT
|
||||
commit id: "QG 'mntn'" type: REVERSE
|
||||
commit id: "QG 'fix'" type: REVERSE
|
||||
checkout "develop"
|
||||
merge "mntn"
|
||||
merge "fix"
|
||||
commit id: "QA 'release merge'" type: REVERSE
|
||||
checkout "main"
|
||||
merge "develop" tag: "Patch or minor release"
|
||||
@@ -230,8 +230,8 @@ The Standard Quality Gate addresses quality assurance steps that should be execu
|
||||
|
||||
1. Linting
|
||||
- Blocking
|
||||
- Licening: [reuse](https://github.com/fsfe/reuse-tool)
|
||||
- openDesk specific: Especially `images.yaml` and `charts.yaml`, find more details in the [development](./development.md) docu
|
||||
- Licensing: [reuse](https://github.com/fsfe/reuse-tool)
|
||||
- openDesk specific: Especially `images.yaml` and `charts.yaml`, find more details in [development.md](./development.md).
|
||||
- Non Blocking
|
||||
- Security: [Kyverno policy check](../.kyverno) addressing some IT-Grundschutz requirements
|
||||
- Formal: Yaml
|
||||
@@ -249,7 +249,7 @@ The Standard Quality Gate addresses quality assurance steps that should be execu
|
||||
|
||||
Steps #1 to #3 from above are executed as GitLab CI and therefore documented within GitLab.
|
||||
|
||||
Step #4 is focussed on security and was not fully implemented yet. Its main objective is to check for regressions. That step is just the second step of a security check and monitoring chain as shown below. While some checks can be executed against the static artefacts (e.g. container images) other might require an up-and-running instance. These are especially located in the third step below which is not yet implemented.
|
||||
Step #4 is focussed on security and was not fully implemented yet. Its main objective is to check for regressions. That step is just the second step of a security check and monitoring chain as shown below. While some checks can be executed against the static artifacts (e.g. container images) other might require an up-and-running instance. These are especially located in the third step below which is not yet implemented.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
@@ -258,7 +258,7 @@ flowchart TD
|
||||
e.g. based on openDesk
|
||||
reference implementation 'gitlab-config'.
|
||||
>> Can the artefact be integrated? <<
|
||||
] -->|integrate Artefacts| B[<u><b>Deployment automation</b></u> SQG
|
||||
] -->|integrate artifacts| B[<u><b>Deployment automation</b></u> SQG
|
||||
based on GitLab CI during
|
||||
technical release process.
|
||||
>> Can the platform be released? <<
|
||||
@@ -277,8 +277,8 @@ This section will explain the workflow for each branch (type) based on the Gitfl
|
||||
|
||||
- `QA 'nightly main'`: Execute the SQG based on the most recent release. The upgrade test environment should be a long-standing environment that only gets built from scratch with the previous technical release when something breaks the environment.
|
||||
- Merge points: We are using the [Semantic Release convention](https://github.com/semantic-release/semantic-release) which itself is based on the [Semantic Versioning (SemVer) notation](https://semver.org) to automatically create technical releases on the merge points.
|
||||
- "No release": When a merge from `develop` includes only changes from `docu` branches the merge into `main` will only consist of `docs` or `chore` commits. No new release will be generated by that merge.
|
||||
- "Patch or minor release": When changes from `mntn` branches get merged these might contain `fix` or `feat` commits causing a new technical release to be built with an updated version on Patch or Minor level.
|
||||
- "No release": When a merge from `develop` includes only changes from `docs` branches the merge into `main` will only consist of `docs` or `chore` commits. No new release will be generated by that merge.
|
||||
- "Patch or minor release": When changes from `fix` branches get merged these might contain `fix` or `feat` commits causing a new technical release to be built with an updated version on Patch or Minor level.
|
||||
- "Minor or major release": When changes from `feat` branches get merged these might contain `feat` commits even with breaking changes, causing a technical release to be built with an updated version on Minor or Major level.
|
||||
- "Manual Functional Release Activities": Technical releases are loosely coupled to functional releases. The additional activities for a functional release select an existing technical release as a basis to generate the artifacts required for a functional release, for example:
|
||||
- Conduct additional manual explorative and regression tests.
|
||||
@@ -289,19 +289,19 @@ This section will explain the workflow for each branch (type) based on the Gitfl
|
||||
- `QA 'nightly develop'`: Follows the same approach as `QA 'nightly main'` - execute the SQG based in this case on the head revision of the `develop` branch.
|
||||
- `QA 'release merge'`: The Merge Request for this merge has to be created manually by members of the platform development team. It should document:
|
||||
- That the SQG was successfully executed upon the to-be merged state - it could be done explicitly or based on a `QA 'nightly develop'`
|
||||
- In case of `mntn` changes that usually how no test automation: Changes have been verified by a member of the platform development team.
|
||||
- In case of `fix` changes that usually how no test automation: Changes have been verified by a member of the platform development team.
|
||||
- That the changes have been reviewed by at least two members of the platform development team giving their approval on the Merge Request.
|
||||
- Merge points (from `docu`, `mntn`, and `feat` branches): No additional activity on these merge points as the QA is ensured before the merge in the just-named branch types.
|
||||
- Merge points (from `docs`, `fix`, and `feat` branches): No additional activity on these merge points as the QA is ensured before the merge in the just-named branch types.
|
||||
|
||||
##### `docu`
|
||||
##### `docs`
|
||||
|
||||
Branches of type `docu` only contain the commits themselves and have to adhere to the workflow basic fact that:
|
||||
Branches of type `docs` only contain the commits themselves and have to adhere to the workflow basic fact that:
|
||||
> All merges into `develop` or `main` require two approvals from the platform development team.
|
||||
|
||||
##### `mntn`
|
||||
##### `fix`
|
||||
|
||||
Besides the actual changes being committed in an `mntn` branch there is only the:
|
||||
- `QG 'mntn'`: In addition to validating the actual change the owner of the branch has to ensure the successful execution of the SQG.
|
||||
Besides the actual changes being committed in an `fix` branch there is only the:
|
||||
- `QG 'fix'`: In addition to validating the actual change the owner of the branch has to ensure the successful execution of the SQG.
|
||||
|
||||
##### `feat`
|
||||
|
||||
@@ -311,54 +311,36 @@ This branch type requires the most activities on top of the actual development:
|
||||
- This is the actual interface between the platform development workflow and the supplier work package workflow.
|
||||
- The openDesk QA team validates the change, ideally based on the acceptance criteria defined in the supplier's work package definition.
|
||||
- If improvements are needed QA passes on the feedback to the developer/supplier.
|
||||
- If the QA was successful test cases for the testautomation of the feature are defined.
|
||||
- If the QA was successful test cases for the test automation of the feature are defined.
|
||||
- QA should also evaluate if there is a need for end-user documentation of the feature.
|
||||
- `Develop Test`: The test cases are implemented by the openDesk platform development and added to the openDesk end-to-end test suite.
|
||||
- `Documentation`: When required the documentation team has to update the end-user documentation.
|
||||
|
||||
#### Branch names
|
||||
|
||||
Branches created from the `develop` branch have to adhere to the following notation: `<party[-developer]>/<type>/<component>/<details>`:
|
||||
Branches created from the `develop` branch have to adhere to the following notation: `<type>/<responsible_developer>/<details>`:
|
||||
|
||||
- `<party[-developer]>`: An identifier for the developing party optionally plus the name of the developer or team working on that branch. The following two-letter shorthand notations should be used for the owner:
|
||||
- Suppliers
|
||||
- `co`: Collabora
|
||||
- `cp`: CryptPad
|
||||
- `el`: Element
|
||||
- `nc`: Nextcloud
|
||||
- `nd`: Nordeck
|
||||
- `op`: OpenProject
|
||||
- `ox`: Open-Xchange
|
||||
- `uv`: Univention
|
||||
- `xw`: XWiki
|
||||
- Other
|
||||
- `pd`: (openDesk) Platform Development
|
||||
- `xx`: Other, not one of the parties mentioned before
|
||||
|
||||
- `<type>`: Based on the branch types described in this document valid values for type are
|
||||
- `docu`
|
||||
- `mntn`
|
||||
- `<type>`: From the list of branch types explained above:
|
||||
- `docs`
|
||||
- `fix`
|
||||
- `feat`
|
||||
|
||||
- `<component>`: Valid components are
|
||||
- `<responsible_developer>`: Something that makes you identifiable as owner of the branch, e.g. the first letter of your first name followed by your family name.
|
||||
- `<details>`: A very short note about what is going to happen in the branch and ideally what component is affected from the following list of components:
|
||||
- `helmfile`
|
||||
- `ci`
|
||||
- `cross-functional`
|
||||
- `docs`
|
||||
- `collabora`
|
||||
- `cryptpad`
|
||||
- `element`
|
||||
- `jitsi`
|
||||
- `nextcloud`
|
||||
- `nubus`
|
||||
- `open-xchange`
|
||||
- `openproject`
|
||||
- `services`
|
||||
- `univention-management-stack`
|
||||
- `xwiki`
|
||||
|
||||
- `<details>`: A very short note about what is going to happen in the branch
|
||||
|
||||
Example: `pd-tom/fix/open-xchange/bump_to_8.76`.
|
||||
Example: `feat/tmueller/bump_nextcloud_to_29.0.0`.
|
||||
|
||||
**Note**: The above naming convention is not enforced yet, but please ensure you make use of it.
|
||||
|
||||
@@ -367,7 +349,7 @@ Example: `pd-tom/fix/open-xchange/bump_to_8.76`.
|
||||
Commit messages must adhere to the [Conventional Commit standard](https://www.conventionalcommits.org/en/v1.0.0/#summary). Commits that do not adhere to the standard get rejected by either [Gitlab push rules](https://docs.gitlab.com/ee/user/project/repository/push_rules.html) or the CI.
|
||||
|
||||
```text
|
||||
<type>(<scope>): [path/to/issue#1] <short summary>
|
||||
<type>(<scope>): [path/to/issue#1] <short summary>.
|
||||
│ │ │ │
|
||||
│ │ | └─> Summary in present tense, sentence case, with no period at the end
|
||||
│ │ |
|
||||
@@ -378,7 +360,7 @@ Commit messages must adhere to the [Conventional Commit standard](https://www.co
|
||||
└─> Commit Type: chore, ci, docs, feat, fix
|
||||
```
|
||||
|
||||
Example: `fix(univention-management-stack): Update standard session timeout of openDesk realm in Keycloak`
|
||||
Example: `fix(open-xchange): Bump to 8.26 to heal issue with functional mailbox provisioning.`
|
||||
|
||||
**Beware**: The commit messages are an essential part of the [technical releases](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/releases) as the release's notes are generated from the messages.
|
||||
|
||||
|
||||
@@ -1,51 +1,29 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
#
|
||||
# Advanced Configuration: Nested States
|
||||
#
|
||||
helmfiles:
|
||||
# Path to the helmfile state file being processed BEFORE releases in this state file
|
||||
- path: "helmfile/apps/services/helmfile.yaml"
|
||||
- path: "helmfile/apps/univention-management-stack/helmfile.yaml"
|
||||
- path: "helmfile/apps/intercom-service/helmfile.yaml"
|
||||
- path: "helmfile/apps/open-xchange/helmfile.yaml"
|
||||
- path: "helmfile/apps/nextcloud/helmfile.yaml"
|
||||
- path: "helmfile/apps/collabora/helmfile.yaml"
|
||||
- path: "helmfile/apps/jitsi/helmfile.yaml"
|
||||
- path: "helmfile/apps/element/helmfile.yaml"
|
||||
- path: "helmfile/apps/openproject/helmfile.yaml"
|
||||
- path: "helmfile/apps/xwiki/helmfile.yaml"
|
||||
- path: "helmfile/apps/provisioning/helmfile.yaml"
|
||||
- path: "helmfile/apps/openproject-bootstrap/helmfile.yaml"
|
||||
|
||||
missingFileHandler: "Error"
|
||||
|
||||
# Environment is defined here and in helmfile/bases/environments.yaml
|
||||
# This is a temporary solution to solve issue with different (relative) paths required when
|
||||
# - Installing all releases from root via helmfile apply
|
||||
# - Installing a single release from root via helmfile apply -f helmfile/apps/<app>/helmfile.yaml
|
||||
# - Installing a single release from app directory via helmfile apply
|
||||
# Issue: https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/issues/2
|
||||
|
||||
environments:
|
||||
default:
|
||||
values:
|
||||
- "helmfile/environments/default/*.gotmpl"
|
||||
- "helmfile/environments/default/*.yaml"
|
||||
dev:
|
||||
values:
|
||||
- "helmfile/environments/default/*.gotmpl"
|
||||
- "helmfile/environments/default/*.yaml"
|
||||
- "helmfile/environments/dev/values.yaml.gotmpl"
|
||||
- "helmfile/environments/dev/*.yaml.gotmpl"
|
||||
test:
|
||||
values:
|
||||
- "helmfile/environments/default/*.gotmpl"
|
||||
- "helmfile/environments/default/*.yaml"
|
||||
- "helmfile/environments/test/values.yaml.gotmpl"
|
||||
- "helmfile/environments/test/*.yaml.gotmpl"
|
||||
prod:
|
||||
values:
|
||||
- "helmfile/environments/default/*.gotmpl"
|
||||
- "helmfile/environments/default/*.yaml"
|
||||
- "helmfile/environments/prod/values.yaml.gotmpl"
|
||||
- "helmfile/environments/prod/*.yaml.gotmpl"
|
||||
---
|
||||
# yamllint disable
|
||||
helmfiles:
|
||||
- path: "./helmfile_generic.yaml"
|
||||
values:
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
# {{/*
|
||||
#
|
||||
# Use this format from a remote repository
|
||||
#
|
||||
# - path: "git::https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk.git@helmfile_generic.yaml?ref=v0.7.1"
|
||||
# values:
|
||||
# - {{ toYaml .Values | nindent 8 }}
|
||||
# */}}
|
||||
...
|
||||
|
||||
27
helmfile/apps/collabora/helmfile-child.yaml
Normal file
27
helmfile/apps/collabora/helmfile-child.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# Collabora Online
|
||||
# Source: https://github.com/CollaboraOnline/online
|
||||
- name: "collabora-online-repo"
|
||||
keyring: "../../files/gpg-pubkeys/collaboraoffice-com.gpg"
|
||||
verify: {{ .Values.charts.collabora.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/\
|
||||
{{ .Values.charts.collabora.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "collabora-online"
|
||||
chart: "collabora-online-repo/{{ .Values.charts.collabora.name }}"
|
||||
version: "{{ .Values.charts.collabora.version }}"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.collabora.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "collabora"
|
||||
...
|
||||
@@ -1,30 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# Collabora Online
|
||||
# Source: https://github.com/CollaboraOnline/online
|
||||
- name: "collabora-online-repo"
|
||||
keyring: "../../files/gpg-pubkeys/collaboraoffice-com.gpg"
|
||||
verify: {{ .Values.charts.collabora.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/\
|
||||
{{ .Values.charts.collabora.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "collabora-online"
|
||||
chart: "collabora-online-repo/{{ .Values.charts.collabora.name }}"
|
||||
version: "{{ .Values.charts.collabora.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.collabora.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "collabora"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -7,7 +7,7 @@ autoscaling:
|
||||
enabled: false
|
||||
|
||||
collabora:
|
||||
extra_params: "--o:ssl.enable=false --o:ssl.termination=true"
|
||||
extra_params: "--o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0"
|
||||
username: "collabora-internal-admin"
|
||||
password: {{ .Values.secrets.collabora.adminPassword | quote }}
|
||||
aliasgroups:
|
||||
@@ -17,11 +17,11 @@ fullnameOverride: "collabora"
|
||||
|
||||
grafana:
|
||||
dashboards:
|
||||
enabled: {{ .Values.grafana.dashboards.enabled }}
|
||||
enabled: {{ .Values.monitoring.grafana.dashboards.enabled }}
|
||||
labels:
|
||||
{{ .Values.grafana.dashboards.labels | toYaml | nindent 6 }}
|
||||
{{ .Values.monitoring.grafana.dashboards.labels | toYaml | nindent 6 }}
|
||||
annotations:
|
||||
{{ .Values.grafana.dashboards.annotations | toYaml | nindent 6 }}
|
||||
{{ .Values.monitoring.grafana.dashboards.annotations | toYaml | nindent 6 }}
|
||||
|
||||
image:
|
||||
repository: "{{ .Values.global.imageRegistry | default .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"
|
||||
@@ -37,9 +37,9 @@ ingress:
|
||||
annotations:
|
||||
# Ingress NGINX
|
||||
nginx.ingress.kubernetes.io/upstream-hash-by: "$arg_WOPISrc"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.collabora }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}"
|
||||
nginx.ingress.kubernetes.io/server-snippet: |
|
||||
# block admin and metrics endpoint from outside by default
|
||||
location /cool/getMetrics { deny all; return 403; }
|
||||
@@ -48,21 +48,21 @@ ingress:
|
||||
# NGINX
|
||||
nginx.org/websocket-services: "collabora"
|
||||
nginx.org/lb-method: "hash $arg_WOPISrc consistent"
|
||||
nginx.org/proxy-read-timeout: "600"
|
||||
nginx.org/proxy-send-timeout: "600"
|
||||
nginx.org/client-max-body-size: "0"
|
||||
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
|
||||
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
|
||||
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.collabora }}"
|
||||
nginx.org/server-snippets: |
|
||||
# block admin and metrics endpoint from outside by default
|
||||
location /cool/getMetrics { deny all; return 403; }
|
||||
location /cool/adminws/ { deny all; return 403; }
|
||||
location /browser/dist/admin/admin.html { deny all; return 403; }
|
||||
# HAProxy
|
||||
haproxy.org/timeout-tunnel: "3600s"
|
||||
haproxy.org/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
|
||||
haproxy.org/backend-config-snippet: |
|
||||
balance url_param WOPISrc check_post
|
||||
hash-type consistent
|
||||
# HAProxy - Community: https://haproxy-ingress.github.io/
|
||||
haproxy-ingress.github.io/timeout-tunnel: "3600s"
|
||||
haproxy-ingress.github.io/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
|
||||
haproxy-ingress.github.io/balance-algorithm: "url_param WOPISrc check_post"
|
||||
haproxy-ingress.github.io/config-backend: |
|
||||
hash-type consistent
|
||||
@@ -88,13 +88,13 @@ podSecurityContext:
|
||||
|
||||
prometheus:
|
||||
servicemonitor:
|
||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
labels:
|
||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
||||
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
||||
rules:
|
||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
|
||||
additionalLabels:
|
||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 6 }}
|
||||
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 6 }}
|
||||
|
||||
replicaCount: {{ .Values.replicas.collabora }}
|
||||
|
||||
|
||||
27
helmfile/apps/cryptpad/helmfile-child.yaml
Normal file
27
helmfile/apps/cryptpad/helmfile-child.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# CryptPad
|
||||
# Source: https://github.com/cryptpad/helm
|
||||
- name: "cryptpad-repo"
|
||||
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
|
||||
verify: {{ .Values.charts.cryptpad.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/\
|
||||
{{ .Values.charts.cryptpad.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "cryptpad"
|
||||
chart: "cryptpad-repo/{{ .Values.charts.cryptpad.name }}"
|
||||
version: "{{ .Values.charts.cryptpad.version }}"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.cryptpad.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "cryptpad"
|
||||
...
|
||||
@@ -1,30 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# CryptPad
|
||||
# Source: https://github.com/cryptpad/helm
|
||||
- name: "cryptpad-repo"
|
||||
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
|
||||
verify: {{ .Values.charts.cryptpad.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/\
|
||||
{{ .Values.charts.cryptpad.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "cryptpad"
|
||||
chart: "cryptpad-repo/{{ .Values.charts.cryptpad.name }}"
|
||||
version: "{{ .Values.charts.cryptpad.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.cryptpad.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "cryptpad"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
184
helmfile/apps/element/helmfile-child.yaml
Normal file
184
helmfile/apps/element/helmfile-child.yaml
Normal file
@@ -0,0 +1,184 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Element
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-element
|
||||
- name: "element-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.element.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/\
|
||||
{{ .Values.charts.element.repository }}"
|
||||
- name: "element-well-known-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.elementWellKnown.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/\
|
||||
{{ .Values.charts.elementWellKnown.repository }}"
|
||||
- name: "synapse-web-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapseWeb.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/\
|
||||
{{ .Values.charts.synapseWeb.repository }}"
|
||||
- name: "synapse-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapse.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/\
|
||||
{{ .Values.charts.synapse.repository }}"
|
||||
- name: "synapse-create-account-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapseCreateAccount.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/\
|
||||
{{ .Values.charts.synapseCreateAccount.repository }}"
|
||||
|
||||
# openDesk Matrix Widgets
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
|
||||
- name: "matrix-user-verification-service-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixUserVerificationService.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/\
|
||||
{{ .Values.charts.matrixUserVerificationService.repository }}"
|
||||
- name: "matrix-neoboard-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||
- name: "matrix-neochoice-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||
- name: "matrix-neodatefix-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeodatefixWidget.repository }}"
|
||||
- name: "matrix-neodatefix-bot-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/\
|
||||
{{ .Values.charts.matrixNeodatefixBot.repository }}"
|
||||
|
||||
|
||||
releases:
|
||||
- name: "opendesk-element"
|
||||
chart: "element-repo/{{ .Values.charts.element.name }}"
|
||||
version: "{{ .Values.charts.element.version }}"
|
||||
values:
|
||||
- "values-element.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-well-known"
|
||||
chart: "element-well-known-repo/{{ .Values.charts.elementWellKnown.name }}"
|
||||
version: "{{ .Values.charts.elementWellKnown.version }}"
|
||||
values:
|
||||
- "values-well-known.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-synapse-web"
|
||||
chart: "synapse-web-repo/{{ .Values.charts.synapseWeb.name }}"
|
||||
version: "{{ .Values.charts.synapseWeb.version }}"
|
||||
values:
|
||||
- "values-synapse-web.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-synapse"
|
||||
chart: "synapse-repo/{{ .Values.charts.synapse.name }}"
|
||||
version: "{{ .Values.charts.synapse.version }}"
|
||||
values:
|
||||
- "values-synapse.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-matrix-user-verification-service-bootstrap"
|
||||
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
|
||||
version: "{{ .Values.charts.synapseCreateAccount.version }}"
|
||||
values:
|
||||
- "values-matrix-user-verification-service-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-matrix-user-verification-service"
|
||||
chart: "matrix-user-verification-service-repo/{{ .Values.charts.matrixUserVerificationService.name }}"
|
||||
version: "{{ .Values.charts.matrixUserVerificationService.version }}"
|
||||
values:
|
||||
- "values-matrix-user-verification-service.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neoboard-widget"
|
||||
chart: "matrix-neoboard-widget-repo/{{ .Values.charts.matrixNeoboardWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeoboardWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neoboard-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neochoice-widget"
|
||||
chart: "matrix-neochoice-widget-repo/{{ .Values.charts.matrixNeochoiseWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeochoiseWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neochoice-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-widget"
|
||||
chart: "matrix-neodatefix-widget-repo/{{ .Values.charts.matrixNeodatefixWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeodatefixWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-bot-bootstrap"
|
||||
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
|
||||
version: "{{ .Values.charts.synapseCreateAccount.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-bot-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-bot"
|
||||
chart: "matrix-neodatefix-bot-repo/{{ .Values.charts.matrixNeodatefixBot.name }}"
|
||||
version: "{{ .Values.charts.matrixNeodatefixBot.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-bot.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "element"
|
||||
...
|
||||
@@ -1,187 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# openDesk Element
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-element
|
||||
- name: "element-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.element.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/\
|
||||
{{ .Values.charts.element.repository }}"
|
||||
- name: "element-well-known-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.elementWellKnown.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/\
|
||||
{{ .Values.charts.elementWellKnown.repository }}"
|
||||
- name: "synapse-web-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapseWeb.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/\
|
||||
{{ .Values.charts.synapseWeb.repository }}"
|
||||
- name: "synapse-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapse.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/\
|
||||
{{ .Values.charts.synapse.repository }}"
|
||||
- name: "synapse-create-account-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.synapseCreateAccount.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/\
|
||||
{{ .Values.charts.synapseCreateAccount.repository }}"
|
||||
|
||||
# openDesk Matrix Widgets
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
|
||||
- name: "matrix-user-verification-service-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixUserVerificationService.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/\
|
||||
{{ .Values.charts.matrixUserVerificationService.repository }}"
|
||||
- name: "matrix-neoboard-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||
- name: "matrix-neochoice-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||
- name: "matrix-neodatefix-widget-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/\
|
||||
{{ .Values.charts.matrixNeodatefixWidget.repository }}"
|
||||
- name: "matrix-neodatefix-bot-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/\
|
||||
{{ .Values.charts.matrixNeodatefixBot.repository }}"
|
||||
|
||||
|
||||
releases:
|
||||
- name: "opendesk-element"
|
||||
chart: "element-repo/{{ .Values.charts.element.name }}"
|
||||
version: "{{ .Values.charts.element.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-element.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-well-known"
|
||||
chart: "element-well-known-repo/{{ .Values.charts.elementWellKnown.name }}"
|
||||
version: "{{ .Values.charts.elementWellKnown.version }}"
|
||||
values:
|
||||
- "values-well-known.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-synapse-web"
|
||||
chart: "synapse-web-repo/{{ .Values.charts.synapseWeb.name }}"
|
||||
version: "{{ .Values.charts.synapseWeb.version }}"
|
||||
values:
|
||||
- "values-synapse-web.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-synapse"
|
||||
chart: "synapse-repo/{{ .Values.charts.synapse.name }}"
|
||||
version: "{{ .Values.charts.synapse.version }}"
|
||||
values:
|
||||
- "values-synapse.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-matrix-user-verification-service-bootstrap"
|
||||
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
|
||||
version: "{{ .Values.charts.synapseCreateAccount.version }}"
|
||||
values:
|
||||
- "values-matrix-user-verification-service-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-matrix-user-verification-service"
|
||||
chart: "matrix-user-verification-service-repo/{{ .Values.charts.matrixUserVerificationService.name }}"
|
||||
version: "{{ .Values.charts.matrixUserVerificationService.version }}"
|
||||
values:
|
||||
- "values-matrix-user-verification-service.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neoboard-widget"
|
||||
chart: "matrix-neoboard-widget-repo/{{ .Values.charts.matrixNeoboardWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeoboardWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neoboard-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neochoice-widget"
|
||||
chart: "matrix-neochoice-widget-repo/{{ .Values.charts.matrixNeochoiseWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeochoiseWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neochoice-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-widget"
|
||||
chart: "matrix-neodatefix-widget-repo/{{ .Values.charts.matrixNeodatefixWidget.name }}"
|
||||
version: "{{ .Values.charts.matrixNeodatefixWidget.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-widget.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-bot-bootstrap"
|
||||
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
|
||||
version: "{{ .Values.charts.synapseCreateAccount.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-bot-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "matrix-neodatefix-bot"
|
||||
chart: "matrix-neodatefix-bot-repo/{{ .Values.charts.matrixNeodatefixBot.name }}"
|
||||
version: "{{ .Values.charts.matrixNeodatefixBot.version }}"
|
||||
values:
|
||||
- "values-matrix-neodatefix-bot.yaml.gotmpl"
|
||||
installed: {{ .Values.element.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "element"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
configuration:
|
||||
endToEndEncryption: true
|
||||
additionalConfiguration:
|
||||
logout_redirect_url: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout?client_id=matrix&post_logout_redirect_uri=https%3A%2F%2F{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||
logout_redirect_url: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout?client_id=matrix&post_logout_redirect_uri=https%3A%2F%2F{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}"
|
||||
|
||||
"net.nordeck.element_web.module.opendesk":
|
||||
config:
|
||||
banner:
|
||||
ics_navigation_json_url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/navigation.json"
|
||||
ics_silent_url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/silent"
|
||||
portal_logo_svg_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/icons/logos/domain.svg"
|
||||
portal_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/"
|
||||
portal_logo_svg_url: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/univention/portal/icons/logos/domain.svg"
|
||||
portal_url: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/"
|
||||
custom_css_variables:
|
||||
--cpd-color-bg-action-primary-rest: {{ .Values.theme.colors.primary | quote }}
|
||||
--cpd-color-text-action-accent: {{ .Values.theme.colors.primary | quote }}
|
||||
|
||||
"net.nordeck.element_web.module.widget_lifecycle":
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
|
||||
configuration:
|
||||
username: "meetings-bot"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
|
||||
configuration:
|
||||
username: "uvs"
|
||||
|
||||
@@ -21,6 +21,7 @@ containerSecurityContext:
|
||||
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
clusterDomain: {{ .Values.cluster.networking.domain | quote }}
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
imagePullSecrets:
|
||||
@@ -33,6 +34,13 @@ image:
|
||||
tag: {{ .Values.images.synapseWeb.tag | quote }}
|
||||
|
||||
ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.element }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}"
|
||||
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.element }}"
|
||||
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}s"
|
||||
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}s"
|
||||
host: "{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}"
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
|
||||
@@ -40,11 +40,33 @@ configuration:
|
||||
regex: "@.*"
|
||||
url: null
|
||||
sender_localpart: intercom-service
|
||||
- as_token: {{ .Values.secrets.oxAppsuite.synapseAsToken | quote }}
|
||||
hs_token: {{ .Values.secrets.oxAppsuite.synapseAsToken | quote }}
|
||||
id: ox-appsuite
|
||||
namespaces:
|
||||
users:
|
||||
- exclusive: false
|
||||
regex: "@.*"
|
||||
url: null
|
||||
sender_localpart: ox-appsuite
|
||||
|
||||
presence:
|
||||
enabled: {{ .Values.functional.dataProtection.matrixPresence.enabled }}
|
||||
|
||||
smtp:
|
||||
senderAddress: "{{ .Values.smtp.localpartNoReply }}@{{ if .Values.functional.email.systemGenerated.useComponentInSenderdomain }}{{ .Values.global.hosts.element }}.{{ end }}{{ .Values.global.domain }}"
|
||||
host: {{ .Values.smtp.host | quote }}
|
||||
port: {{ .Values.smtp.port }}
|
||||
username: {{ .Values.smtp.username | quote }}
|
||||
password: {{ .Values.smtp.password | quote }}
|
||||
|
||||
oidc:
|
||||
clientId: "opendesk-matrix"
|
||||
clientSecret: {{ .Values.secrets.keycloak.clientSecret.matrix | quote }}
|
||||
issuer: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||
scopes:
|
||||
- "openid"
|
||||
- "opendesk-matrix-scope"
|
||||
|
||||
turn:
|
||||
sharedSecret: {{ .Values.turn.credentials | quote }}
|
||||
@@ -83,6 +105,16 @@ containerSecurityContext:
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.synapse | toYaml | nindent 4 }}
|
||||
|
||||
federation:
|
||||
enabled: {{ .Values.functional.externalServices.matrix.federation.enabled }}
|
||||
ingress:
|
||||
host: "{{ .Values.global.hosts.synapseFederation }}.{{ .Values.global.domain }}"
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
hosts:
|
||||
|
||||
27
helmfile/apps/intercom-service/helmfile-child.yaml
Normal file
27
helmfile/apps/intercom-service/helmfile-child.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# Intercom Service
|
||||
# Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service
|
||||
- name: "intercom-service-repo"
|
||||
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
|
||||
verify: {{ .Values.charts.intercomService.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/\
|
||||
{{ .Values.charts.intercomService.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "intercom-service"
|
||||
chart: "intercom-service-repo/{{ .Values.charts.intercomService.name }}"
|
||||
version: "{{ .Values.charts.intercomService.version }}"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.intercom.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "intercom-service"
|
||||
...
|
||||
@@ -1,30 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# Intercom Service
|
||||
# Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service
|
||||
- name: "intercom-service-repo"
|
||||
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
|
||||
verify: {{ .Values.charts.intercomService.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/\
|
||||
{{ .Values.charts.intercomService.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "intercom-service"
|
||||
chart: "intercom-service-repo/{{ .Values.charts.intercomService.name }}"
|
||||
version: "{{ .Values.charts.intercomService.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.intercom.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "intercom-service"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
28
helmfile/apps/jitsi/helmfile-child.yaml
Normal file
28
helmfile/apps/jitsi/helmfile-child.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Jitsi
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-jitsi
|
||||
- name: "jitsi-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.jitsi.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/\
|
||||
{{ .Values.charts.jitsi.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "jitsi"
|
||||
chart: "jitsi-repo/{{ .Values.charts.jitsi.name }}"
|
||||
version: "{{ .Values.charts.jitsi.version }}"
|
||||
values:
|
||||
- "values-jitsi.yaml.gotmpl"
|
||||
installed: {{ .Values.jitsi.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "jitsi"
|
||||
...
|
||||
@@ -1,31 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# openDesk Jitsi
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-jitsi
|
||||
- name: "jitsi-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.jitsi.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/\
|
||||
{{ .Values.charts.jitsi.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "jitsi"
|
||||
chart: "jitsi-repo/{{ .Values.charts.jitsi.name }}"
|
||||
version: "{{ .Values.charts.jitsi.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-jitsi.yaml.gotmpl"
|
||||
installed: {{ .Values.jitsi.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "jitsi"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -27,7 +27,7 @@ containerSecurityContext:
|
||||
{{ .Values.seLinuxOptions.jitsiKeycloakAdapter | toYaml | nindent 4 }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
|
||||
image:
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
31
helmfile/apps/migrations-post/helmfile-child.yaml
Normal file
31
helmfile/apps/migrations-post/helmfile-child.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Migrations
|
||||
# Source:
|
||||
- name: "openproject-migrations-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.migrations.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/\
|
||||
{{ .Values.charts.migrations.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-migrations-post"
|
||||
chart: "openproject-migrations-repo/{{ .Values.charts.migrations.name }}"
|
||||
version: "{{ .Values.charts.migrations.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
- "../../shared/migrations.yaml.gotmpl"
|
||||
installed: {{ .Values.migrations.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-0"
|
||||
component: "opendesk-migrations"
|
||||
...
|
||||
11
helmfile/apps/migrations-post/helmfile.yaml
Normal file
11
helmfile/apps/migrations-post/helmfile.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
8
helmfile/apps/migrations-post/values.yaml.gotmpl
Normal file
8
helmfile/apps/migrations-post/values.yaml.gotmpl
Normal file
@@ -0,0 +1,8 @@
|
||||
{{/*
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
migrations:
|
||||
stage: "POST"
|
||||
...
|
||||
31
helmfile/apps/migrations-pre/helmfile-child.yaml
Normal file
31
helmfile/apps/migrations-pre/helmfile-child.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Migrations
|
||||
# Source:
|
||||
- name: "openproject-migrations-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.migrations.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/\
|
||||
{{ .Values.charts.migrations.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-migrations-pre"
|
||||
chart: "openproject-migrations-repo/{{ .Values.charts.migrations.name }}"
|
||||
version: "{{ .Values.charts.migrations.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
- "../../shared/migrations.yaml.gotmpl"
|
||||
installed: {{ .Values.migrations.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-0"
|
||||
component: "opendesk-migrations"
|
||||
...
|
||||
11
helmfile/apps/migrations-pre/helmfile.yaml
Normal file
11
helmfile/apps/migrations-pre/helmfile.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
8
helmfile/apps/migrations-pre/values.yaml.gotmpl
Normal file
8
helmfile/apps/migrations-pre/values.yaml.gotmpl
Normal file
@@ -0,0 +1,8 @@
|
||||
{{/*
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
migrations:
|
||||
stage: "PRE"
|
||||
...
|
||||
46
helmfile/apps/nextcloud/helmfile-child.yaml
Normal file
46
helmfile/apps/nextcloud/helmfile-child.yaml
Normal file
@@ -0,0 +1,46 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# Nextcloud
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
|
||||
- name: "nextcloud-management-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.nextcloudManagement.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/\
|
||||
{{ .Values.charts.nextcloudManagement.repository }}"
|
||||
- name: "nextcloud-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.nextcloud.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/\
|
||||
{{ .Values.charts.nextcloud.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-nextcloud-management"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
|
||||
version: "{{ .Values.charts.nextcloudManagement.version }}"
|
||||
values:
|
||||
- "values-nextcloud-mgmt.yaml.gotmpl"
|
||||
waitForJobs: true
|
||||
wait: true
|
||||
installed: {{ .Values.nextcloud.enabled }}
|
||||
timeout: 900
|
||||
- name: "opendesk-nextcloud"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
|
||||
version: "{{ .Values.charts.nextcloud.version }}"
|
||||
values:
|
||||
- "values-nextcloud.yaml.gotmpl"
|
||||
needs:
|
||||
- "opendesk-nextcloud-management"
|
||||
installed: {{ .Values.nextcloud.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "nextcloud"
|
||||
...
|
||||
@@ -1,49 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# Nextcloud
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
|
||||
- name: "nextcloud-management-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.nextcloudManagement.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/\
|
||||
{{ .Values.charts.nextcloudManagement.repository }}"
|
||||
- name: "nextcloud-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.nextcloud.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/\
|
||||
{{ .Values.charts.nextcloud.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-nextcloud-management"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
|
||||
version: "{{ .Values.charts.nextcloudManagement.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-nextcloud-mgmt.yaml.gotmpl"
|
||||
waitForJobs: true
|
||||
wait: true
|
||||
installed: {{ .Values.nextcloud.enabled }}
|
||||
timeout: 900
|
||||
- name: "opendesk-nextcloud"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
|
||||
version: "{{ .Values.charts.nextcloud.version }}"
|
||||
values:
|
||||
- "values-nextcloud.yaml.gotmpl"
|
||||
needs:
|
||||
- "opendesk-nextcloud-management"
|
||||
installed: {{ .Values.nextcloud.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "nextcloud"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -14,7 +14,7 @@ additionalAnnotations:
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-php"
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
|
||||
configuration:
|
||||
administrator:
|
||||
@@ -35,6 +35,9 @@ configuration:
|
||||
value: {{ .Values.cache.nextcloud.password | default .Values.secrets.redis.password | quote }}
|
||||
host: {{ .Values.cache.nextcloud.host | quote }}
|
||||
port: {{ .Values.cache.nextcloud.port | quote }}
|
||||
collabora:
|
||||
# internalWopiUrl: ""
|
||||
wopiAllowlist: {{ join ", " ( concat .Values.cluster.networking.cidr .Values.cluster.networking.incomingCIDR ) | quote }}
|
||||
database:
|
||||
host: {{ .Values.databases.nextcloud.host | quote }}
|
||||
port: {{ .Values.databases.nextcloud.port | quote }}
|
||||
@@ -45,7 +48,7 @@ configuration:
|
||||
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.mariadb.nextcloudUser | quote }}
|
||||
ldap:
|
||||
host: {{ .Values.ldap.host | quote }}
|
||||
password: {{ .Values.secrets.univentionManagementStack.ldapSearch.nextcloud | quote }}
|
||||
password: {{ .Values.secrets.nubus.ldapSearch.nextcloud | quote }}
|
||||
adminGroupName: "managed-by-attribute-FileshareAdmin"
|
||||
objectstore:
|
||||
auth:
|
||||
@@ -78,6 +81,14 @@ configuration:
|
||||
value: {{ .Values.smtp.password | quote }}
|
||||
host: {{ .Values.smtp.host | quote }}
|
||||
port: {{ .Values.smtp.port | quote }}
|
||||
fromAddress: {{ .Values.smtp.localpartNoReply | quote }}
|
||||
mailDomain: "{{ if .Values.functional.email.systemGenerated.useComponentInSenderdomain }}{{ .Values.global.hosts.nextcloud }}.{{ end }}{{ .Values.global.domain }}"
|
||||
quota:
|
||||
default: "{{ .Values.functional.filestore.quota.default }} GB"
|
||||
retentionObligation:
|
||||
trashbin: {{ .Values.functional.filestore.nextcloud.retentionObligation.trashbin | quote }}
|
||||
versions: {{ .Values.functional.filestore.nextcloud.retentionObligation.versions | quote }}
|
||||
|
||||
serverinfo:
|
||||
token: {{ .Values.secrets.nextcloud.metricsToken | quote }}
|
||||
|
||||
@@ -98,11 +109,11 @@ containerSecurityContext:
|
||||
{{ .Values.seLinuxOptions.nextcloudManagement | toYaml | nindent 4 }}
|
||||
|
||||
debug:
|
||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
|
||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"2"{{ end }}
|
||||
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudManagement.registry | quote }}
|
||||
repository: "{{ .Values.images.nextcloudManagement.repository }}"
|
||||
repository: {{ .Values.images.nextcloudManagement.repository | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.nextcloudManagement.tag | quote }}
|
||||
|
||||
|
||||
@@ -34,13 +34,13 @@ exporter:
|
||||
tag: {{ .Values.images.nextcloudExporter.tag | quote }}
|
||||
prometheus:
|
||||
serviceMonitor:
|
||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
labels:
|
||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
||||
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
||||
prometheusRule:
|
||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
|
||||
additionalLabels:
|
||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
||||
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
||||
replicaCount: {{ .Values.replicas.nextcloudExporter }}
|
||||
resources:
|
||||
{{ .Values.resources.nextcloudExporter | toYaml | nindent 4 }}
|
||||
@@ -66,6 +66,7 @@ php:
|
||||
value: "nextcloud_user"
|
||||
password:
|
||||
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.mariadb.nextcloudUser | quote }}
|
||||
trustedProxies: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -84,7 +85,7 @@ php:
|
||||
cron:
|
||||
successfulJobsHistoryLimit: {{ if .Values.debug.enabled }}"3"{{ else }}"0"{{ end }}
|
||||
debug:
|
||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
|
||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"2"{{ end }}
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudPHP.registry | quote }}
|
||||
repository: "{{ .Values.images.nextcloudPHP.repository }}"
|
||||
@@ -92,13 +93,13 @@ php:
|
||||
tag: {{ .Values.images.nextcloudPHP.tag | quote }}
|
||||
prometheus:
|
||||
serviceMonitor:
|
||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
labels:
|
||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
||||
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
||||
prometheusRule:
|
||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
|
||||
additionalLabels:
|
||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
||||
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
||||
replicaCount: {{ .Values.replicas.nextcloudPHP }}
|
||||
resources:
|
||||
{{ .Values.resources.nextcloudPHP | toYaml | nindent 4 }}
|
||||
@@ -107,6 +108,7 @@ apache2:
|
||||
configuration:
|
||||
php:
|
||||
host: "opendesk-nextcloud-php.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}"
|
||||
trustedProxies: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -124,6 +126,13 @@ apache2:
|
||||
{{ .Values.seLinuxOptions.nextcloudApache2 | toYaml | nindent 6 }}
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.nextcloud }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}"
|
||||
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.nextcloud }}"
|
||||
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}s"
|
||||
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}s"
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
@@ -136,4 +145,5 @@ apache2:
|
||||
replicaCount: {{ .Values.replicas.nextcloudApache2 }}
|
||||
resources:
|
||||
{{ .Values.resources.nextcloudApache2 | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# Univention Management Stack Umbrella Chart
|
||||
- name: "ums"
|
||||
- name: "nubus"
|
||||
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||
verify: {{ .Values.charts.ums.verify }}
|
||||
verify: {{ .Values.charts.nubus.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url:
|
||||
"{{ .Values.global.helmRegistry | default .Values.charts.ums.registry }}/\
|
||||
{{ .Values.charts.ums.repository }}"
|
||||
"{{ .Values.global.helmRegistry | default .Values.charts.nubus.registry }}/\
|
||||
{{ .Values.charts.nubus.repository }}"
|
||||
# OpenDesk Keycloak Bootstrap Chart
|
||||
- name: "opendesk-keycloak-bootstrap-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
@@ -28,11 +25,13 @@ repositories:
|
||||
releases:
|
||||
# Univention Management Stack Umbrella Chart
|
||||
- name: "ums"
|
||||
chart: "ums/{{ .Values.charts.ums.name }}"
|
||||
version: "{{ .Values.charts.ums.version }}"
|
||||
chart: "nubus/{{ .Values.charts.nubus.name }}"
|
||||
version: "{{ .Values.charts.nubus.version }}"
|
||||
values:
|
||||
- "values-umbrella.yaml.gotmpl"
|
||||
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||
- "values-nubus.yaml.gotmpl"
|
||||
- "values-opendesk-customization.yaml.gotmpl"
|
||||
- "values-opendesk-images.yaml.gotmpl"
|
||||
installed: {{ .Values.nubus.enabled }}
|
||||
timeout: 900
|
||||
# OpenDesk Keycloak Bootstrap Chart
|
||||
- name: "opendesk-keycloak-bootstrap"
|
||||
@@ -42,10 +41,10 @@ releases:
|
||||
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
|
||||
needs:
|
||||
- "ums"
|
||||
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||
installed: {{ .Values.nubus.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "univention-management-stack"
|
||||
component: "nubus"
|
||||
...
|
||||
12
helmfile/apps/nubus/helmfile.yaml
Normal file
12
helmfile/apps/nubus/helmfile.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
323
helmfile/apps/nubus/values-nubus.yaml.gotmpl
Normal file
323
helmfile/apps/nubus/values-nubus.yaml.gotmpl
Normal file
@@ -0,0 +1,323 @@
|
||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
global:
|
||||
nubusDeployment: true
|
||||
ldap:
|
||||
baseDn: {{ .Values.ldap.baseDn | quote }}
|
||||
domainName: {{ .Values.global.domain | quote }}
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
ingressClass: {{ .Values.ingress.ingressClassName | default "nginx" | quote }}
|
||||
certManagerIssuer: "letsencrypt-prod-dns"
|
||||
nubusMasterPassword: {{ env "MASTER_PASSWORD" | default "sovereign-workplace" | quote }}
|
||||
keycloak:
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
objectStorage:
|
||||
bucket: {{ .Values.objectstores.nubus.bucket | quote }}
|
||||
connection:
|
||||
host: "minio"
|
||||
port: "9000"
|
||||
protocol: "http"
|
||||
credentialOverride:
|
||||
ldapServer:
|
||||
adminPassword: {{ .Values.secrets.nubus.ldapSecret | quote}}
|
||||
defaultUsers:
|
||||
defaultAdminPassword: {{ .Values.secrets.nubus.defaultAccounts.adminPassword | quote}}
|
||||
defaultUserPassword: {{ .Values.secrets.nubus.defaultAccounts.userPassword | quote}}
|
||||
|
||||
# -- Extensions to load. Add entries to load additional extensions into Nubus.
|
||||
extensions:
|
||||
- name: "ox"
|
||||
image:
|
||||
registry: {{ .Values.images.nubusOxExtension.registry }}
|
||||
repository: {{ .Values.images.nubusOxExtension.repository }}
|
||||
tag: {{ .Values.images.nubusOxExtension.tag }}
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
- name: "opendesk"
|
||||
image:
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus"
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
tag: "1.1.0"
|
||||
|
||||
# -- Allows to configure the system extensions to load. This is intended for
|
||||
# internal usage, prefer to use `global.extensions` for user configured
|
||||
# extensions.
|
||||
systemExtensions:
|
||||
- name: "portal"
|
||||
image:
|
||||
registry: {{ .Values.images.nubusPortalExtension.registry }}
|
||||
repository: {{ .Values.images.nubusPortalExtension.repository }}
|
||||
tag: {{ .Values.images.nubusPortalExtension.tag }}
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
|
||||
# Nubus bundled services
|
||||
postgresql:
|
||||
enabled: false
|
||||
provisioning:
|
||||
enabled: false
|
||||
|
||||
minio:
|
||||
enabled: false
|
||||
|
||||
# Nubus services which use customer supplied services
|
||||
keycloak:
|
||||
keycloak:
|
||||
auth:
|
||||
username: "kcadmin"
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
key: "admin_password"
|
||||
postgresql:
|
||||
connection:
|
||||
host: {{ .Values.databases.keycloak.host | quote }}
|
||||
port: {{ .Values.databases.keycloak.port | quote }}
|
||||
auth:
|
||||
username: {{ .Values.databases.keycloak.username | quote }}
|
||||
database: {{ .Values.databases.keycloak.name | quote }}
|
||||
credentialSecret:
|
||||
name: "ums-keycloak-postgresql-opendesk-credentials"
|
||||
key: "keycloakDatabasePassword"
|
||||
config:
|
||||
exposeAdminConsole: {{ .Values.debug.enabled }}
|
||||
|
||||
nubusGuardian:
|
||||
provisioning:
|
||||
enabled: true
|
||||
config:
|
||||
keycloak:
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
key: "admin_password"
|
||||
managementApi:
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-guardian-client-secret"
|
||||
key: "managementApiClientSecret"
|
||||
|
||||
postgresql:
|
||||
connection:
|
||||
host: {{ .Values.databases.umsGuardianManagementApi.host | quote }}
|
||||
port: {{ .Values.databases.umsGuardianManagementApi.port | quote }}
|
||||
auth:
|
||||
username: {{ .Values.databases.umsGuardianManagementApi.username | quote }}
|
||||
database: {{ .Values.databases.umsGuardianManagementApi.name | quote }}
|
||||
credentialSecret:
|
||||
name: "ums-guardian-postgresql-opendesk-credentials"
|
||||
key: "guardianDatabasePassword"
|
||||
|
||||
nubusNotificationsApi:
|
||||
postgresql:
|
||||
connection:
|
||||
host: {{ .Values.databases.umsNotificationsApi.host | quote }}
|
||||
port: {{ .Values.databases.umsNotificationsApi.port | quote }}
|
||||
auth:
|
||||
username: {{ .Values.databases.umsNotificationsApi.username | quote }}
|
||||
database: {{ .Values.databases.umsNotificationsApi.name | quote }}
|
||||
existingSecret: "ums-notifications-api-postgresql-opendesk-credentials"
|
||||
|
||||
|
||||
nubusKeycloakExtensions:
|
||||
keycloak:
|
||||
auth:
|
||||
username: "kcadmin"
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
key: "admin_password"
|
||||
proxy:
|
||||
ingress:
|
||||
paths:
|
||||
{{- if .Values.debug.enabled }}
|
||||
- pathType: "Prefix"
|
||||
path: "/admin/"
|
||||
{{- end }}
|
||||
- pathType: "Prefix"
|
||||
path: "/realms/"
|
||||
- pathType: "Prefix"
|
||||
path: "/js/"
|
||||
- pathType: "Prefix"
|
||||
path: "/resources/"
|
||||
- pathType: "Prefix"
|
||||
path: "/fingerprintjs"
|
||||
|
||||
|
||||
postgresql:
|
||||
connection:
|
||||
host: {{ .Values.databases.keycloakExtension.host | quote }}
|
||||
port: {{ .Values.databases.keycloakExtension.port | quote }}
|
||||
auth:
|
||||
database: {{ .Values.databases.keycloakExtension.name | quote }}
|
||||
username: {{ .Values.databases.keycloakExtension.username | quote }}
|
||||
credentialSecret:
|
||||
name: "ums-keycloak-extensions-postgresql-opendesk-credentials"
|
||||
key: "umcKeycloakExtensionsDatabasePassword"
|
||||
smtp:
|
||||
connection:
|
||||
host: {{ .Values.smtp.host | quote }}
|
||||
port: {{ .Values.smtp.port | quote }}
|
||||
auth:
|
||||
username: {{ .Values.smtp.username | quote }}
|
||||
credentialSecret:
|
||||
name: "ums-keycloak-extensions-smtp-opendesk-credentials"
|
||||
key: "umcKeycloakExtensionsSmtpPassword"
|
||||
handler:
|
||||
appConfig:
|
||||
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"WARN"{{ end }}
|
||||
newDeviceLoginSubject: "New device login on your {{ .Values.theme.texts.productName }} account"
|
||||
mailFrom: "{{ .Values.smtp.localpartNoReply }}@{{ if .Values.functional.email.systemGenerated.useComponentInSenderdomain }}{{ .Values.global.hosts.keycloak }}.{{ end }}{{ .Values.global.domain }}"
|
||||
|
||||
nubusPortalListener:
|
||||
portalListener:
|
||||
objectStorageEndpoint: {{ .Values.objectstores.nubus.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
objectStorageBucket: {{ .Values.objectstores.nubus.bucket | quote }}
|
||||
objectStorageCredentialSecret:
|
||||
name: "ums-portal-listener-minio-opendesk-credentials"
|
||||
accessKeyKey: "access-key-id"
|
||||
secretKeyKey: "secret-key-id"
|
||||
|
||||
nubusPortalServer:
|
||||
portalServer:
|
||||
objectStorageEndpoint: {{ .Values.objectstores.nubus.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
objectStorageBucket: {{ .Values.objectstores.nubus.bucket | quote }}
|
||||
objectStorageCredentialSecret:
|
||||
name: "ums-portal-server-minio-opendesk-credentials"
|
||||
accessKeyKey: "access-key-id"
|
||||
secretKeyKey: "secret-key-id"
|
||||
centralNavigation:
|
||||
enabled: true
|
||||
authenticatorSecretName: "ums-opendesk-portal-server-central-navigation"
|
||||
|
||||
# NOTE: disabled until the next update.
|
||||
nubusProvisioning:
|
||||
enabled: false
|
||||
nubusUdmListener:
|
||||
enabled: false
|
||||
nubusSelfServiceListener:
|
||||
enabled: true
|
||||
selfserviceListener:
|
||||
umcAdminUser: "default.admin"
|
||||
|
||||
# Nubus services
|
||||
nubusStackDataUms:
|
||||
stackDataContext:
|
||||
umcPostgresqlHostname: {{ .Values.databases.umsSelfservice.host | quote }}
|
||||
umcPostgresqlUsername: {{ .Values.databases.umsSelfservice.username | quote }}
|
||||
umcMemcachedHostname: {{ .Values.cache.umsSelfservice.host | quote }}
|
||||
umcMemcachedUsername: ""
|
||||
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
||||
umcHtmlTitle: "openDesk Portal"
|
||||
installUmcPolicies: true
|
||||
nubusUmcServer:
|
||||
memcached:
|
||||
auth:
|
||||
username: ""
|
||||
|
||||
# TODO: Remove values when upstreaming fixes
|
||||
nubusStackDataSwp:
|
||||
stackDataContext:
|
||||
ldapSearchUsers:
|
||||
{{- range $username, $password := .Values.secrets.nubus.ldapSearch }}
|
||||
- username: {{ printf "ldapsearch_%s" $username | quote }}
|
||||
password: {{ $password | quote }}
|
||||
lastname: "LDAP-Search-User"
|
||||
{{- end }}
|
||||
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
||||
smtpHost: {{ .Values.smtp.host | quote }}
|
||||
smtpPort: {{ .Values.smtp.port | quote }}
|
||||
smtpUser: {{ .Values.smtp.username | quote }}
|
||||
ldapBase: {{ .Values.ldap.baseDn }}
|
||||
# FIXME: Should be templated correctly in the future
|
||||
portalRealtimeCollaborationLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.element .Values.global.domain }}
|
||||
portalRealtimeVideoconferenceLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.jitsi .Values.global.domain }}
|
||||
portalManagementProjectLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openproject .Values.global.domain }}
|
||||
portalManagementKnowledgeLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.xwiki .Values.global.domain }}
|
||||
portalGroupwareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openxchange .Values.global.domain }}
|
||||
portalFileshareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.nextcloud .Values.global.domain }}
|
||||
portalTitleDE: "openDesk Portal"
|
||||
portalTitleEN: "openDesk Portal"
|
||||
oxDefaultContext: "1"
|
||||
|
||||
nubusUmcServer:
|
||||
postgresql:
|
||||
bundled: false
|
||||
connection:
|
||||
host: {{ .Values.databases.umsSelfservice.host | quote }}
|
||||
port: {{ .Values.databases.umsSelfservice.port | quote }}
|
||||
auth:
|
||||
username: {{ .Values.databases.umsSelfservice.username | quote }}
|
||||
database: {{ .Values.databases.umsSelfservice.name | quote }}
|
||||
credentialSecret:
|
||||
name: "ums-umc-server-postgresql-opendesk-credentials"
|
||||
key: "umcServerDatabasePassword"
|
||||
memcached:
|
||||
bundled: false
|
||||
server: {{ .Values.cache.umsSelfservice.host | quote }}
|
||||
auth:
|
||||
credentialSecret:
|
||||
name: "ums-umc-server-memcached-opendesk-credentials"
|
||||
key: "umcServerMemcachedPassword"
|
||||
smtp:
|
||||
credentialSecret:
|
||||
name: "ums-umc-server-smtp-credentials-custom"
|
||||
|
||||
nubusUmcGateway:
|
||||
umcGateway:
|
||||
umcHtmlTitle: "openDesk Portal"
|
||||
|
||||
nubusKeycloakBootstrap:
|
||||
keycloak:
|
||||
auth:
|
||||
username: "kcadmin"
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
key: "admin_password"
|
||||
bootstrap:
|
||||
ldapMappers:
|
||||
- ldapAndUserModelAttributeName: "opendeskProjectmanagementAdmin"
|
||||
- ldapAndUserModelAttributeName: "oxContextIDNum"
|
||||
twoFactorAuthentication:
|
||||
enabled: true
|
||||
group: "2fa-users"
|
||||
|
||||
# Credential secrets for accessing customer supplied services
|
||||
extraSecrets:
|
||||
- name: "ums-opendesk-portal-server-central-navigation"
|
||||
stringData:
|
||||
authenticator.secret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||
- name: "ums-opendesk-guardian-client-secret"
|
||||
stringData:
|
||||
managementApiClientSecret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
|
||||
- name: "ums-opendesk-keycloak-credentials"
|
||||
stringData:
|
||||
admin_password: {{ .Values.secrets.keycloak.adminPassword | quote }}
|
||||
- name: "ums-keycloak-postgresql-opendesk-credentials"
|
||||
stringData:
|
||||
keycloakDatabasePassword: {{ .Values.databases.keycloak.password | default .Values.secrets.postgresql.keycloakUser | quote }}
|
||||
- name: "ums-guardian-postgresql-opendesk-credentials"
|
||||
stringData:
|
||||
guardianDatabasePassword: {{ .Values.databases.umsGuardianManagementApi.password | default .Values.secrets.postgresql.umsGuardianManagementApiUser | quote }}
|
||||
- name: "ums-notifications-api-postgresql-opendesk-credentials"
|
||||
stringData:
|
||||
password: {{ .Values.databases.umsNotificationsApi.password | default .Values.secrets.postgresql.umsNotificationsApiUser | quote }}
|
||||
- name: "ums-umc-server-postgresql-opendesk-credentials"
|
||||
stringData:
|
||||
umcServerDatabasePassword: {{ .Values.databases.umsSelfservice.password | default .Values.secrets.postgresql.umsSelfserviceUser | quote }}
|
||||
- name: "ums-umc-server-memcached-opendesk-credentials"
|
||||
stringData:
|
||||
umcServerMemcachedPassword: ""
|
||||
- name: "ums-keycloak-extensions-postgresql-opendesk-credentials"
|
||||
stringData:
|
||||
umcKeycloakExtensionsDatabasePassword: {{ .Values.databases.keycloakExtension.password | default .Values.secrets.postgresql.keycloakExtensionUser | quote }}
|
||||
- name: "ums-keycloak-extensions-smtp-opendesk-credentials"
|
||||
stringData:
|
||||
umcKeycloakExtensionsSmtpPassword: {{ .Values.smtp.password | quote }}
|
||||
- name: "ums-portal-server-minio-opendesk-credentials"
|
||||
stringData:
|
||||
access-key-id: {{ .Values.objectstores.nubus.username | quote }}
|
||||
secret-key-id: {{ .Values.objectstores.nubus.secretKey | default .Values.secrets.minio.umsUser | quote }}
|
||||
- name: "ums-portal-listener-minio-opendesk-credentials"
|
||||
stringData:
|
||||
access-key-id: {{ .Values.objectstores.nubus.username | quote }}
|
||||
secret-key-id: {{ .Values.objectstores.nubus.secretKey | default .Values.secrets.minio.umsUser | quote }}
|
||||
- name: "ums-umc-server-smtp-credentials-custom"
|
||||
stringData:
|
||||
password: {{ .Values.smtp.password | quote }}
|
||||
229
helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl
Normal file
229
helmfile/apps/nubus/values-opendesk-customization.yaml.gotmpl
Normal file
@@ -0,0 +1,229 @@
|
||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
keycloak:
|
||||
enabled: true
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak"
|
||||
replicaCount: {{ .Values.replicas.keycloak }}
|
||||
resources:
|
||||
{{ .Values.resources.umsKeycloak | toYaml | nindent 4 }}
|
||||
|
||||
guardian:
|
||||
authorizationApi:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-authorization-api"
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianAuthorizationApi | toYaml | nindent 6 }}
|
||||
managementApi:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-management-api"
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianManagementApi | toYaml | nindent 6 }}
|
||||
managementUi:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-management-ui"
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianManagementUi | toYaml | nindent 6 }}#
|
||||
openPolicyAgent:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-ums-open-policy-agent"
|
||||
resources:
|
||||
{{ .Values.resources.umsOpenPolicyAgent | toYaml | nindent 6 }}
|
||||
provisioning:
|
||||
# Using openDesk keycloak provisioning
|
||||
enabled: false
|
||||
|
||||
nubusNotificationsApi:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-notifications-api"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
replicaCount: {{ .Values.replicas.umsNotificationsApi }}
|
||||
resources:
|
||||
{{ .Values.resources.umsNotificationsApi | toYaml | nindent 4 }}
|
||||
|
||||
nubusUmcServer:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-umc-server"
|
||||
replicaCount: {{ .Values.replicas.umsUmcServer }}
|
||||
resources:
|
||||
{{ .Values.resources.umsUmcServer | toYaml | nindent 4 }}
|
||||
selfService:
|
||||
passwordresetEmailBody: |
|
||||
Sehr geehrte Benutzerin, sehr geehrter Benutzer,
|
||||
|
||||
Ihr Benutzername für {domainname} lautet: {username}
|
||||
|
||||
Sie erhalten diese Nachricht, da Sie Ihr Passwort zurücksetzen möchten oder weil Ihr Benutzer neu im System angelegt wurde.
|
||||
|
||||
Klicken Sie bitte auf den folgenden Link, um Ihr Passwort zu setzen:
|
||||
https://{fqdn}/univention/portal/#/selfservice/newpassword/?token={token}&username={username}
|
||||
|
||||
Der genannte Link ist nur 48 Stunden gültig, danach fordern Sie ihn bitte erneut an unter:
|
||||
https://{fqdn}/univention/portal/#/selfservice/passwordforgotten
|
||||
|
||||
Mit freundlichen Grüßen
|
||||
Ihr {domainname} Passwort-Service
|
||||
|
||||
nubusKeycloakExtensions:
|
||||
handler:
|
||||
replicaCount: {{ .Values.replicas.umsKeycloakExtensionsHandler }}
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-extensions-handler"
|
||||
resources:
|
||||
{{ .Values.resources.umsKeycloakExtensionHandler | toYaml | nindent 6 }}
|
||||
proxy:
|
||||
replicaCount: {{ .Values.replicas.umsKeycloakExtensionsProxy }}
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-extensions-proxy"
|
||||
resources:
|
||||
{{ .Values.resources.umsKeycloakExtensionProxy | toYaml | nindent 6 }}
|
||||
|
||||
nubusPortalListener:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-portal-listener"
|
||||
replicaCount: {{ .Values.replicas.umsPortalListener }}
|
||||
resources:
|
||||
{{ .Values.resources.umsPortalListener | toYaml | nindent 4 }}
|
||||
persistence:
|
||||
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||
size: {{ .Values.persistence.size.nubus.portalListener | quote }}
|
||||
|
||||
nubusPortalServer:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-portal-server"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
replicaCount: {{ .Values.replicas.umsPortalServer }}
|
||||
resources:
|
||||
{{ .Values.resources.umsPortalServer | toYaml | nindent 4 }}
|
||||
|
||||
nubusLdapNotifier:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-ldap-notifier"
|
||||
replicaCount: {{ .Values.replicas.umsLdapNotifier }}
|
||||
resources:
|
||||
{{ .Values.resources.umsLdapNotifier | toYaml | nindent 4 }}
|
||||
|
||||
nubusLdapServer:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-ldap-server"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
initResources: {{ .Values.resources.umsLdapServer | toYaml | nindent 4 }}
|
||||
resources: {{ .Values.resources.umsLdapServer | toYaml | nindent 4 }}
|
||||
persistence:
|
||||
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||
size: {{ .Values.persistence.size.nubus.ldapServerData | quote }}
|
||||
|
||||
nubusPortalFrontend:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-portal-frontend"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
replicaCount: {{ .Values.replicas.umsPortalFrontend }}
|
||||
resources:
|
||||
{{ .Values.resources.umsPortalFrontend | toYaml | nindent 4 }}
|
||||
portalFrontend:
|
||||
branding:
|
||||
css: {{ .Values.theme.imagery.portalCss | toJson }}
|
||||
favicon: {{ .Values.theme.imagery.faviconIcoB64 | toJson }}
|
||||
logo: {{ .Values.theme.imagery.logoHeaderSvgB64 | toJson }}
|
||||
backgroundImage: {{ .Values.theme.imagery.logoPortalBackgroundSvgB64 | toJson }}
|
||||
|
||||
nubusStackDataUms:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-stack-data-ums"
|
||||
resources:
|
||||
{{ .Values.resources.umsStackDataUms | toYaml | nindent 4 }}
|
||||
|
||||
nubusStackDataSwp:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-stack-data-swp"
|
||||
resources:
|
||||
{{ .Values.resources.umsStackDataSwp | toYaml | nindent 4 }}
|
||||
|
||||
nubusSelfServiceListener:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-selfservice-listener"
|
||||
resources:
|
||||
{{ .Values.resources.umsSelfserviceListener | toYaml | nindent 4 }}
|
||||
replicaCount: {{ .Values.replicas.umsSelfserviceListener }}
|
||||
|
||||
nubusUdmRestApi:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-udm-rest-api"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
resources:
|
||||
{{ .Values.resources.umsUdmRestApi | toYaml | nindent 4 }}
|
||||
initResources:
|
||||
{{ .Values.resources.umsUdmRestApiInit | toYaml | nindent 4 }}
|
||||
replicaCount: {{ .Values.replicas.umsUdmRestApi }}
|
||||
|
||||
nubusUmcGateway:
|
||||
replicaCount: {{ .Values.replicas.umsUmcGateway }}
|
||||
resources:
|
||||
{{ .Values.resources.umsUmcGateway | toYaml | nindent 4 }}
|
||||
extraVolumes:
|
||||
- name: "entrypoint-swp-patches"
|
||||
configMap:
|
||||
name: "ums-stack-data-swp-umc-gateway-entrypoint"
|
||||
defaultMode: 0555
|
||||
extraVolumeMounts:
|
||||
- name: "entrypoint-swp-patches"
|
||||
mountPath: "/entrypoint.d/90-swp.sh"
|
||||
subPath: "90-swp.sh"
|
||||
|
||||
nubusKeycloakBootstrap:
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
resources:
|
||||
{{ .Values.resources.umsKeycloakBootstrap | toYaml | nindent 4 }}
|
||||
|
||||
nubusProvisioning:
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
nats:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.nats | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-nats"
|
||||
serviceAccount:
|
||||
annotations:
|
||||
intended.usage: "compliance"
|
||||
api:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.api | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-api"
|
||||
dispatcher:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.dispatcher | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-dispatcher"
|
||||
prefill:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.prefill | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-prefill"
|
||||
registerConsumers:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.registerConsumers | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-register-consumers"
|
||||
udmTransformer:
|
||||
resources:
|
||||
{{ .Values.resources.nubusProvisioning.udmTransformer | toYaml | nindent 6 }}
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "ums-provisioning-udm-transformer"
|
||||
241
helmfile/apps/nubus/values-opendesk-images.yaml.gotmpl
Normal file
241
helmfile/apps/nubus/values-opendesk-images.yaml.gotmpl
Normal file
@@ -0,0 +1,241 @@
|
||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
keycloak:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusKeycloak.registry }}
|
||||
repository: {{ .Values.images.nubusKeycloak.repository }}
|
||||
tag: {{ .Values.images.nubusKeycloak.tag }}
|
||||
|
||||
nubusKeycloakBootstrap:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusKeycloakBootstrap.registry }}
|
||||
repository: {{ .Values.images.nubusKeycloakBootstrap.repository }}
|
||||
tag: {{ .Values.images.nubusKeycloakBootstrap.tag }}
|
||||
|
||||
nubusKeycloakExtensions:
|
||||
handler:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusKeycloakExtensionHandler.registry }}
|
||||
repository: {{ .Values.images.nubusKeycloakExtensionHandler.repository }}
|
||||
tag: {{ .Values.images.nubusKeycloakExtensionHandler.tag }}
|
||||
|
||||
proxy:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusKeycloakExtensionProxy.registry }}
|
||||
repository: {{ .Values.images.nubusKeycloakExtensionProxy.repository }}
|
||||
tag: {{ .Values.images.nubusKeycloakExtensionProxy.tag }}
|
||||
|
||||
nubusLdapNotifier:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusLdapNotifier.registry }}
|
||||
repository: {{ .Values.images.nubusLdapNotifier.repository }}
|
||||
tag: {{ .Values.images.nubusLdapNotifier.tag }}
|
||||
|
||||
nubusLdapServer:
|
||||
ldapServer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusLdapServer.registry }}
|
||||
repository: {{ .Values.images.nubusLdapServer.repository }}
|
||||
tag: {{ .Values.images.nubusLdapServer.tag }}
|
||||
dhInitcontainer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusLdapServerDhInitContainer.registry }}
|
||||
repository: {{ .Values.images.nubusLdapServerDhInitContainer.repository }}
|
||||
tag: {{ .Values.images.nubusLdapServerDhInitContainer.tag }}
|
||||
waitForDependency:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusWaitForDependency.registry }}
|
||||
repository: {{ .Values.images.nubusWaitForDependency.repository }}
|
||||
tag: {{ .Values.images.nubusWaitForDependency.tag }}
|
||||
|
||||
|
||||
nubusPortalConsumer:
|
||||
portalConsumer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusPortalConsumer.registry }}
|
||||
repository: {{ .Values.images.nubusPortalConsumer.repository }}
|
||||
tag: {{ .Values.images.nubusPortalConsumer.tag }}
|
||||
|
||||
|
||||
nubusNotificationsApi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusNotificationsApi.registry }}
|
||||
repository: {{ .Values.images.nubusNotificationsApi.repository }}
|
||||
tag: {{ .Values.images.nubusNotificationsApi.tag }}
|
||||
|
||||
nubusPortalFrontend:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusPortalFrontend.registry }}
|
||||
repository: {{ .Values.images.nubusPortalFrontend.repository }}
|
||||
tag: {{ .Values.images.nubusPortalFrontend.tag }}
|
||||
|
||||
nubusPortalListener:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusPortalListener.registry }}
|
||||
repository: {{ .Values.images.nubusPortalListener.repository }}
|
||||
tag: {{ .Values.images.nubusPortalListener.tag }}
|
||||
waitForDependency:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusWaitForDependency.registry }}
|
||||
repository: {{ .Values.images.nubusWaitForDependency.repository }}
|
||||
tag: {{ .Values.images.nubusWaitForDependency.tag }}
|
||||
|
||||
nubusPortalServer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusPortalServer.registry }}
|
||||
repository: {{ .Values.images.nubusPortalServer.repository }}
|
||||
tag: {{ .Values.images.nubusPortalServer.tag }}
|
||||
|
||||
nubusProvisioning:
|
||||
api:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.tag }}
|
||||
dispatcher:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningDispatcher.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningDispatcher.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningDispatcher.tag }}
|
||||
udmTransformer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningUdmTransformer.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningUdmTransformer.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningUdmTransformer.tag }}
|
||||
prefill:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningPrefill.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningPrefill.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningPrefill.tag }}
|
||||
registerConsumers:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusWaitForDependency.registry }}
|
||||
repository: {{ .Values.images.nubusWaitForDependency.repository }}
|
||||
tag: {{ .Values.images.nubusWaitForDependency.tag }}
|
||||
nats:
|
||||
nats:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusNats.registry }}
|
||||
repository: {{ .Values.images.nubusNats.repository }}
|
||||
tag: {{ .Values.images.nubusNats.tag }}
|
||||
reloader:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusNatsReloader.registry }}
|
||||
repository: {{ .Values.images.nubusNatsReloader.repository }}
|
||||
tag: {{ .Values.images.nubusNatsReloader.tag }}
|
||||
natsBox:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusNatsBox.registry }}
|
||||
repository: {{ .Values.images.nubusNatsBox.repository }}
|
||||
tag: {{ .Values.images.nubusNatsBox.tag }}
|
||||
|
||||
nubusProvisioningEventsAndConsumerApi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningEventsAndConsumerApi.tag }}
|
||||
|
||||
nubusProvisioningPrefill:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningPrefill.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningPrefill.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningPrefill.tag }}
|
||||
|
||||
nubusUdmListener:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusProvisioningUdmListener.registry }}
|
||||
repository: {{ .Values.images.nubusProvisioningUdmListener.repository }}
|
||||
tag: {{ .Values.images.nubusProvisioningUdmListener.tag }}
|
||||
|
||||
nubusSelfServiceListener:
|
||||
selfserviceListener:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusSelfserviceListener.registry }}
|
||||
repository: {{ .Values.images.nubusSelfserviceListener.repository }}
|
||||
tag: {{ .Values.images.nubusSelfserviceListener.tag }}
|
||||
selfserviceInvitation:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusSelfserviceInvitation.registry }}
|
||||
repository: {{ .Values.images.nubusSelfserviceInvitation.repository }}
|
||||
tag: {{ .Values.images.nubusSelfserviceInvitation.tag }}
|
||||
waitForDependency:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusWaitForDependency.registry }}
|
||||
repository: {{ .Values.images.nubusWaitForDependency.repository }}
|
||||
tag: {{ .Values.images.nubusWaitForDependency.tag }}
|
||||
|
||||
nubusUdmRestApi:
|
||||
# oxPlugin:
|
||||
# image:
|
||||
# registry: \{\{ .Values.images.nubusUdmRestApiOxPlugin.registry }}
|
||||
# repository: \{\{ .Values.images.nubusUdmRestApiOxPlugin.repository }}
|
||||
# tag: \{\{ .Values.images.nubusUdmRestApiOxPlugin.tag }}
|
||||
# portalPlugin:
|
||||
# image:
|
||||
# registry: \{\{ .Values.images.nubusUdmRestApiPortalPlugin.registry }}
|
||||
# repository: \{\{ .Values.images.nubusUdmRestApiPortalPlugin.repository }}
|
||||
# tag: \{\{ .Values.images.nubusUdmRestApiPortalPlugin.tag }}
|
||||
udmRestApi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusUdmRestApi.registry }}
|
||||
repository: {{ .Values.images.nubusUdmRestApi.repository }}
|
||||
tag: {{ .Values.images.nubusUdmRestApi.tag }}
|
||||
|
||||
nubusUmcGateway:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusUmcGateway.registry }}
|
||||
repository: {{ .Values.images.nubusUmcGateway.repository }}
|
||||
tag: {{ .Values.images.nubusUmcGateway.tag }}
|
||||
|
||||
nubusUmcServer:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusUmcServer.registry }}
|
||||
repository: {{ .Values.images.nubusUmcServer.repository }}
|
||||
tag: {{ .Values.images.nubusUmcServer.tag }}
|
||||
|
||||
nubusWaitForDependency:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusWaitForDependency.registry }}
|
||||
repository: {{ .Values.images.nubusWaitForDependency.repository }}
|
||||
tag: {{ .Values.images.nubusWaitForDependency.tag }}
|
||||
|
||||
|
||||
nubusGuardian:
|
||||
provisioning:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusGuardianProvisioning.registry }}
|
||||
repository: {{ .Values.images.nubusGuardianProvisioning.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianProvisioning.tag }}
|
||||
authorizationApi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusGuardianAuthorizationApi.registry }}
|
||||
repository: {{ .Values.images.nubusGuardianAuthorizationApi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianAuthorizationApi.tag }}
|
||||
managementApi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusGuardianManagementApi.registry }}
|
||||
repository: {{ .Values.images.nubusGuardianManagementApi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianManagementApi.tag }}
|
||||
managementUi:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusGuardianManagementUi.registry }}
|
||||
repository: {{ .Values.images.nubusGuardianManagementUi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianManagementUi.tag }}
|
||||
openPolicyAgent:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusOpenPolicyAgent.registry }}
|
||||
repository: {{ .Values.images.nubusOpenPolicyAgent.repository }}
|
||||
tag: {{ .Values.images.nubusOpenPolicyAgent.tag }}
|
||||
|
||||
nubusStackDataUms:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusDataLoader.registry }}
|
||||
repository: {{ .Values.images.nubusDataLoader.repository }}
|
||||
tag: {{ .Values.images.nubusDataLoader.tag }}
|
||||
|
||||
nubusStackDataSwp:
|
||||
image:
|
||||
registry: {{ .Values.images.nubusDataLoader.registry }}
|
||||
repository: {{ .Values.images.nubusDataLoader.repository }}
|
||||
tag: {{ .Values.images.nubusDataLoader.tag }}
|
||||
@@ -0,0 +1,602 @@
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: "{{ .Values.global.domain }}"
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.opendeskKeycloakBootstrap.registry | quote }}
|
||||
repository: {{ .Values.images.opendeskKeycloakBootstrap.repository | quote }}
|
||||
tag: {{ .Values.images.opendeskKeycloakBootstrap.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
keepPVCOnDelete: {{ .Values.debug.cleanup.keepPVCOnDelete }}
|
||||
|
||||
config:
|
||||
custom:
|
||||
clientScopes:
|
||||
{{ .Values.functional.authentication.oidc.clientScopes | toYaml | nindent 6 }}
|
||||
clients:
|
||||
{{ .Values.functional.authentication.oidc.clients | toYaml | nindent 6 }}
|
||||
managed:
|
||||
clientScopes: [ 'acr', 'web-origins', 'email', 'profile', 'microprofile-jwt', 'role_list', 'offline_access', 'roles', 'address', 'phone' ]
|
||||
clients: [ 'UMC', 'guardian-management-api', 'guardian-scripts', 'guardian-ui', '${client_account}', '${client_account-console}', '${client_admin-cli}', '${client_broker}', '${client_realm-management}', '${client_security-admin-console}' ]
|
||||
keycloak:
|
||||
adminUser: "kcadmin"
|
||||
adminPassword: {{ .Values.secrets.keycloak.adminPassword | quote }}
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
intraCluster:
|
||||
enabled: true
|
||||
internalBaseUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080"
|
||||
twoFactorSettings:
|
||||
additionalGroups: {{ .Values.functional.authentication.twoFactor.groups }}
|
||||
opendesk:
|
||||
# We use client specific scopes as we bind them to Keycloak role membership which itself is linked
|
||||
# to LDAP group membership to ensure a user cannot access an application without the required
|
||||
# group membership.
|
||||
# ToDo:
|
||||
# - Jitsi does currently not care if it gets scopes/claims as long as the user is authenticated.
|
||||
clientScopes:
|
||||
- name: "read_contacts"
|
||||
protocol: "openid-connect"
|
||||
- name: "write_contacts"
|
||||
protocol: "openid-connect"
|
||||
- name: "opendesk-openproject-scope"
|
||||
description: "Scope for the claims required by openDesk's OpenProject instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "opendeskProjectmanagementAdmin"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "opendeskProjectmanagementAdmin"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "openproject_admin"
|
||||
jsonType.label: "String"
|
||||
- name: "email"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "email"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "email"
|
||||
jsonType.label: "String"
|
||||
- name: "given name"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "firstName"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "given_name"
|
||||
jsonType.label: "String"
|
||||
- name: "family name"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "lastName"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "family_name"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-jitsi-scope"
|
||||
description: "Scope for the claims required by openDesk's Jitsi instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "full name"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-full-name-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
id.token.claim: true
|
||||
introspection.token.claim: true
|
||||
access.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
- name: "email"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "email"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "email"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-nextcloud-scope"
|
||||
description: "Scope for the claims required by openDesk's Nextcloud instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "email"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "email"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "email"
|
||||
jsonType.label: "String"
|
||||
- name: "context"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "oxContextIDNum"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "context"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-matrix-scope"
|
||||
description: "Scope for the claims required by openDesk's Matrix instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "full name"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-full-name-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
id.token.claim: true
|
||||
introspection.token.claim: true
|
||||
access.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
- name: "email"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "email"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "email"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-xwiki-scope"
|
||||
description: "Scope for the claims required by openDesk's XWiki instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "full name"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-full-name-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
id.token.claim: true
|
||||
introspection.token.claim: true
|
||||
access.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
- name: "email"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
introspection.token.claim: true
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "email"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "email"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-dovecot-scope"
|
||||
description: "Scope for the claims required by openDesk's Dovecot instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk-oxappsuite-scope"
|
||||
description: "Scope for the claims required by openDesk's OX Appuite instance."
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "context"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "oxContextIDNum"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "context"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
clients:
|
||||
- name: "opendesk-dovecot"
|
||||
clientId: "opendesk-dovecot"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.dovecot | quote }}
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: false
|
||||
defaultClientScopes:
|
||||
- "opendesk-dovecot-scope"
|
||||
- name: "opendesk-intercom"
|
||||
clientId: "opendesk-intercom"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/callback"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.revoke.offline.tokens: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/backchannel-logout"
|
||||
protocolMappers:
|
||||
- name: "intercom-audience"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-audience-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
included.client.audience: "opendesk-intercom"
|
||||
id.token.claim: false
|
||||
access.token.claim: true
|
||||
# temporary additional claim while entryuuid is a hardcoded attribute in IntercomService and we cannot set
|
||||
# it to `opendesk_useruuid` standard claim. For reference:
|
||||
# https://github.com/univention/intercom-service/blob/cd819b6ced6433e532e74a8878943d05412c1416/intercom/app.js#L89
|
||||
- name: "entryuuid_temp"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "entryuuid"
|
||||
jsonType.label: "String"
|
||||
# temporary additional claim while phoenixusername is a hardcoded attribute in IntercomService and we cannot
|
||||
# set it to `opendesk_username` standard claim. For reference:
|
||||
# https://github.com/univention/intercom-service/blob/cd819b6ced6433e532e74a8878943d05412c1416/intercom/routes/navigation.js#L27
|
||||
- name: "phoenixusername_temp"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "phoenixusername"
|
||||
jsonType.label: "String"
|
||||
defaultClientScopes:
|
||||
- "offline_access"
|
||||
- name: "opendesk-jitsi"
|
||||
clientId: "opendesk-jitsi"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.jitsi }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: true
|
||||
fullScopeAllowed: true
|
||||
authorizationServicesEnabled: false
|
||||
defaultClientScopes:
|
||||
- "opendesk-jitsi-scope"
|
||||
- name: "opendesk-matrix"
|
||||
clientId: "opendesk-matrix"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.matrix | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
standardFlowEnabled: true
|
||||
directAccessGrantsEnabled: true
|
||||
serviceAccountsEnabled: true
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/_synapse/client/oidc/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk-matrix-scope"
|
||||
# The following is a temporary OIDC client for matrix, as the OIDC logout still uses "matrix" as client ID.
|
||||
# Unless that is solved and also is able to use "opendesk-matrix" we keep that dummy client that
|
||||
- name: "matrix"
|
||||
clientId: "matrix"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
standardFlowEnabled: true
|
||||
directAccessGrantsEnabled: true
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes: []
|
||||
optionalClientScopes: []
|
||||
- name: "opendesk-nextcloud"
|
||||
clientId: "opendesk-nextcloud"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.ncoidc | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/index.php/apps/user_oidc/backchannel-logout/opendesk"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk-nextcloud-scope"
|
||||
- "read_contacts"
|
||||
- "write_contacts"
|
||||
- name: "opendesk-openproject"
|
||||
clientId: "opendesk-openproject"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.openproject | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
serviceAccountsEnabled: true
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/auth/keycloak/backchannel-logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk-openproject-scope"
|
||||
- name: "opendesk-oxappsuite"
|
||||
clientId: "opendesk-oxappsuite"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/ajax/oidc/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk-oxappsuite-scope"
|
||||
- "read_contacts"
|
||||
- "write_contacts"
|
||||
- name: "opendesk-xwiki"
|
||||
clientId: "opendesk-xwiki"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.xwiki | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: false
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/oidc/authenticator/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk-xwiki-scope"
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
enabled: true
|
||||
privileged: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.opendeskKeycloakBootstrap | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "OnRootMismatch"
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.opendeskKeycloakBootstrap | toYaml | nindent 2 }}
|
||||
|
||||
...
|
||||
67
helmfile/apps/open-xchange/helmfile-child.yaml
Normal file
67
helmfile/apps/open-xchange/helmfile-child.yaml
Normal file
@@ -0,0 +1,67 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Dovecot
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dovecot
|
||||
- name: "dovecot-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.dovecot.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/\
|
||||
{{ .Values.charts.dovecot.repository }}"
|
||||
|
||||
# Open-Xchange
|
||||
- name: "open-xchange-repo"
|
||||
keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg"
|
||||
verify: {{ .Values.charts.openXchangeAppSuite.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/\
|
||||
{{ .Values.charts.openXchangeAppSuite.repository }}"
|
||||
|
||||
# openDesk Open-Xchange Bootstrap
|
||||
# Source:
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
|
||||
- name: "open-xchange-bootstrap-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuiteBootstrap.registry }}/\
|
||||
{{ .Values.charts.openXchangeAppSuiteBootstrap.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "dovecot"
|
||||
chart: "dovecot-repo/{{ .Values.charts.dovecot.name }}"
|
||||
version: "{{ .Values.charts.dovecot.version }}"
|
||||
values:
|
||||
- "values-dovecot.yaml.gotmpl"
|
||||
installed: {{ .Values.dovecot.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "open-xchange"
|
||||
chart: "open-xchange-repo/{{ .Values.charts.openXchangeAppSuite.name }}"
|
||||
version: "{{ .Values.charts.openXchangeAppSuite.version }}"
|
||||
values:
|
||||
- "values-openxchange.yaml.gotmpl"
|
||||
- "values-openxchange-enterprise-contact-picker.yaml.gotmpl"
|
||||
installed: {{ .Values.oxAppsuite.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-open-xchange-bootstrap"
|
||||
chart: "open-xchange-bootstrap-repo/{{ .Values.charts.openXchangeAppSuiteBootstrap.name }}"
|
||||
version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}"
|
||||
values:
|
||||
- "values-openxchange-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.oxAppsuite.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "open-xchange"
|
||||
...
|
||||
@@ -1,70 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# openDesk Dovecot
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dovecot
|
||||
- name: "dovecot-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.dovecot.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/\
|
||||
{{ .Values.charts.dovecot.repository }}"
|
||||
|
||||
# Open-Xchange
|
||||
- name: "open-xchange-repo"
|
||||
keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg"
|
||||
verify: {{ .Values.charts.openXchangeAppSuite.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/\
|
||||
{{ .Values.charts.openXchangeAppSuite.repository }}"
|
||||
|
||||
# openDesk Open-Xchange Bootstrap
|
||||
# Source:
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
|
||||
- name: "open-xchange-bootstrap-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuiteBootstrap.registry }}/\
|
||||
{{ .Values.charts.openXchangeAppSuiteBootstrap.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "dovecot"
|
||||
chart: "dovecot-repo/{{ .Values.charts.dovecot.name }}"
|
||||
version: "{{ .Values.charts.dovecot.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-dovecot.yaml.gotmpl"
|
||||
installed: {{ .Values.dovecot.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "open-xchange"
|
||||
chart: "open-xchange-repo/{{ .Values.charts.openXchangeAppSuite.name }}"
|
||||
version: "{{ .Values.charts.openXchangeAppSuite.version }}"
|
||||
values:
|
||||
- "values-openxchange.yaml.gotmpl"
|
||||
- "values-openxchange-enterprise-contact-picker.yaml.gotmpl"
|
||||
installed: {{ .Values.oxAppsuite.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-open-xchange-bootstrap"
|
||||
chart: "open-xchange-bootstrap-repo/{{ .Values.charts.openXchangeAppSuiteBootstrap.name }}"
|
||||
version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}"
|
||||
values:
|
||||
- "values-openxchange-bootstrap.yaml.gotmpl"
|
||||
installed: {{ .Values.oxAppsuite.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "open-xchange"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -15,7 +15,7 @@ imagePullSecrets:
|
||||
{{- end }}
|
||||
|
||||
dovecot:
|
||||
mailDomain: {{ .Values.global.domain | quote }}
|
||||
mailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
password: {{ .Values.secrets.dovecot.doveadm | quote }}
|
||||
ldap:
|
||||
enabled: true
|
||||
@@ -23,7 +23,7 @@ dovecot:
|
||||
port: 389
|
||||
base: "dc=swp-ldap,dc=internal"
|
||||
dn: "uid=ldapsearch_dovecot,cn=users,dc=swp-ldap,dc=internal"
|
||||
password: {{ .Values.secrets.univentionManagementStack.ldapSearch.dovecot | quote }}
|
||||
password: {{ .Values.secrets.nubus.ldapSearch.dovecot | quote }}
|
||||
oidc:
|
||||
enabled: true
|
||||
clientID: "opendesk-dovecot"
|
||||
@@ -31,15 +31,13 @@ dovecot:
|
||||
introspectionHost: {{ printf "%s.%s" .Values.global.hosts.keycloak .Values.global.domain | quote }}
|
||||
introspectionPath: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token/introspect"
|
||||
usernameAttribute: "opendesk_username"
|
||||
loginTrustedNetworks: {{ .Values.cluster.networking.cidr | quote }}
|
||||
loginTrustedNetworks: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
|
||||
submission:
|
||||
enabled: true
|
||||
ssl: "no"
|
||||
host: "postfix:25"
|
||||
|
||||
|
||||
|
||||
certificate:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeBootstrap.registry | quote }}
|
||||
|
||||
@@ -23,7 +23,7 @@ appsuite:
|
||||
type: "adminDN"
|
||||
adminDN:
|
||||
dn: "uid=ldapsearch_ox,cn=users,dc=swp-ldap,dc=internal"
|
||||
password: {{ .Values.secrets.univentionManagementStack.ldapSearch.ox | quote }}
|
||||
password: {{ .Values.secrets.nubus.ldapSearch.ox | quote }}
|
||||
|
||||
uiSettings:
|
||||
# Enterprise contact picker
|
||||
@@ -379,8 +379,12 @@ appsuite:
|
||||
# The values for the for assistant- and manager name mappings are either used as-is, or get resolved
|
||||
# dynamically using the DNs found
|
||||
# in the mapped LDAP attribute.
|
||||
assistant_name: "secretary"
|
||||
manager_name: "oxManagerName,manager"
|
||||
|
||||
# Due to the Univention bug https://forge.univention.org/bugzilla/show_bug.cgi?id=53741
|
||||
# we disable `assistant_name` contact picker attribute and use `secretary` for manager information.
|
||||
# assistant_name: "secretary"
|
||||
manager_name: "secretary,oxManagerName"
|
||||
|
||||
# Contact image, binary format is expected.
|
||||
image1: "jpegPhoto"
|
||||
# Special mapping where the value is evaluated using a string comparison with, or the existence of
|
||||
|
||||
@@ -5,6 +5,10 @@ SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
global:
|
||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
appsuite:
|
||||
cookieHashSalt: {{ .Values.secrets.oxAppsuite.cookieHashSalt }}
|
||||
shareCryptKey: {{ .Values.secrets.oxAppsuite.shareCryptKey }}
|
||||
sessiondEncryptionKey: {{ .Values.secrets.oxAppsuite.sessiondEncryptionKey }}
|
||||
mysql:
|
||||
host: {{ .Values.databases.oxAppsuite.host | quote }}
|
||||
database: {{ .Values.databases.oxAppsuite.name | quote }}
|
||||
@@ -88,6 +92,11 @@ appsuite:
|
||||
hosts:
|
||||
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
routes:
|
||||
http-api-routes-appsuite-api:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.openXchangeAppSuite }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openXchangeAppSuite }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openXchangeAppSuite }}"
|
||||
trailslash:
|
||||
enabled: false
|
||||
core-mw:
|
||||
@@ -100,6 +109,12 @@ appsuite:
|
||||
oidcPath: "/oidc"
|
||||
masterAdmin: "admin"
|
||||
masterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
||||
hzGroupName: "hzgroup"
|
||||
hzGroupPassword: {{ .Values.secrets.oxAppsuite.hzGroupPassword | quote }}
|
||||
basicAuthLogin: "oxlogin"
|
||||
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
|
||||
jolokiaLogin: "jolokia"
|
||||
jolokiaPassword: {{ .Values.secrets.oxAppsuite.jolokiaPassword | quote }}
|
||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
serviceAccount:
|
||||
create: true
|
||||
@@ -170,7 +185,7 @@ appsuite:
|
||||
com.openexchange.oidc.opLogoutEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
|
||||
com.openexchange.oidc.opTokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||
com.openexchange.oidc.rpRedirectURIAuth: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/appsuite/api/oidc/auth"
|
||||
com.openexchange.oidc.rpRedirectURILogout: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||
com.openexchange.oidc.rpRedirectURILogout: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}"
|
||||
com.openexchange.oidc.rpRedirectURIPostSSOLogout: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/appsuite/api/oidc/logout"
|
||||
com.openexchange.oidc.ssoLogout: "true"
|
||||
com.openexchange.oidc.startDefaultBackend: "true"
|
||||
@@ -226,6 +241,11 @@ appsuite:
|
||||
com.openexchange.file.storage.nextcloud.oauth.url: "http://opendesk-nextcloud-apache2/"
|
||||
com.openexchange.file.storage.nextcloud.oauth.webdav.username.strategy: "user"
|
||||
com.openexchange.nextcloud.filepicker.includeAccessToken: "false"
|
||||
# Element integration
|
||||
com.openexchange.conference.element.enabled: "true"
|
||||
com.openexchange.conference.element.meetingHostUrl: http://matrix-neodatefix-bot
|
||||
com.openexchange.conference.element.matrixLoginUrl: http://opendesk-synapse-web:8008/_matrix/client/v3/login
|
||||
com.openexchange.conference.element.matrixUuidClaimName: opendesk_useruuid
|
||||
# GDPR
|
||||
com.openexchange.gdpr.dataexport.enabled: "false"
|
||||
com.openexchange.gdpr.dataexport.active: "false"
|
||||
@@ -244,15 +264,18 @@ appsuite:
|
||||
com.openexchange.cookie.hash.salt: {{ .Values.secrets.oxAppsuite.cookieHashSalt | quote }}
|
||||
com.openexchange.sessiond.encryptionKey: {{ .Values.secrets.oxAppsuite.sessiondEncryptionKey | quote }}
|
||||
com.openexchange.share.cryptKey: {{ .Values.secrets.oxAppsuite.shareCryptKey | quote }}
|
||||
com.openexchange.conference.element.authToken: {{ .Values.secrets.oxAppsuite.synapseAsToken | quote }}
|
||||
propertiesFiles:
|
||||
/opt/open-xchange/etc/AdminDaemon.properties:
|
||||
MASTER_ACCOUNT_OVERRIDE: "true"
|
||||
/opt/open-xchange/etc/AdminUser.properties:
|
||||
USERNAME_CHANGEABLE: "true"
|
||||
/opt/open-xchange/etc/system.properties:
|
||||
SERVER_NAME: "oxserver"
|
||||
/opt/open-xchange/etc/ldapauth.properties:
|
||||
java.naming.provider.url: "ldap://{{ .Values.ldap.host }}:389/dc=swp-ldap,dc=internal"
|
||||
bindDN: "uid=ldapsearch_ox,cn=users,dc=swp-ldap,dc=internal"
|
||||
bindDNPassword: {{ .Values.secrets.univentionManagementStack.ldapSearch.ox | quote }}
|
||||
bindDNPassword: {{ .Values.secrets.nubus.ldapSearch.ox | quote }}
|
||||
bindOnly: "false"
|
||||
/opt/open-xchange/etc/antivirus.properties:
|
||||
com.openexchange.antivirus.enabled: "true"
|
||||
@@ -294,7 +317,7 @@ appsuite:
|
||||
# io.ox/mail//contactCollectOnMailAccess: "true"
|
||||
# Dynamic theme
|
||||
io.ox/dynamic-theme//mainColor: {{ .Values.theme.colors.primary | quote }}
|
||||
io.ox/dynamic-theme//logoURL: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/icons/logos/domain.svg"
|
||||
io.ox/dynamic-theme//logoURL: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/univention/portal/icons/logos/domain.svg"
|
||||
io.ox/dynamic-theme//topbarBackground: {{ .Values.theme.colors.white | quote }}
|
||||
io.ox/dynamic-theme//topbarColor: {{ .Values.theme.colors.black | quote }}
|
||||
io.ox/dynamic-theme//listSelected: {{ .Values.theme.colors.primary15 | quote }}
|
||||
@@ -309,12 +332,13 @@ appsuite:
|
||||
oxguardpass: |
|
||||
{{ .Values.secrets.oxAppsuite.oxguardMC }}
|
||||
{{ .Values.secrets.oxAppsuite.oxguardRC }}
|
||||
redis:
|
||||
redis: &redisConfiguration
|
||||
enabled: true
|
||||
mode: "standalone"
|
||||
hosts:
|
||||
- "redis-master"
|
||||
- "redis-master:6379"
|
||||
auth:
|
||||
enabled: true
|
||||
password: {{ .Values.secrets.redis.password | quote }}
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeCoreMW.registry | quote }}
|
||||
@@ -379,20 +403,12 @@ appsuite:
|
||||
tag: {{ .Values.images.openxchangeCoreUIMiddleware.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
overrides: {}
|
||||
redis:
|
||||
mode: "standalone"
|
||||
hosts:
|
||||
- "redis-master:6379"
|
||||
auth:
|
||||
enabled: true
|
||||
password: {{ .Values.secrets.redis.password | quote }}
|
||||
# Workaround for a bug in 8.23
|
||||
ca: ""
|
||||
redis: *redisConfiguration
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeCoreUIMiddleware | toYaml | nindent 6 }}
|
||||
updater:
|
||||
updater:
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeCoreUIMiddlewareUpdater | toYaml | nindent 6 }}
|
||||
{{ .Values.resources.openxchangeCoreUIMiddlewareUpdater | toYaml | nindent 8 }}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -411,6 +427,10 @@ appsuite:
|
||||
enabled: false
|
||||
|
||||
core-documentconverter:
|
||||
adminUser: "admin"
|
||||
adminPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
||||
basicAuthLogin: "oxlogin"
|
||||
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
|
||||
enabled: true
|
||||
documentConverter:
|
||||
cache:
|
||||
@@ -420,6 +440,7 @@ appsuite:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeDocumentConverter.registry | quote }}
|
||||
repository: {{ .Values.images.openxchangeDocumentConverter.repository | quote }}
|
||||
tag: {{ .Values.images.openxchangeDocumentConverter.tag | quote }}
|
||||
redis: *redisConfiguration
|
||||
resources:
|
||||
{{- .Values.resources.openxchangeCoreDocumentConverter | toYaml | nindent 6 }}
|
||||
securityContext:
|
||||
@@ -484,6 +505,10 @@ appsuite:
|
||||
|
||||
core-imageconverter:
|
||||
enabled: true
|
||||
adminUser: "admin"
|
||||
adminPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
||||
basicAuthLogin: "oxlogin"
|
||||
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeImageConverter.registry | quote }}
|
||||
repository: {{ .Values.images.openxchangeImageConverter.repository | quote }}
|
||||
@@ -494,6 +519,7 @@ appsuite:
|
||||
endpoint: "."
|
||||
accessKey: "."
|
||||
secretKey: "."
|
||||
redis: *redisConfiguration
|
||||
resources:
|
||||
{{- .Values.resources.openxchangeCoreImageConverter | toYaml | nindent 6 }}
|
||||
securityContext:
|
||||
@@ -520,7 +546,8 @@ appsuite:
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
image:
|
||||
repository: "{{ .Values.global.imageRegistry | default .Values.images.openxchangeGuardUI.registry }}/{{ .Values.images.openxchangeGuardUI.repository }}"
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeGuardUI.registry | quote }}
|
||||
repository: {{ .Values.images.openxchangeGuardUI.repository | quote }}
|
||||
tag: {{ .Values.images.openxchangeGuardUI.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
resources:
|
||||
|
||||
30
helmfile/apps/openproject-bootstrap/helmfile-child.yaml
Normal file
30
helmfile/apps/openproject-bootstrap/helmfile-child.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk OpenProject Bootstrap
|
||||
# Source: Set when repo is managed on Open CoDE
|
||||
- name: "openproject-bootstrap-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.openprojectBootstrap.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/\
|
||||
{{ .Values.charts.openprojectBootstrap.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-openproject-bootstrap"
|
||||
chart: "openproject-bootstrap-repo/{{ .Values.charts.openprojectBootstrap.name }}"
|
||||
version: "{{ .Values.charts.openprojectBootstrap.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.openproject.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-2"
|
||||
component: "opendesk-openproject-bootstrap"
|
||||
...
|
||||
@@ -1,33 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# openDesk OpenProject Bootstrap
|
||||
# Source: Set when repo is managed on Open CoDE
|
||||
- name: "openproject-bootstrap-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.openprojectBootstrap.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/\
|
||||
{{ .Values.charts.openprojectBootstrap.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-openproject-bootstrap"
|
||||
chart: "openproject-bootstrap-repo/{{ .Values.charts.openprojectBootstrap.name }}"
|
||||
version: "{{ .Values.charts.openprojectBootstrap.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.openproject.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-2"
|
||||
component: "opendesk-openproject-bootstrap"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -11,8 +11,8 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
keepPVCOnDelete: {{ .Values.cleanup.keepPVCOnDelete }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
keepPVCOnDelete: {{ .Values.debug.cleanup.keepPVCOnDelete }}
|
||||
|
||||
config:
|
||||
openproject:
|
||||
|
||||
30
helmfile/apps/openproject/helmfile-child.yaml
Normal file
30
helmfile/apps/openproject/helmfile-child.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# OpenProject
|
||||
# Source: https://github.com/opf/helm-charts
|
||||
- name: "openproject-repo"
|
||||
keyring: "../../files/gpg-pubkeys/openproject-com.gpg"
|
||||
verify: {{ .Values.charts.openproject.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/\
|
||||
{{ .Values.charts.openproject.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "openproject"
|
||||
chart: "openproject-repo/{{ .Values.charts.openproject.name }}"
|
||||
version: "{{ .Values.charts.openproject.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.openproject.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "openproject"
|
||||
...
|
||||
@@ -1,33 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# OpenProject
|
||||
# Source: https://github.com/opf/helm-charts
|
||||
- name: "openproject-repo"
|
||||
keyring: "../../files/gpg-pubkeys/openproject-com.gpg"
|
||||
verify: {{ .Values.charts.openproject.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/\
|
||||
{{ .Values.charts.openproject.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "openproject"
|
||||
chart: "openproject-repo/{{ .Values.charts.openproject.name }}"
|
||||
version: "{{ .Values.charts.openproject.version }}"
|
||||
wait: true
|
||||
waitForJobs: true
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.openproject.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "openproject"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -28,18 +28,16 @@ environment:
|
||||
# https://www.openproject.org/docs/installation-and-operations/configuration/environment/
|
||||
OPENPROJECT_LOG__LEVEL: {{ if .Values.debug.enabled }}"debug"{{ else }}"warn"{{ end }}
|
||||
OPENPROJECT_LOGIN__REQUIRED: "true"
|
||||
OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin"
|
||||
OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true"
|
||||
OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak"
|
||||
OPENPROJECT_PER__PAGE__OPTIONS: "20, 50, 100, 200"
|
||||
OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp"
|
||||
OPENPROJECT_SMTP__AUTHENTICATION: "plain"
|
||||
OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
|
||||
OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "peer"
|
||||
OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: "desc"
|
||||
# Details: https://www.openproject-edge.com/docs/installation-and-operations/configuration/#seeding-ldap-connections
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_HOST: {{ .Values.ldap.host | quote }}
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_PORT: "389"
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: {{ .Values.secrets.univentionManagementStack.ldapSearch.openproject | quote }}
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: {{ .Values.secrets.nubus.ldapSearch.openproject | quote }}
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_SECURITY: "plain_ldap"
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_BINDUSER: "uid=ldapsearch_openproject,cn=users,dc=swp-ldap,dc=internal"
|
||||
OPENPROJECT_SEED_LDAP_OPENDESK_BASEDN: "dc=swp-ldap,dc=internal"
|
||||
@@ -59,17 +57,23 @@ environment:
|
||||
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: {{ .Values.secrets.openproject.apiAdminUsername | quote }}
|
||||
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: {{ .Values.secrets.openproject.apiAdminPassword | quote }}
|
||||
OPENPROJECT_SOUVAP__NAVIGATION__SECRET: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||
OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/navigation.json?base=https%3A//{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||
OPENPROJECT_SMTP__DOMAIN: {{ .Values.global.domain | quote }}
|
||||
OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/univention/portal/navigation.json?base=https%3A//{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}"
|
||||
OPENPROJECT_SMTP__DOMAIN: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
OPENPROJECT_SMTP__USER__NAME: {{ .Values.smtp.username | quote }}
|
||||
OPENPROJECT_SMTP__PASSWORD: {{ .Values.smtp.password | quote }}
|
||||
OPENPROJECT_SMTP__PORT: {{ .Values.smtp.port | quote }}
|
||||
OPENPROJECT_SMTP__SSL: "false" # (default=false)
|
||||
OPENPROJECT_SMTP__ADDRESS: {{ .Values.smtp.host | quote }}
|
||||
OPENPROJECT_MAIL__FROM: "do-not-reply@{{ .Values.global.domain }}"
|
||||
OPENPROJECT_HOME__URL: {{ printf "https://%s.%s/" .Values.global.hosts.univentionManagementStack .Values.global.domain | quote }}
|
||||
OPENPROJECT_SMTP__AUTHENTICATION: "plain"
|
||||
OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
|
||||
OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "peer"
|
||||
OPENPROJECT_MAIL__FROM: "{{ .Values.smtp.localpartNoReply }}@{{ if .Values.functional.email.systemGenerated.useComponentInSenderdomain }}{{ .Values.global.hosts.openproject }}.{{ end }}{{ .Values.global.domain }}"
|
||||
OPENPROJECT_HOME__URL: {{ printf "https://%s.%s/" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/"
|
||||
{{- if .Values.enterprise.openproject.token }}
|
||||
OPENPROJECT_ENTERPRISE__TOKEN: {{ .Values.enterprise.openproject.token | quote }}
|
||||
{{- end }}
|
||||
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openproject.registry | quote }}
|
||||
@@ -128,7 +132,7 @@ openproject:
|
||||
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||
identifier: "opendesk-openproject"
|
||||
provider: "keycloak"
|
||||
scope: "[openid,opendesk]"
|
||||
scope: "[openid,opendesk-openproject-scope]"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.openproject | quote }}
|
||||
tokenEndpoint: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||
userinfoEndpoint: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
|
||||
@@ -138,6 +142,13 @@ openproject:
|
||||
useTmpVolumes: true
|
||||
|
||||
ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.openproject }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}"
|
||||
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.openproject }}"
|
||||
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}s"
|
||||
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}s"
|
||||
host: "{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}"
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
@@ -154,12 +165,14 @@ resources:
|
||||
|
||||
s3:
|
||||
enabled: true
|
||||
directUploads: {{ .Values.objectstores.openproject.directUploads }}
|
||||
enableSignatureV4Streaming: {{ .Values.objectstores.openproject.enableSignatureV4Streaming }}
|
||||
endpoint: {{ .Values.objectstores.openproject.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
host: {{ .Values.objectstores.openproject.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
pathStyle: {{ .Values.objectstores.openproject.pathStyle | quote }}
|
||||
pathStyle: {{ .Values.objectstores.openproject.pathStyle }}
|
||||
region: {{ .Values.objectstores.openproject.region | quote }}
|
||||
bucketName: {{ .Values.objectstores.openproject.bucket | quote }}
|
||||
use_iam_profile: {{ .Values.objectstores.openproject.useIAMProfile | default "false" | quote }}
|
||||
useIamProfile: {{ .Values.objectstores.openproject.useIamProfile }}
|
||||
auth:
|
||||
accessKeyId: {{ .Values.objectstores.openproject.username | quote }}
|
||||
secretAccessKey: {{ .Values.objectstores.openproject.secretKey | default .Values.secrets.minio.openprojectUser | quote }}
|
||||
|
||||
24
helmfile/apps/provisioning/helmfile-child.yaml
Normal file
24
helmfile/apps/provisioning/helmfile-child.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# OX Connector
|
||||
- name: "ox-connector-repo"
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/\
|
||||
{{ .Values.charts.oxConnector.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "ox-connector"
|
||||
chart: "ox-connector-repo/{{ .Values.charts.oxConnector.name }}"
|
||||
version: "{{ .Values.charts.oxConnector.version }}"
|
||||
values:
|
||||
- "values-oxconnector.yaml.gotmpl"
|
||||
installed: {{ .Values.oxConnector.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-2"
|
||||
component: "provisioning"
|
||||
...
|
||||
@@ -1,27 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# OX Connector
|
||||
- name: "ox-connector-repo"
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/\
|
||||
{{ .Values.charts.oxConnector.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "ox-connector"
|
||||
chart: "ox-connector-repo/{{ .Values.charts.oxConnector.name }}"
|
||||
version: "{{ .Values.charts.oxConnector.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-oxconnector.yaml.gotmpl"
|
||||
installed: {{ .Values.oxConnector.enabled }}
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-2"
|
||||
component: "provisioning"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -19,9 +19,9 @@ oxConnector:
|
||||
caCert: "ucctempldapstring"
|
||||
debugLevel: {{ if .Values.debug.enabled }}"4"{{ else }}"1"{{ end }}
|
||||
domainName: {{ .Values.global.domain | quote }}
|
||||
ldapHost: {{ .Values.ldap.host | quote }}
|
||||
ldapHost: "{{ .Values.ldap.host }}-primary"
|
||||
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"WARN"{{ end }}
|
||||
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||
ldapPassword: {{ .Values.secrets.nubus.ldapSecret | quote }}
|
||||
ldapBaseDn: "dc=swp-ldap,dc=internal"
|
||||
ldapHostDn: "cn=admin,dc=swp-ldap,dc=internal"
|
||||
tlsMode: "off"
|
||||
|
||||
208
helmfile/apps/services/helmfile-child.yaml
Normal file
208
helmfile/apps/services/helmfile-child.yaml
Normal file
@@ -0,0 +1,208 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# openDesk Otterize
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-otterize
|
||||
- name: "otterize-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.otterize.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/\
|
||||
{{ .Values.charts.otterize.repository }}"
|
||||
|
||||
# openDesk Home
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-home
|
||||
- name: "home-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.home.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.home.registry }}/\
|
||||
{{ .Values.charts.home.repository }}"
|
||||
|
||||
# openDesk Certificates
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
|
||||
- name: "certificates-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.certificates.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/\
|
||||
{{ .Values.charts.certificates.repository }}"
|
||||
|
||||
# openDesk PostgreSQL
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
|
||||
- name: "postgresql-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.postgresql.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/\
|
||||
{{ .Values.charts.postgresql.repository }}"
|
||||
|
||||
# openDesk MariaDB
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
|
||||
- name: "mariadb-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.mariadb.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/\
|
||||
{{ .Values.charts.mariadb.repository }}"
|
||||
|
||||
# openDesk Postfix
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
|
||||
- name: "postfix-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.postfix.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/\
|
||||
{{ .Values.charts.postfix.repository }}"
|
||||
|
||||
# openDesk ClamAV
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
|
||||
- name: "clamav-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.clamav.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/\
|
||||
{{ .Values.charts.clamav.repository }}"
|
||||
- name: "clamav-simple-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.clamavSimple.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/\
|
||||
{{ .Values.charts.clamavSimple.repository }}"
|
||||
|
||||
# VMWare Bitnami
|
||||
# Source: https://github.com/bitnami/charts/
|
||||
- name: "memcached-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.memcached.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/\
|
||||
{{ .Values.charts.memcached.repository }}"
|
||||
- name: "redis-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.redis.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/\
|
||||
{{ .Values.charts.redis.repository }}"
|
||||
- name: "minio-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.minio.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/\
|
||||
{{ .Values.charts.minio.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-otterize"
|
||||
chart: "otterize-repo/{{ .Values.charts.otterize.name }}"
|
||||
version: "{{ .Values.charts.otterize.version }}"
|
||||
values:
|
||||
- "values-otterize.yaml.gotmpl"
|
||||
installed: {{ .Values.security.otterizeIntents.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-home"
|
||||
chart: "home-repo/{{ .Values.charts.home.name }}"
|
||||
version: "{{ .Values.charts.home.version }}"
|
||||
values:
|
||||
- "values-home.yaml.gotmpl"
|
||||
installed: {{ .Values.home.enabled }}
|
||||
|
||||
- name: "opendesk-certificates"
|
||||
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
|
||||
version: "{{ .Values.charts.certificates.version }}"
|
||||
values:
|
||||
- "values-certificates.yaml.gotmpl"
|
||||
installed: {{ .Values.certificates.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "redis"
|
||||
chart: "redis-repo/{{ .Values.charts.redis.name }}"
|
||||
version: "{{ .Values.charts.redis.version }}"
|
||||
values:
|
||||
- "values-redis.yaml.gotmpl"
|
||||
installed: {{ .Values.redis.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "memcached"
|
||||
chart: "memcached-repo/{{ .Values.charts.memcached.name }}"
|
||||
version: "{{ .Values.charts.memcached.version }}"
|
||||
values:
|
||||
- "values-memcached.yaml.gotmpl"
|
||||
installed: {{ .Values.memcached.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "postgresql"
|
||||
chart: "postgresql-repo/{{ .Values.charts.postgresql.name }}"
|
||||
version: "{{ .Values.charts.postgresql.version }}"
|
||||
values:
|
||||
- "values-postgresql.yaml.gotmpl"
|
||||
installed: {{ .Values.postgresql.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "mariadb"
|
||||
chart: "mariadb-repo/{{ .Values.charts.mariadb.name }}"
|
||||
version: "{{ .Values.charts.mariadb.version }}"
|
||||
values:
|
||||
- "values-mariadb.yaml.gotmpl"
|
||||
installed: {{ .Values.mariadb.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "postfix"
|
||||
chart: "postfix-repo/{{ .Values.charts.postfix.name }}"
|
||||
version: "{{ .Values.charts.postfix.version }}"
|
||||
values:
|
||||
- "values-postfix.yaml.gotmpl"
|
||||
installed: {{ .Values.postfix.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "clamav"
|
||||
chart: "clamav-repo/{{ .Values.charts.clamav.name }}"
|
||||
version: "{{ .Values.charts.clamav.version }}"
|
||||
values:
|
||||
- "values-clamav-distributed.yaml.gotmpl"
|
||||
installed: {{ .Values.clamavDistributed.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "clamav-simple"
|
||||
chart: "clamav-simple-repo/{{ .Values.charts.clamavSimple.name }}"
|
||||
version: "{{ .Values.charts.clamavSimple.version }}"
|
||||
values:
|
||||
- "values-clamav-simple.yaml.gotmpl"
|
||||
installed: {{ .Values.clamavSimple.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "minio"
|
||||
chart: "minio-repo/{{ .Values.charts.minio.name }}"
|
||||
version: "{{ .Values.charts.minio.version }}"
|
||||
values:
|
||||
- "values-minio.yaml.gotmpl"
|
||||
installed: {{ .Values.minio.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "services"
|
||||
component: "services"
|
||||
...
|
||||
@@ -5,208 +5,8 @@
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# openDesk Otterize
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-otterize
|
||||
- name: "otterize-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.otterize.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/\
|
||||
{{ .Values.charts.otterize.repository }}"
|
||||
|
||||
# openDesk Home
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-home
|
||||
- name: "home-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.home.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.home.registry }}/\
|
||||
{{ .Values.charts.home.repository }}"
|
||||
|
||||
# openDesk Certificates
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
|
||||
- name: "certificates-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.certificates.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/\
|
||||
{{ .Values.charts.certificates.repository }}"
|
||||
|
||||
# openDesk PostgreSQL
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
|
||||
- name: "postgresql-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.postgresql.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/\
|
||||
{{ .Values.charts.postgresql.repository }}"
|
||||
|
||||
# openDesk MariaDB
|
||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
|
||||
- name: "mariadb-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.mariadb.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/\
|
||||
{{ .Values.charts.mariadb.repository }}"
|
||||
|
||||
# openDesk Postfix
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
|
||||
- name: "postfix-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.postfix.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/\
|
||||
{{ .Values.charts.postfix.repository }}"
|
||||
|
||||
# openDesk ClamAV
|
||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
|
||||
- name: "clamav-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.clamav.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/\
|
||||
{{ .Values.charts.clamav.repository }}"
|
||||
- name: "clamav-simple-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.clamavSimple.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/\
|
||||
{{ .Values.charts.clamavSimple.repository }}"
|
||||
|
||||
# VMWare Bitnami
|
||||
# Source: https://github.com/bitnami/charts/
|
||||
- name: "memcached-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.memcached.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/\
|
||||
{{ .Values.charts.memcached.repository }}"
|
||||
- name: "redis-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.redis.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/\
|
||||
{{ .Values.charts.redis.repository }}"
|
||||
- name: "minio-repo"
|
||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||
verify: {{ .Values.charts.minio.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/\
|
||||
{{ .Values.charts.minio.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "opendesk-otterize"
|
||||
chart: "otterize-repo/{{ .Values.charts.otterize.name }}"
|
||||
version: "{{ .Values.charts.otterize.version }}"
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values-otterize.yaml.gotmpl"
|
||||
installed: {{ .Values.security.otterizeIntents.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "opendesk-home"
|
||||
chart: "home-repo/{{ .Values.charts.home.name }}"
|
||||
version: "{{ .Values.charts.home.version }}"
|
||||
values:
|
||||
- "values-home.yaml.gotmpl"
|
||||
installed: {{ .Values.home.enabled }}
|
||||
|
||||
- name: "opendesk-certificates"
|
||||
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
|
||||
version: "{{ .Values.charts.certificates.version }}"
|
||||
values:
|
||||
- "values-certificates.yaml.gotmpl"
|
||||
installed: {{ .Values.certificates.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "redis"
|
||||
chart: "redis-repo/{{ .Values.charts.redis.name }}"
|
||||
version: "{{ .Values.charts.redis.version }}"
|
||||
values:
|
||||
- "values-redis.yaml.gotmpl"
|
||||
installed: {{ .Values.redis.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "memcached"
|
||||
chart: "memcached-repo/{{ .Values.charts.memcached.name }}"
|
||||
version: "{{ .Values.charts.memcached.version }}"
|
||||
values:
|
||||
- "values-memcached.yaml.gotmpl"
|
||||
installed: {{ .Values.memcached.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "postgresql"
|
||||
chart: "postgresql-repo/{{ .Values.charts.postgresql.name }}"
|
||||
version: "{{ .Values.charts.postgresql.version }}"
|
||||
values:
|
||||
- "values-postgresql.yaml.gotmpl"
|
||||
installed: {{ .Values.postgresql.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "mariadb"
|
||||
chart: "mariadb-repo/{{ .Values.charts.mariadb.name }}"
|
||||
version: "{{ .Values.charts.mariadb.version }}"
|
||||
values:
|
||||
- "values-mariadb.yaml.gotmpl"
|
||||
installed: {{ .Values.mariadb.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "postfix"
|
||||
chart: "postfix-repo/{{ .Values.charts.postfix.name }}"
|
||||
version: "{{ .Values.charts.postfix.version }}"
|
||||
values:
|
||||
- "values-postfix.yaml.gotmpl"
|
||||
installed: {{ .Values.postfix.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "clamav"
|
||||
chart: "clamav-repo/{{ .Values.charts.clamav.name }}"
|
||||
version: "{{ .Values.charts.clamav.version }}"
|
||||
values:
|
||||
- "values-clamav-distributed.yaml.gotmpl"
|
||||
installed: {{ .Values.clamavDistributed.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "clamav-simple"
|
||||
chart: "clamav-simple-repo/{{ .Values.charts.clamavSimple.name }}"
|
||||
version: "{{ .Values.charts.clamavSimple.version }}"
|
||||
values:
|
||||
- "values-clamav-simple.yaml.gotmpl"
|
||||
installed: {{ .Values.clamavSimple.enabled }}
|
||||
timeout: 900
|
||||
|
||||
- name: "minio"
|
||||
chart: "minio-repo/{{ .Values.charts.minio.name }}"
|
||||
version: "{{ .Values.charts.minio.version }}"
|
||||
values:
|
||||
- "values-minio.yaml.gotmpl"
|
||||
installed: {{ .Values.minio.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "services"
|
||||
component: "services"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -5,7 +5,6 @@ SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
synapseDomain: {{ .Values.global.matrixDomain | quote }}
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
|
||||
@@ -13,7 +12,7 @@ issuerRef:
|
||||
name: {{ .Values.certificate.issuerRef.name | quote }}
|
||||
|
||||
cleanup:
|
||||
keepRessourceOnDelete: {{ .Values.cleanup.keepRessourceOnDelete }}
|
||||
keepRessourceOnDelete: {{ .Values.debug.cleanup.keepRessourceOnDelete }}
|
||||
|
||||
wildcard: {{ .Values.certificate.wildcard }}
|
||||
...
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
|
||||
@@ -67,9 +67,9 @@ mode: {{ if gt .Values.replicas.minio 1 }}"distributed"{{ else }}"standalone"{{
|
||||
|
||||
metrics:
|
||||
serviceMonitor:
|
||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
additionalLabels:
|
||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
||||
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
||||
|
||||
networkPolicy:
|
||||
enabled: false
|
||||
@@ -89,16 +89,43 @@ provisioning:
|
||||
extraCommands:
|
||||
- "mc anonymous set download provisioning/ums/portal-assets"
|
||||
buckets:
|
||||
- name: {{ .Values.objectstores.openproject.bucket | quote }}
|
||||
versioning: true
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.univentionManagementStack.bucket | quote }}
|
||||
- name: {{ .Values.objectstores.migrations.bucket | quote }}
|
||||
versioning: false
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.nextcloud.bucket | quote }}
|
||||
versioning: true
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.openproject.bucket | quote }}
|
||||
versioning: true
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.nubus.bucket | quote }}
|
||||
versioning: false
|
||||
withLock: false
|
||||
policies:
|
||||
- name: "migrations-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
- "arn:aws:s3:::migrations"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- resources:
|
||||
- "arn:aws:s3:::migrations/*"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- name: "nextcloud-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
- "arn:aws:s3:::nextcloud"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- resources:
|
||||
- "arn:aws:s3:::nextcloud/*"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- name: "openproject-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
@@ -123,30 +150,12 @@ provisioning:
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- name: "nextcloud-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
- "arn:aws:s3:::nextcloud"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- resources:
|
||||
- "arn:aws:s3:::nextcloud/*"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
users:
|
||||
- username: {{ .Values.objectstores.openproject.username | quote }}
|
||||
password: {{ .Values.secrets.minio.openprojectUser | quote }}
|
||||
- username: {{ .Values.objectstores.migrations.username | quote }}
|
||||
password: {{ .Values.secrets.minio.migrationsUser | quote }}
|
||||
disabled: false
|
||||
policies:
|
||||
- "openproject-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.univentionManagementStack.username | quote }}
|
||||
password: {{ .Values.secrets.minio.umsUser | quote }}
|
||||
disabled: false
|
||||
policies:
|
||||
- "ums-bucket-policy"
|
||||
- "migrations-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.nextcloud.username | quote }}
|
||||
password: {{ .Values.secrets.minio.nextcloudUser | quote }}
|
||||
@@ -154,6 +163,18 @@ provisioning:
|
||||
policies:
|
||||
- "nextcloud-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.openproject.username | quote }}
|
||||
password: {{ .Values.secrets.minio.openprojectUser | quote }}
|
||||
disabled: false
|
||||
policies:
|
||||
- "openproject-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.nubus.username | quote }}
|
||||
password: {{ .Values.secrets.minio.umsUser | quote }}
|
||||
disabled: false
|
||||
policies:
|
||||
- "ums-bucket-policy"
|
||||
setPolicies: true
|
||||
resources:
|
||||
{{ .Values.resources.minio | toYaml | nindent 4 }}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ apps:
|
||||
redis:
|
||||
enabled: {{ .Values.redis.enabled }}
|
||||
univentionManagementStack:
|
||||
enabled: {{ .Values.univentionManagementStack.enabled }}
|
||||
enabled: {{ .Values.nubus.enabled }}
|
||||
xwiki:
|
||||
enabled: {{ .Values.xwiki.enabled }}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ podSecurityContext:
|
||||
postfix:
|
||||
amavisHost: ""
|
||||
amavisPortIn: ""
|
||||
domain: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
||||
domain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
hostname: "postfix"
|
||||
inetProtocols: "ipv4"
|
||||
milterDefaultAction: "accept"
|
||||
@@ -50,8 +50,8 @@ postfix:
|
||||
content:
|
||||
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
|
||||
rspamdHost: ""
|
||||
relayHost: {{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}
|
||||
relayNets: {{ .Values.cluster.networking.cidr | quote}}
|
||||
relayHost: {{ if .Values.smtp.host }}{{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}{{ else }}""{{ end }}
|
||||
relayNets: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
smtpSASLAuthEnable: "yes"
|
||||
smtpSASLPasswordMaps: "lmdb:/etc/postfix/sasl_passwd.map"
|
||||
smtpUseTLS: "yes"
|
||||
@@ -67,7 +67,7 @@ postfix:
|
||||
{{- else if .Values.clamavSimple.enabled }}
|
||||
smtpdMilters: "inet:clamav-simple:7357"
|
||||
{{- end }}
|
||||
virtualMailboxDomains: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
||||
virtualMailboxDomains: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
virtualTransport: "lmtps:dovecot:24"
|
||||
|
||||
replicaCount: {{ .Values.replicas.postfix }}
|
||||
|
||||
@@ -1,331 +0,0 @@
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: "{{ .Values.global.domain }}"
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
image:
|
||||
registry: {{ .Values.global.imageRegistry | default .Values.images.opendeskKeycloakBootstrap.registry | quote }}
|
||||
repository: {{ .Values.images.opendeskKeycloakBootstrap.repository | quote }}
|
||||
tag: {{ .Values.images.opendeskKeycloakBootstrap.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||
keepPVCOnDelete: {{ .Values.cleanup.keepPVCOnDelete }}
|
||||
|
||||
config:
|
||||
keycloak:
|
||||
adminUser: "kcadmin"
|
||||
adminPassword: {{ .Values.secrets.keycloak.adminPassword | quote }}
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
intraCluster:
|
||||
enabled: true
|
||||
internalBaseUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080"
|
||||
custom:
|
||||
clientScopes:
|
||||
- name: "read_contacts"
|
||||
protocol: "openid-connect"
|
||||
- name: "write_contacts"
|
||||
protocol: "openid-connect"
|
||||
- name: "opendesk"
|
||||
protocol: "openid-connect"
|
||||
protocolMappers:
|
||||
- name: "opendesk_useruuid"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_useruuid"
|
||||
jsonType.label: "String"
|
||||
- name: "opendesk_username"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "opendesk_username"
|
||||
jsonType.label: "String"
|
||||
clients:
|
||||
- name: "opendesk-dovecot"
|
||||
clientId: "opendesk-dovecot"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.dovecot | quote }}
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: false
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- name: "opendesk-intercom"
|
||||
clientId: "opendesk-intercom"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/callback"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.revoke.offline.tokens: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/backchannel-logout"
|
||||
protocolMappers:
|
||||
- name: "intercom-audience"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-audience-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
included.client.audience: "opendesk-intercom"
|
||||
id.token.claim: false
|
||||
access.token.claim: true
|
||||
# temporary additional claim while entryuuid is a hardcoded attribute in IntercomService and we cannot set
|
||||
# it to `opendesk_useruuid` standard claim. For reference:
|
||||
# https://github.com/univention/intercom-service/blob/cd819b6ced6433e532e74a8878943d05412c1416/intercom/app.js#L89
|
||||
- name: "entryuuid_temp"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "entryUUID"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "entryuuid"
|
||||
jsonType.label: "String"
|
||||
# temporary additional claim while phoenixusername is a hardcoded attribute in IntercomService and we cannot
|
||||
# set it to `opendesk_username` standard claim. For reference:
|
||||
# https://github.com/univention/intercom-service/blob/cd819b6ced6433e532e74a8878943d05412c1416/intercom/routes/navigation.js#L27
|
||||
- name: "phoenixusername_temp"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "uid"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "phoenixusername"
|
||||
jsonType.label: "String"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "offline_access"
|
||||
- name: "opendesk-jitsi"
|
||||
clientId: "opendesk-jitsi"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.jitsi }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: true
|
||||
fullScopeAllowed: true
|
||||
authorizationServicesEnabled: false
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "profile"
|
||||
- name: "opendesk-matrix"
|
||||
clientId: "opendesk-matrix"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.matrix | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
standardFlowEnabled: true
|
||||
directAccessGrantsEnabled: true
|
||||
serviceAccountsEnabled: true
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/_synapse/client/oidc/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
optionalClientScopes:
|
||||
- "email"
|
||||
- "profile"
|
||||
# This is a temporary OIDC client for matrix, as the OIDC logout still uses "matrix" as client ID. Unless that
|
||||
# is solved and also is able to use "opendesk-matrix" we keep that dummy client that
|
||||
- name: "matrix"
|
||||
clientId: "matrix"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
standardFlowEnabled: true
|
||||
directAccessGrantsEnabled: true
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
- name: "opendesk-nextcloud"
|
||||
clientId: "opendesk-nextcloud"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.ncoidc | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/index.php/apps/user_oidc/backchannel-logout/opendesk"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
protocolMappers:
|
||||
- name: "context"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "oxContextIDNum"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "context"
|
||||
jsonType.label: "String"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "email"
|
||||
- "read_contacts"
|
||||
- "write_contacts"
|
||||
- name: "opendesk-openproject"
|
||||
clientId: "opendesk-openproject"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.openproject | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
serviceAccountsEnabled: true
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/auth/keycloak/backchannel-logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
protocolMappers:
|
||||
- name: "opendeskProjectmanagementAdmin"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "opendeskProjectmanagementAdmin"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "openproject_admin"
|
||||
jsonType.label: "String"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "email"
|
||||
- "profile"
|
||||
- name: "opendesk-oxappsuite"
|
||||
clientId: "opendesk-oxappsuite"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/ajax/oidc/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
protocolMappers:
|
||||
- name: "context"
|
||||
protocol: "openid-connect"
|
||||
protocolMapper: "oidc-usermodel-attribute-mapper"
|
||||
consentRequired: false
|
||||
config:
|
||||
userinfo.token.claim: true
|
||||
user.attribute: "oxContextIDNum"
|
||||
id.token.claim: true
|
||||
access.token.claim: true
|
||||
claim.name: "context"
|
||||
jsonType.label: "String"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "read_contacts"
|
||||
- "write_contacts"
|
||||
- name: "opendesk-xwiki"
|
||||
clientId: "opendesk-xwiki"
|
||||
protocol: "openid-connect"
|
||||
clientAuthenticatorType: "client-secret"
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.xwiki | quote }}
|
||||
redirectUris:
|
||||
- "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*"
|
||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
consentRequired: false
|
||||
frontchannelLogout: false
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
backchannel.logout.session.required: false
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/oidc/authenticator/backchannel_logout"
|
||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||
defaultClientScopes:
|
||||
- "opendesk"
|
||||
- "address"
|
||||
- "email"
|
||||
- "profile"
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
enabled: true
|
||||
privileged: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.opendeskKeycloakBootstrap | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "OnRootMismatch"
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.opendeskKeycloakBootstrap | toYaml | nindent 2 }}
|
||||
|
||||
...
|
||||
File diff suppressed because it is too large
Load Diff
29
helmfile/apps/xwiki/helmfile-child.yaml
Normal file
29
helmfile/apps/xwiki/helmfile-child.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
repositories:
|
||||
# XWiki
|
||||
# Source: https://github.com/xwiki-contrib/xwiki-helm
|
||||
- name: "xwiki-repo"
|
||||
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
|
||||
verify: {{ .Values.charts.xwiki.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/\
|
||||
{{ .Values.charts.xwiki.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "xwiki"
|
||||
chart: "xwiki-repo/{{ .Values.charts.xwiki.name }}"
|
||||
version: "{{ .Values.charts.xwiki.version }}"
|
||||
wait: true
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.xwiki.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "xwiki"
|
||||
...
|
||||
@@ -1,32 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
bases:
|
||||
- "../../bases/environments.yaml"
|
||||
---
|
||||
repositories:
|
||||
# XWiki
|
||||
# Source: https://github.com/xwiki-contrib/xwiki-helm
|
||||
- name: "xwiki-repo"
|
||||
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
|
||||
verify: {{ .Values.charts.xwiki.verify }}
|
||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||
oci: true
|
||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/\
|
||||
{{ .Values.charts.xwiki.repository }}"
|
||||
|
||||
releases:
|
||||
- name: "xwiki"
|
||||
chart: "xwiki-repo/{{ .Values.charts.xwiki.name }}"
|
||||
version: "{{ .Values.charts.xwiki.version }}"
|
||||
wait: true
|
||||
helmfiles:
|
||||
- path: "./helmfile-child.yaml"
|
||||
values:
|
||||
- "values.yaml.gotmpl"
|
||||
installed: {{ .Values.xwiki.enabled }}
|
||||
timeout: 900
|
||||
|
||||
commonLabels:
|
||||
deploy-stage: "component-1"
|
||||
component: "xwiki"
|
||||
- {{ toYaml .Values | nindent 8 }}
|
||||
...
|
||||
|
||||
@@ -55,19 +55,24 @@ customConfigs:
|
||||
xwiki.authentication.ldap.port: 389
|
||||
## Authentication to the LDAP server
|
||||
xwiki.authentication.ldap.bind_DN: "uid=ldapsearch_xwiki,cn=users,dc=swp-ldap,dc=internal"
|
||||
xwiki.authentication.ldap.bind_pass: {{ .Values.secrets.univentionManagementStack.ldapSearch.xwiki | quote }}
|
||||
xwiki.authentication.ldap.bind_pass: {{ .Values.secrets.nubus.ldapSearch.xwiki | quote }}
|
||||
## Base DN used for searching for users
|
||||
xwiki.authentication.ldap.base_DN: "dc=swp-ldap,dc=internal"
|
||||
## Allow short update cycles of the LDAP group cache
|
||||
xwiki.authentication.ldap.groupcache_expiration: 300
|
||||
## Mapping for XWiki attributes to the respective LDAP attributes
|
||||
xwiki.authentication.ldap.fields_mapping: "last_name=sn,first_name=givenName,email=mailPrimaryAddress"
|
||||
|
||||
xwiki.properties:
|
||||
wikiInitializer.initialRequest.xwiki.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/distribution/"
|
||||
wikiInitializer.initialRequest.xwiki.contextPath: "/"
|
||||
wikiInitializer.initialRequest.xwiki.remoteAddress: "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
|
||||
oidc.clientid: "opendesk-xwiki"
|
||||
oidc.endpoint.token.auth_method: "client_secret_basic"
|
||||
oidc.endpoint.userinfo.method: "GET"
|
||||
oidc.logoutMechanism: "rpInitiated"
|
||||
oidc.provider: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/opendesk"
|
||||
oidc.scope: "openid,profile,email,address,opendesk"
|
||||
oidc.scope: "openid,opendesk-xwiki-scope"
|
||||
oidc.secret: {{ .Values.secrets.keycloak.clientSecret.xwiki | quote }}
|
||||
oidc.skipped: false
|
||||
oidc.user.nameFormater: "${oidc.user.opendesk_username._clean._lowerCase}"
|
||||
@@ -78,18 +83,24 @@ customConfigs:
|
||||
# yamllint disable-line rule:line-length
|
||||
oidc.userinfoclaims: "xwiki_user_accessibility,xwiki_user_company,xwiki_user_displayHiddenDocuments,xwiki_user_editor,xwiki_user_usertype"
|
||||
url.trustedDomains: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||
workplaceServices.navigationEndpoint: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/navigation.json"
|
||||
workplaceServices.base: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||
workplaceServices.navigationEndpoint: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}/univention/portal/navigation.json"
|
||||
workplaceServices.base: "https://{{ .Values.global.hosts.nubus }}.{{ .Values.global.domain }}"
|
||||
workplaceServices.portalSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||
openoffice.serverType: "0"
|
||||
notifications.emails.live.graceTime: "5"
|
||||
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName | quote }}
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: null
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "250m"
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.xwiki }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}"
|
||||
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.xwiki }}"
|
||||
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}s"
|
||||
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}s"
|
||||
haproxy-ingress.github.io/headers: "X-Forwarded-Host {{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
|
||||
hosts:
|
||||
- host: "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
|
||||
@@ -118,10 +129,20 @@ postgresql:
|
||||
enabled: false
|
||||
|
||||
properties:
|
||||
"attachment:xwiki:FlamingoThemes.Iceberg@logo.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.logoHeaderSvg | b64enc }}"
|
||||
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.faviconSvg | b64enc }}"
|
||||
"attachment:xwiki:FlamingoThemes.Iceberg@logo.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.logoHeaderSvgB64 }}"
|
||||
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.faviconSvgB64 }}"
|
||||
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon16PngB64 }}"
|
||||
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon144PngB64 }}"
|
||||
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure": 1
|
||||
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server": "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
|
||||
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port": 443
|
||||
## SMTP settings
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from": "{{ .Values.smtp.localpartNoReply }}@{{ if .Values.functional.email.systemGenerated.useComponentInSenderdomain }}{{ .Values.global.hosts.xwiki }}.{{ end }}{{ .Values.global.domain }}"
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host": {{ .Values.smtp.host | quote }}
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port": {{ .Values.smtp.port | quote }}
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username": {{ .Values.smtp.username | quote }}
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password": {{ .Values.smtp.password | quote }}
|
||||
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties": "mail.smtp.starttls.enable=true"
|
||||
## Link LDAP users and users authenticated through OIDC
|
||||
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject": 1
|
||||
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer": "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||
@@ -146,7 +167,7 @@ properties:
|
||||
"property:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService": "oidc"
|
||||
## Fields to search in when importing users from the administration UI (not completely in scope for now)
|
||||
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes":
|
||||
"sn,givenname,uid"
|
||||
"sn,givenname,uid,mailPrimaryAddress"
|
||||
## Restrict user import in the UI to global administrators
|
||||
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport": "globalAdmin"
|
||||
## Enable group and user synchronization
|
||||
|
||||
@@ -10,15 +10,15 @@ environments:
|
||||
values:
|
||||
- "../../environments/default/*.gotmpl"
|
||||
- "../../environments/default/*.yaml"
|
||||
- "../../environments/dev/values.yaml.gotmpl"
|
||||
- "../../environments/dev/*.yaml.gotmpl"
|
||||
test:
|
||||
values:
|
||||
- "../../environments/default/*.gotmpl"
|
||||
- "../../environments/default/*.yaml"
|
||||
- "../../environments/test/values.yaml.gotmpl"
|
||||
- "../../environments/test/*.yaml.gotmpl"
|
||||
prod:
|
||||
values:
|
||||
- "../../environments/default/*.gotmpl"
|
||||
- "../../environments/default/*.yaml"
|
||||
- "../../environments/prod/values.yaml.gotmpl"
|
||||
- "../../environments/prod/*.yaml.gotmpl"
|
||||
...
|
||||
|
||||
@@ -7,389 +7,399 @@
|
||||
---
|
||||
charts:
|
||||
certificates:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-certificates/opendesk-certificates'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-certificates/opendesk-certificates"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-certificates"
|
||||
name: "opendesk-certificates"
|
||||
version: "2.2.0"
|
||||
version: "2.1.3"
|
||||
verify: true
|
||||
clamav:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-clamav/opendesk-clamav'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-clamav/opendesk-clamav"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-clamav"
|
||||
name: "opendesk-clamav"
|
||||
version: "4.0.5"
|
||||
verify: true
|
||||
clamavSimple:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-clamav/clamav-simple'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-clamav/clamav-simple"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-clamav"
|
||||
name: "clamav-simple"
|
||||
version: "4.0.5"
|
||||
verify: true
|
||||
collabora:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Collabora'
|
||||
# upstreamRegistry: 'ghcr.io/collaboraonline/charts'
|
||||
# upstreamRepository: 'collabora-online'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Collabora"
|
||||
# upstreamRegistry: "https://ghcr.io/collaboraonline/charts"
|
||||
# upstreamRepository: "collabora-online"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['1', '1', '8']
|
||||
# upstreamMirrorStartFrom: ["1", "1", "8"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/collabora/charts-mirror"
|
||||
name: "collabora-online"
|
||||
version: "1.1.11"
|
||||
version: "1.1.20"
|
||||
verify: true
|
||||
cryptpad:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'XWiki'
|
||||
# upstreamRegistry: 'ghcr.io/cryptpad/helm'
|
||||
# upstreamRepository: 'cryptpad'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "XWiki"
|
||||
# upstreamRegistry: "https://ghcr.io/cryptpad/helm"
|
||||
# upstreamRepository: "cryptpad"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['0', '0', '17']
|
||||
# upstreamMirrorStartFrom: ["0", "0", "17"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/xwiki/charts-mirror"
|
||||
name: "cryptpad"
|
||||
version: "0.0.18"
|
||||
version: "0.0.19"
|
||||
verify: true
|
||||
dovecot:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'Open-Xchange'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-dovecot/dovecot'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "Open-Xchange"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-dovecot/dovecot"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-dovecot"
|
||||
name: "dovecot"
|
||||
version: "1.3.10"
|
||||
verify: true
|
||||
element:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-element'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-element"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-element"
|
||||
version: "2.7.1"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
elementWellKnown:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-well-known'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-well-known"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-well-known"
|
||||
version: "2.7.1"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
home:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-home'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-home"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-home"
|
||||
name: "opendesk-home"
|
||||
version: "1.0.1"
|
||||
version: "1.0.2"
|
||||
verify: true
|
||||
intercomService:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Univention'
|
||||
# upstreamRegistry: 'registry.souvap-univention.de'
|
||||
# upstreamRepository: 'souvap/tooling/charts/intercom-service/intercom-service'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Univention"
|
||||
# upstreamRegistry: "https://artifacts.software-univention.de"
|
||||
# upstreamRepository: "nubus/charts/intercom-service"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['2', '0', '1']
|
||||
# upstreamMirrorStartFrom: ["2", "0", "1"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
|
||||
name: "intercom-service"
|
||||
version: "2.0.1"
|
||||
verify: true
|
||||
jitsi:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-jitsi/opendesk-jitsi'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-jitsi/opendesk-jitsi"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-jitsi"
|
||||
name: "opendesk-jitsi"
|
||||
version: "1.7.8"
|
||||
version: "1.7.9"
|
||||
verify: true
|
||||
mariadb:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-mariadb/mariadb'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-mariadb/mariadb"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-mariadb"
|
||||
name: "mariadb"
|
||||
version: "2.2.1"
|
||||
verify: true
|
||||
matrixNeoboardWidget:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neoboard-widget'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neoboard-widget"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets"
|
||||
name: "matrix-neoboard-widget"
|
||||
version: "3.5.0"
|
||||
verify: true
|
||||
matrixNeochoiseWidget:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neochoice-widget'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neochoice-widget"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets"
|
||||
name: "matrix-neochoice-widget"
|
||||
version: "3.5.0"
|
||||
verify: true
|
||||
matrixNeodatefixBot:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neodatefix-bot'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neodatefix-bot"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets"
|
||||
name: "matrix-neodatefix-bot"
|
||||
version: "3.5.0"
|
||||
verify: true
|
||||
matrixNeodatefixWidget:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neodatefix-widget'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets/matrix-neodatefix-widget"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets"
|
||||
name: "matrix-neodatefix-widget"
|
||||
version: "3.5.0"
|
||||
verify: true
|
||||
matrixUserVerificationService:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-matrix-user-verification-service'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-matrix-user-verification-service"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-matrix-user-verification-service"
|
||||
version: "2.7.1"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
memcached:
|
||||
# providerCategory: 'Community'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry-1.docker.io'
|
||||
# upstreamRepository: 'bitnamicharts/memcached'
|
||||
# providerCategory: "Community"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry-1.docker.io"
|
||||
# upstreamRepository: "bitnamicharts/memcached"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/external/charts/bitnami-charts"
|
||||
name: "memcached"
|
||||
version: "6.7.1"
|
||||
verify: true
|
||||
migrations:
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-migrations"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-migrations"
|
||||
name: "opendesk-migrations"
|
||||
version: "1.2.1"
|
||||
verify: true
|
||||
minio:
|
||||
# providerCategory: 'Community'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry-1.docker.io'
|
||||
# upstreamRepository: 'bitnamicharts/minio'
|
||||
# providerCategory: "Community"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry-1.docker.io"
|
||||
# upstreamRepository: "bitnamicharts/minio"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/external/charts/bitnami-charts"
|
||||
name: "minio"
|
||||
version: "12.10.11"
|
||||
verify: true
|
||||
nextcloud:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-nextcloud/opendesk-nextcloud'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud/opendesk-nextcloud"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
|
||||
name: "opendesk-nextcloud"
|
||||
version: "1.5.2"
|
||||
version: "3.0.0"
|
||||
verify: true
|
||||
nextcloudManagement:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# packageName=bmi/opendesk/components/platform-development/charts/opendesk-nextcloud/opendesk-nextcloud-management
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
|
||||
name: "opendesk-nextcloud-management"
|
||||
version: "1.5.2"
|
||||
version: "3.0.0"
|
||||
verify: true
|
||||
nginx:
|
||||
# providerCategory: 'Community'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry-1.docker.io'
|
||||
# upstreamRepository: 'bitnamicharts/nginx'
|
||||
# providerCategory: "Community"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry-1.docker.io"
|
||||
# upstreamRepository: "bitnamicharts/nginx"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/external/charts/bitnami-charts"
|
||||
name: "nginx"
|
||||
version: "15.9.3"
|
||||
verify: true
|
||||
nubus:
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Univention"
|
||||
# upstreamRegistry: "https://artifacts.software-univention.de"
|
||||
# upstreamRepository: "nubus/charts/nubus"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ["0", "19", "3"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
|
||||
name: "nubus"
|
||||
version: "0.33.0"
|
||||
verify: true
|
||||
opendeskKeycloakBootstrap:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap/opendesk-keycloak-bootstrap'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap/opendesk-keycloak-bootstrap"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap"
|
||||
name: "opendesk-keycloak-bootstrap"
|
||||
version: "1.0.7"
|
||||
version: "2.1.1"
|
||||
verify: true
|
||||
openproject:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'openProject'
|
||||
# upstreamRegistry: 'ghcr.io'
|
||||
# upstreamRepository: 'opf/helm-charts/openproject'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "openProject"
|
||||
# upstreamRegistry: "https://ghcr.io"
|
||||
# upstreamRepository: "opf/helm-charts/openproject"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['3', '0', '2']
|
||||
# upstreamMirrorStartFrom: ["3", "0", "2"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/openproject/charts-mirror"
|
||||
name: "openproject"
|
||||
version: "4.2.1"
|
||||
version: "7.0.0"
|
||||
verify: true
|
||||
openprojectBootstrap:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap/opendesk-openproject-bootstrap'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap/opendesk-openproject-bootstrap"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap"
|
||||
name: "opendesk-openproject-bootstrap"
|
||||
version: "1.3.0"
|
||||
verify: true
|
||||
openXchangeAppSuite:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Open-Xchange'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Open-Xchange"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['2', '2', '37']
|
||||
# upstreamRegistry: 'registry.open-xchange.com'
|
||||
# upstreamRepository: 'appsuite-public-sector/charts/appsuite-public-sector'
|
||||
# upstreamMirrorStartFrom: ["2", "2", "37"]
|
||||
# upstreamRegistry: "https://registry.open-xchange.com"
|
||||
# upstreamRepository: "appsuite-public-sector/charts/appsuite-public-sector"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/open-xchange/charts-mirror"
|
||||
name: "appsuite-public-sector"
|
||||
version: "2.5.3"
|
||||
version: "2.8.78"
|
||||
verify: false
|
||||
openXchangeAppSuiteBootstrap:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap/opendesk-open-xchange-bootstrap'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap/opendesk-open-xchange-bootstrap"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap"
|
||||
name: "opendesk-open-xchange-bootstrap"
|
||||
version: "1.3.4"
|
||||
verify: true
|
||||
otterize:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-otterize/opendesk-otterize'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-otterize/opendesk-otterize"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-otterize"
|
||||
name: "opendesk-otterize"
|
||||
version: "2.0.1"
|
||||
version: "2.1.0"
|
||||
verify: true
|
||||
oxConnector:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Univention'
|
||||
# upstreamRegistry: 'registry.souvap-univention.de'
|
||||
# upstreamRepository: 'souvap/tooling/charts/univention/ox-connector'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "Univention"
|
||||
# upstreamRegistry: "https://artifacts.software-univention.de"
|
||||
# upstreamRepository: "nubus/charts/ox-connector"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['0', '4', '2']
|
||||
# upstreamMirrorStartFrom: ["0", "4", "2"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
|
||||
name: "ox-connector"
|
||||
version: "0.4.2"
|
||||
verify: true
|
||||
postfix:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-postfix/postfix'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-postfix/postfix"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-postfix"
|
||||
name: "postfix"
|
||||
version: "2.0.5"
|
||||
version: "2.2.0"
|
||||
verify: true
|
||||
postgresql:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-postgresql/postgresql'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-postgresql/postgresql"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-postgresql"
|
||||
name: "postgresql"
|
||||
version: "2.0.5"
|
||||
verify: true
|
||||
redis:
|
||||
# providerCategory: 'Community'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry-1.docker.io'
|
||||
# upstreamRepository: 'bitnamicharts/redis'
|
||||
# providerCategory: "Community"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry-1.docker.io"
|
||||
# upstreamRepository: "bitnamicharts/redis"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/external/charts/bitnami-charts"
|
||||
name: "redis"
|
||||
version: "18.6.1"
|
||||
verify: true
|
||||
synapse:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-synapse"
|
||||
version: "2.7.1"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
synapseCreateAccount:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse-create-account'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse-create-account"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-synapse-create-account"
|
||||
version: "2.7.1"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
synapseWeb:
|
||||
# providerCategory: 'Platform'
|
||||
# providerResponsible: 'openDesk'
|
||||
# upstreamRegistry: 'registry.opencode.de'
|
||||
# upstreamRepository: 'bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse-web'
|
||||
# providerCategory: "Platform"
|
||||
# providerResponsible: "openDesk"
|
||||
# upstreamRegistry: "https://registry.opencode.de"
|
||||
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-synapse-web"
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
|
||||
name: "opendesk-synapse-web"
|
||||
version: "2.7.1"
|
||||
verify: true
|
||||
ums:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'Univention'
|
||||
# upstreamRegistry: 'registry.souvap-univention.de'
|
||||
# upstreamRepository: 'souvap/tooling/charts/univention/ums'
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['0', '0', '1']
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
|
||||
name: "ums"
|
||||
version: "0.13.0"
|
||||
version: "3.3.0"
|
||||
verify: true
|
||||
xwiki:
|
||||
# providerCategory: 'Supplier'
|
||||
# providerResponsible: 'XWiki'
|
||||
# upstreamRegistry: 'git.xwikisas.com:5050/xwikisas/swp/xwiki/contrib-xwiki-helm'
|
||||
# upstreamRepository: 'xwiki'
|
||||
# providerCategory: "Supplier"
|
||||
# providerResponsible: "XWiki"
|
||||
# upstreamRegistry: "https://git.xwikisas.com:5050/xwikisas/swp/xwiki/contrib-xwiki-helm"
|
||||
# upstreamRepository: "xwiki"
|
||||
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
|
||||
# upstreamMirrorStartFrom: ['1', '2', '4']
|
||||
# upstreamMirrorStartFrom: ["1", "2", "4"]
|
||||
registry: "registry.opencode.de"
|
||||
repository: "bmi/opendesk/components/supplier/xwiki/charts-mirror"
|
||||
name: "xwiki"
|
||||
version: "1.3.0"
|
||||
version: "1.3.1"
|
||||
verify: false
|
||||
...
|
||||
|
||||
@@ -15,13 +15,17 @@ cluster:
|
||||
networking:
|
||||
# Kubernetes internal cluster domain.
|
||||
domain: "cluster.local"
|
||||
# Kubernetes cluster network CIDR.
|
||||
cidr: "10.0.0.0/8"
|
||||
# Kubernetes cluster network CIDRs.
|
||||
cidr:
|
||||
- "10.0.0.0/8"
|
||||
# IP addresses or IP ranges of the reverse proxy / load balancer to restrict the requesting source
|
||||
# for defined services.
|
||||
incomingCIDR: []
|
||||
# Ingress-gateway IP - only relevant for "NodePort" cluster services.
|
||||
# When ingress and egress gateway use different ips, which results that pods can't self-discover their incoming ip,
|
||||
# you need to provide the public (load-balanced) ingress gateways ip address.
|
||||
ingressGatewayIP: ""
|
||||
# LoadBalancer status fiel - only relevant for "LoadBalancer" cluster services.
|
||||
# LoadBalancer status field - only relevant for "LoadBalancer" cluster services.
|
||||
# The IP/DNS of your load-balancer will be fetched for some components from 'status' map of services.
|
||||
# Most providers use '.status.loadBalancer.ingress[0].ip' to store public ip. You can modify the chosen field here.
|
||||
loadBalancerStatusField: "ip"
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
cleanup:
|
||||
# Keep Pods/Job logs after successful run.
|
||||
deletePodsOnSuccess: true
|
||||
# When deletePodsOnSuccess is enabled, the pod will be deleted after configured seconds.
|
||||
deletePodsOnSuccessTimeout: 60
|
||||
# Keep persistence on deletion of this release.
|
||||
keepPVCOnDelete: false
|
||||
# Keep additional resources, like certificates on deletion of this release.
|
||||
keepRessourceOnDelete: true
|
||||
debug:
|
||||
cleanup:
|
||||
# Keep Pods/Job logs after successful run.
|
||||
deletePodsOnSuccess: true
|
||||
# When deletePodsOnSuccess is enabled, the pod will be deleted after configured seconds.
|
||||
deletePodsOnSuccessTimeout: 60
|
||||
# Keep persistence on deletion of this release.
|
||||
keepPVCOnDelete: false
|
||||
# Keep additional resources, like certificates on deletion of this release.
|
||||
keepRessourceOnDelete: true
|
||||
# should activate debug output in all components and even allow e.g. successfully executed jobs
|
||||
# to stay available. This is going to be implemented on a case by case basis when we actually
|
||||
# need debugging in a component.
|
||||
|
||||
9
helmfile/environments/default/enterprise.yaml
Normal file
9
helmfile/environments/default/enterprise.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# The variables set in this file are required to upgrade components to their "Enterprise" product variant.
|
||||
---
|
||||
enterprise:
|
||||
openproject:
|
||||
# Enterprise token must match the deployment's OpenProject host name.
|
||||
token: ""
|
||||
...
|
||||
60
helmfile/environments/default/functional.yaml
Normal file
60
helmfile/environments/default/functional.yaml
Normal file
@@ -0,0 +1,60 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
functional:
|
||||
admin:
|
||||
portal:
|
||||
deploymentInformation:
|
||||
# Disable to not provide and update openDesk release version and deployment timestamp for admins in the portal.
|
||||
enabled: true
|
||||
|
||||
authentication:
|
||||
twoFactor:
|
||||
# Define a list of groups to enable 2FA for.
|
||||
# Note: Removing a group from the list will not disable 2FA for the removed group.
|
||||
groups:
|
||||
- "Domain Admins"
|
||||
oidc:
|
||||
# Define additional/custom OIDC clients to be created in the 'opendesk' realm of Keycloak.
|
||||
clients: ~
|
||||
# Define additional/custom OIDC client scopes to be created in the 'opendesk' realm of Keycloak.
|
||||
clientScopes: ~
|
||||
|
||||
externalServices:
|
||||
nubus:
|
||||
udmRestApi:
|
||||
# Enable to make the UDM REST API from the Nubus stack externally available.
|
||||
enabled: false
|
||||
matrix:
|
||||
federation:
|
||||
# Disable to not support Matrix federation with your installation.
|
||||
enabled: true
|
||||
|
||||
email:
|
||||
systemGenerated:
|
||||
# By disabling all mails are sent from @<domain> instead of @<component>.<domain>.
|
||||
useComponentInSenderdomain: true
|
||||
|
||||
filestore:
|
||||
quota:
|
||||
# Set the default quota for all users in GB
|
||||
default: 1
|
||||
# Nextcloud specific configuration
|
||||
nextcloud:
|
||||
retentionObligation:
|
||||
# yamllint disable rule:line-length
|
||||
# Set Nextcloud's `trashbin_retention_obligation`
|
||||
# Ref.: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#trashbin-retention-obligation
|
||||
trashbin: "auto"
|
||||
# Set Nextcloud's `versions_retention_obligation`
|
||||
# Ref.: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#versions-retention-obligation
|
||||
versions: "auto"
|
||||
# yamllint enable rule:line-length
|
||||
|
||||
dataProtection:
|
||||
matrixPresence:
|
||||
# Enable to allow information about the user presence status to be shared.
|
||||
# Ref.: https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#presence
|
||||
enabled: false
|
||||
|
||||
...
|
||||
@@ -3,5 +3,5 @@
|
||||
---
|
||||
global:
|
||||
systemInformation:
|
||||
releaseVersion: "v0.7.0"
|
||||
releaseVersion: "v0.9.1"
|
||||
...
|
||||
|
||||
@@ -23,4 +23,39 @@ global:
|
||||
#
|
||||
helmRegistry: {{ env "PRIVATE_HELM_REGISTRY_URL" | quote }}
|
||||
imageRegistry: {{ env "PRIVATE_IMAGE_REGISTRY_URL" | quote }}
|
||||
|
||||
## Define ingress/virtualservice host.
|
||||
#
|
||||
hosts:
|
||||
collabora: "collabora"
|
||||
cryptpad: "cryptpad"
|
||||
element: "chat"
|
||||
intercomService: "ics"
|
||||
jitsi: "meet"
|
||||
keycloak: "id"
|
||||
matrixNeoBoardWidget: "matrix-neoboard-widget"
|
||||
matrixNeoChoiceWidget: "matrix-neochoice-widget"
|
||||
matrixNeoDateFixBot: "matrix-neodatefix-bot"
|
||||
matrixNeoDateFixWidget: "matrix-neodatefix-widget"
|
||||
minioApi: "minio"
|
||||
minioConsole: "minio-console"
|
||||
nextcloud: "fs"
|
||||
nubus: "portal"
|
||||
openproject: "project"
|
||||
openxchange: "webmail"
|
||||
synapse: "matrix"
|
||||
synapseFederation: "matrix-federation"
|
||||
whiteboard: "whiteboard"
|
||||
xwiki: "wiki"
|
||||
|
||||
## Credentials to fetch images from private registry
|
||||
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
#
|
||||
imagePullSecrets:
|
||||
- "external-registry"
|
||||
|
||||
## Define the policy to pull container images.
|
||||
## Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
|
||||
#
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
...
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
## The global properties are used to configure multiple charts at once.
|
||||
#
|
||||
global:
|
||||
## Define ingress/virtualservice host.
|
||||
#
|
||||
hosts:
|
||||
collabora: "collabora"
|
||||
cryptpad: "cryptpad"
|
||||
element: "chat"
|
||||
intercomService: "ics"
|
||||
jitsi: "meet"
|
||||
keycloak: "id"
|
||||
matrixNeoBoardWidget: "matrix-neoboard-widget"
|
||||
matrixNeoChoiceWidget: "matrix-neochoice-widget"
|
||||
matrixNeoDateFixBot: "matrix-neodatefix-bot"
|
||||
matrixNeoDateFixWidget: "matrix-neodatefix-widget"
|
||||
minioApi: "minio"
|
||||
minioConsole: "minio-console"
|
||||
nextcloud: "fs"
|
||||
openproject: "project"
|
||||
openxchange: "webmail"
|
||||
openxchangeProvisioning: "ox-provisioning"
|
||||
synapse: "matrix"
|
||||
univentionManagementStack: "portal"
|
||||
whiteboard: "whiteboard"
|
||||
xwiki: "wiki"
|
||||
|
||||
## Credentials to fetch images from private registry
|
||||
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
#
|
||||
imagePullSecrets:
|
||||
- "external-registry"
|
||||
|
||||
## Define the policy to pull container images.
|
||||
## Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
|
||||
#
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
...
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user