Compare commits
12 Commits
lender/fea
...
feat/dovec
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7e28b064e | ||
|
|
a5f9b01ca0 | ||
|
|
1f2d42ea48 | ||
|
|
91882b22e5 | ||
|
|
d444d24489 | ||
|
|
c1f19131d9 | ||
|
|
61ea6bdd44 | ||
|
|
ffe3daa506 | ||
|
|
76a8e03acf | ||
|
|
97cb914f18 | ||
|
|
0c92d1681c | ||
|
|
f6aeffb189 |
188
.gitlab-ci.yml
@@ -4,7 +4,7 @@
|
||||
---
|
||||
include:
|
||||
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
|
||||
ref: "v2.4.10"
|
||||
ref: "v2.4.8"
|
||||
file:
|
||||
- "ci/common/lint.yml"
|
||||
- "ci/release-automation/semantic-release.yml"
|
||||
@@ -80,15 +80,6 @@ variables:
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
FLUSH_EXTERNAL_SERVICES_TYPE:
|
||||
description: >
|
||||
Select the type of external services (e.g. "RUN", or "STACKIT"), as they require different
|
||||
cleanup strategies. Requires `FLUSH_EXTERNAL_SERVICES_BEFORE=yes` and `ENV_STOP_BEFORE=yes`.
|
||||
value: "CHANGE ME"
|
||||
options:
|
||||
- "RUN"
|
||||
- "STACKIT"
|
||||
- "CHANGE ME"
|
||||
DEBUG_ENABLED:
|
||||
description: >
|
||||
Allows to set `debug.enabled` to true for a deployment, needs to be supported by stage specific
|
||||
@@ -191,9 +182,6 @@ variables:
|
||||
options:
|
||||
- "yes"
|
||||
- "no"
|
||||
DIFF_ON_BRANCH:
|
||||
description: "Provide a branch to run `helmfile diff` for the specified branch."
|
||||
value: ""
|
||||
RUN_TESTS:
|
||||
description: "Triggers execution of E2E-tests."
|
||||
value: "no"
|
||||
@@ -232,9 +220,6 @@ variables:
|
||||
TESTS_PROJECT_URL:
|
||||
description: "Project url for e2e-tests (`<domain of gitlab>/api/v4/projects/<id>`)"
|
||||
value: "gitlab.opencode.de/api/v4/projects/1506"
|
||||
HELM_IMAGE_PIN:
|
||||
description: "The Helm image tag/checksum."
|
||||
value: "1.3.3@sha256:3e195942e6988b8b93c62349700c0ed8428e3a8fbe2655bd7f5378dc88bc8ccb"
|
||||
|
||||
# Declare .environments which is in `opendesk-env` repository. In case it is not available
|
||||
# 'cache' is used because job as a dummy key, as the job is not allowed to be empty.
|
||||
@@ -247,7 +232,8 @@ variables:
|
||||
extends: ".environments"
|
||||
environment:
|
||||
name: "${NAMESPACE}"
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:${HELM_IMAGE_PIN}"
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:1.1.0\
|
||||
@sha256:74f349066ac5d20e3afaa6abd28781b4c8dc086f67e3d3c1b8345e4a9c3371b1"
|
||||
script:
|
||||
- "cd ${CI_PROJECT_DIR}/helmfile/apps/${COMPONENT}"
|
||||
# MASTER_PASSWORD_WEB_VAR as precedence for MASTER_PASSWORD
|
||||
@@ -281,77 +267,53 @@ db-cleanup:
|
||||
when: "on_success"
|
||||
script:
|
||||
# yamllint disable-line rule:line-length rule:quoted-strings
|
||||
- |
|
||||
echo "Checking FLUSH_EXTERNAL_SERVICES_TYPE value..."
|
||||
case "$FLUSH_EXTERNAL_SERVICES_TYPE" in
|
||||
"RUN")
|
||||
echo " ... running flush procedure for RUN cluster."
|
||||
;;
|
||||
"STACKIT")
|
||||
echo " ... running flush procedure for STACKIT provider."
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: FLUSH_EXTERNAL_SERVICES_TYPE is not set to valid value."
|
||||
echo " Expected 'RUN' or 'STACKIT', got ${FLUSH_EXTERNAL_SERVICES_TYPE}."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
# First: Gather all files that contain the "database:" keyword in the default environment
|
||||
- |
|
||||
export FILES="$(grep -r 'databases:' "${CI_PROJECT_DIR}/helmfile/environments/default" |
|
||||
awk -F ':' '{print $1}')"
|
||||
# Second: Gather all files that contain the "database:" keyword in the dev environment
|
||||
# where the adjustments from opendesk-env are placed
|
||||
- |
|
||||
export FILES="${FILES} $(grep -r 'databases:' "${CI_PROJECT_DIR}/helmfile/environments/dev" |
|
||||
awk -F ':' '{print $1}')"
|
||||
- "echo \"${FILES[@]}\""
|
||||
- export FILES=(${CI_PROJECT_DIR}/helmfile/environments/default/database.yaml.gotmpl ${CI_PROJECT_DIR}/helmfile/environments/dev/write-over-values-for-environment.yaml.gotmpl)
|
||||
# Cleanup MariaDB
|
||||
- "export MARIADB_HOST=\"\""
|
||||
- "export MARIADB_PORT=\"\""
|
||||
- "export MARIADB_USERNAME=\"\""
|
||||
- "export MARIADB_PASSWORD=\"\""
|
||||
- "export ENV_DATABASE=\"oxAppSuite\""
|
||||
- |
|
||||
export DATABASES="oxAppSuite"
|
||||
export MARIADB_HOST=""
|
||||
export MARIADB_PORT=""
|
||||
export MARIADB_USERNAME=""
|
||||
export MARIADB_PASSWORD=""
|
||||
|
||||
for DATABASE in $DATABASES; do
|
||||
export ENV_DATABASE=${DATABASE}
|
||||
|
||||
# Parse cluster values
|
||||
- |
|
||||
for FILE in ${FILES[@]}; do
|
||||
if [ -f "${FILE}" ]; then
|
||||
if [[ $(tail -n +1 "${FILE}" | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
|
||||
MARIADB_DATABASE=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].name')
|
||||
MARIADB_USERNAME=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].username')
|
||||
MARIADB_PASSWORD=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].password')
|
||||
MARIADB_HOST=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].host')
|
||||
MARIADB_PORT=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].port')
|
||||
if [ -f ${FILE} ]; then
|
||||
if [[ $(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
|
||||
MARIADB_DATABASE=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].name')
|
||||
MARIADB_USERNAME=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].username')
|
||||
MARIADB_PASSWORD=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].password')
|
||||
MARIADB_HOST=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].host')
|
||||
MARIADB_PORT=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].port')
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
|
||||
- |
|
||||
export CONNECTION=(
|
||||
"--host=${MARIADB_HOST}"
|
||||
"--port=${MARIADB_PORT}"
|
||||
"--user=${MARIADB_USERNAME}"
|
||||
"--password=${MARIADB_PASSWORD}"
|
||||
"--skip-ssl"
|
||||
)
|
||||
CONNECTION="--host=${MARIADB_HOST} \
|
||||
--port=${MARIADB_PORT} \
|
||||
--user=${MARIADB_USERNAME} \
|
||||
--password=${MARIADB_PASSWORD} \
|
||||
--skip-ssl"
|
||||
|
||||
- "echo \"[mysql] [${ENV_DATABASE}] DROP ${MARIADB_DATABASE} on ${MARIADB_HOST}\""
|
||||
- "mariadb ${CONNECTION[@]} -e \"DROP DATABASE IF EXISTS ${MARIADB_DATABASE};\""
|
||||
echo "[mysql] [${ENV_DATABASE}] DROP ${MARIADB_DATABASE} on ${MARIADB_HOST}"
|
||||
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS ${MARIADB_DATABASE};"
|
||||
|
||||
- |
|
||||
if [ "${ENV_DATABASE}" = "oxAppSuite" ]; then
|
||||
echo "[mysql] [${ENV_DATABASE}] DROP oxguard on ${MARIADB_HOST}"
|
||||
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS oxguard;"
|
||||
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS oxguard;"
|
||||
echo "[mysql] [${ENV_DATABASE}] DROP oxguard_1 on ${MARIADB_HOST}"
|
||||
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS oxguard_1;"
|
||||
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS oxguard_1;"
|
||||
echo "[mysql] [${ENV_DATABASE}] DROP PRIMARYDB_9 on ${MARIADB_HOST}"
|
||||
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS PRIMARYDB_9;"
|
||||
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS PRIMARYDB_9;"
|
||||
else
|
||||
mariadb ${CONNECTION[@]} -e "CREATE DATABASE ${MARIADB_DATABASE};"
|
||||
mariadb ${CONNECTION[@]} -e "GRANT ALL PRIVILEGES ON ${MARIADB_DATABASE}.* TO ${MARIADB_USERNAME}@\"%\";"
|
||||
mariadb ${CONNECTION[@]} -e "FLUSH PRIVILEGES;"
|
||||
mariadb ${CONNECTION} -e "CREATE DATABASE ${MARIADB_DATABASE};"
|
||||
mariadb ${CONNECTION} -e "GRANT ALL PRIVILEGES ON ${MARIADB_DATABASE}.* TO ${MARIADB_USERNAME}@\"%\";"
|
||||
mariadb ${CONNECTION} -e "FLUSH PRIVILEGES;"
|
||||
fi;
|
||||
done;
|
||||
# Cleanup PostgreSQL
|
||||
- |
|
||||
export DATABASES="keycloak keycloakExtension nextcloud notes openproject synapse umsGuardianManagementApi \
|
||||
@@ -369,27 +331,17 @@ db-cleanup:
|
||||
# Parse cluster values
|
||||
for FILE in ${FILES[@]}; do
|
||||
if [ -f $FILE ]; then
|
||||
if [[ $(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
|
||||
POSTGRES_DATABASE=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].name')
|
||||
PGUSER=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].username')
|
||||
PGPASSWORD=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].password')
|
||||
PGHOST=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].host')
|
||||
PGPORT=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].port')
|
||||
PGPARAMS=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].parameters')
|
||||
if [[ $(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
|
||||
POSTGRES_DATABASE=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].name')
|
||||
PGUSER=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].username')
|
||||
PGPASSWORD=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].password')
|
||||
PGHOST=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].host')
|
||||
PGPORT=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].port')
|
||||
PGPARAMS=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].parameters')
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
|
||||
|
||||
case "$FLUSH_EXTERNAL_SERVICES_TYPE" in
|
||||
"STACKIT")
|
||||
# In case of STACKIT resources the db content should just be dropped
|
||||
echo "[psql] [${ENV_DATABASE}] DROP OWNED BY ${PGUSER} in ${POSTGRES_DATABASE} on ${PGHOST}"
|
||||
PGDATABASE=${POSTGRES_DATABASE} # env var PGDATABASE is interpreted by psql
|
||||
psql -c "DROP OWNED BY ${PGUSER};" || true;
|
||||
;;
|
||||
"RUN")
|
||||
# Usually, e.g. in "RUN" cluster, databases can simply be dropped and recreated
|
||||
echo "[psql] [${ENV_DATABASE}] DROP ${POSTGRES_DATABASE} on ${PGHOST}"
|
||||
psql -c "DROP DATABASE ${POSTGRES_DATABASE}" || true;
|
||||
if [ "${PGPARAMS}" = "null" ]; then
|
||||
@@ -399,12 +351,10 @@ db-cleanup:
|
||||
fi;
|
||||
psql -c "ALTER DATABASE \"${POSTGRES_DATABASE}\" OWNER TO \"${PGUSER}\"";
|
||||
psql -c "GRANT ALL PRIVILEGES ON DATABASE \"${POSTGRES_DATABASE}\" TO \"${PGUSER}\"";
|
||||
;;
|
||||
esac
|
||||
done;
|
||||
# Cleanup Objectstore
|
||||
- |
|
||||
export BUCKETS="migrations nextcloud openproject nubus notes openxchange dovecot"
|
||||
export BUCKETS="migrations nextcloud openproject nubus notes"
|
||||
export AWS_DEFAULT_REGION=""
|
||||
export AWS_ENDPOINT=""
|
||||
export AWS_ACCESS_KEY_ID=""
|
||||
@@ -416,12 +366,12 @@ db-cleanup:
|
||||
# Parse cluster values
|
||||
for FILE in ${FILES[@]}; do
|
||||
if [ -f $FILE ]; then
|
||||
if [[ $(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)]') != "null" ]]; then
|
||||
AWS_BUCKET=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].bucket')
|
||||
AWS_ENDPOINT=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].endpoint')
|
||||
AWS_ACCESS_KEY_ID=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].username')
|
||||
AWS_SECRET_ACCESS_KEY=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].secretKey')
|
||||
AWS_DEFAULT_REGION=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].region')
|
||||
if [[ $(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)]') != "null" ]]; then
|
||||
AWS_BUCKET=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].bucket')
|
||||
AWS_ENDPOINT=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].endpoint')
|
||||
AWS_ACCESS_KEY_ID=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].username')
|
||||
AWS_SECRET_ACCESS_KEY=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].secretKey')
|
||||
AWS_DEFAULT_REGION=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].region')
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
@@ -440,7 +390,6 @@ env-cleanup:
|
||||
when: "on_success"
|
||||
script:
|
||||
- |
|
||||
echo "Cleaning up ${NAMESPACE}"
|
||||
if [ "${OPENDESK_SLEDGEHAMMER_DESTROY_ENABLED}" = "yes" ]; then
|
||||
for OPENDESK_RELEASE in $(helm ls -n ${NAMESPACE} -aq); do
|
||||
helm uninstall -n ${NAMESPACE} ${OPENDESK_RELEASE};
|
||||
@@ -722,35 +671,6 @@ fetch-administrator-credentials:
|
||||
reports:
|
||||
dotenv: ".env"
|
||||
|
||||
diff-on-branch:
|
||||
stage: "post-execute"
|
||||
cache: {}
|
||||
dependencies: []
|
||||
extends: ".environments"
|
||||
environment:
|
||||
name: "${NAMESPACE}"
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:${HELM_IMAGE_PIN}"
|
||||
rules:
|
||||
- if: "$DIFF_ON_BRANCH"
|
||||
script:
|
||||
- |
|
||||
echo "Downloading branch ${DIFF_ON_BRANCH}"
|
||||
SAFE_BRANCH_NAME=$(echo "$DIFF_ON_BRANCH" | tr '/' '-')
|
||||
BASE_URL="https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/archive"
|
||||
FILE_NAME="opendesk-${SAFE_BRANCH_NAME}.tar.gz"
|
||||
curl -L "${BASE_URL}/${DIFF_ON_BRANCH}/${FILE_NAME}" -o branch.tar.gz
|
||||
mkdir ${DIFF_ON_BRANCH_SUBDIRECTORY} &&
|
||||
tar -xzf branch.tar.gz -C ${DIFF_ON_BRANCH_SUBDIRECTORY} --strip-components=1
|
||||
cd ${DIFF_ON_BRANCH_SUBDIRECTORY}
|
||||
helmfile --namespace ${NAMESPACE} diff | grep -v '^ ' || true
|
||||
tags:
|
||||
- "docker"
|
||||
- "kubernetes"
|
||||
- "${CLUSTER}"
|
||||
variables:
|
||||
HELMFILE_ENVIRONMENT: "dev"
|
||||
DIFF_ON_BRANCH_SUBDIRECTORY: "diff-on-branch"
|
||||
|
||||
import-default-accounts:
|
||||
stage: "post-execute"
|
||||
extends: ".environments"
|
||||
@@ -776,7 +696,6 @@ import-default-accounts:
|
||||
--admin_enable_knowledgemanagement True \
|
||||
--admin_enable_projectmanagement True \
|
||||
--create_admin_accounts True \
|
||||
--create_maildomains True \
|
||||
--verify_certificate False
|
||||
|
||||
run-tests:
|
||||
@@ -850,17 +769,6 @@ avscan-prepare:
|
||||
stage: "scan"
|
||||
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/clamav-imagescan:1.0.0"
|
||||
before_script:
|
||||
- "mkdir -p ~/.docker"
|
||||
- |
|
||||
cat << EOF > ~/.docker/config.json
|
||||
{
|
||||
"auths": {
|
||||
"$CI_REGISTRY": {
|
||||
"auth": "$(printf %s:%s ${CI_REGISTRY_USER} ${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')"
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
- "sed -i \"/^DatabaseMirror .*$/c DatabaseMirror ${DATABASE_MIRROR}\" /etc/clamav/freshclam.conf"
|
||||
- "freshclam"
|
||||
- "mkdir /scan"
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
# 🪲 Bugfix
|
||||
|
||||
*Expected MR Title and git commit message*
|
||||
*`fix(<app-name>): <Short description of what has been fixed>`*
|
||||
|
||||
|
||||
## ✅ Changes
|
||||
|
||||
Explain for the reviewer how the change addresses the issue, providing some insights on the underlaying cause of the bug.
|
||||
|
||||
- ...
|
||||
|
||||
## 🧪 How to reproduce & test
|
||||
|
||||
Provida a link to the issue or document the required details below.
|
||||
In case it is a GitLab issue, reference it at the end of the commit message in square brackets, like `[#123]`
|
||||
|
||||
### Before the Fix
|
||||
|
||||
1. ...
|
||||
|
||||
### After the Fix
|
||||
|
||||
Provide steps for QA or reviewers to test the fix and mention anything reviewers should be aware of:
|
||||
|
||||
1. ...
|
||||
|
||||
## 🔄 Requirements for migrations
|
||||
|
||||
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
|
||||
- [ ] Any other considerations in context of the update:
|
||||
|
||||
# Checklist / Sign-offs
|
||||
|
||||
## 🏷️ Labels
|
||||
|
||||
Set labels:
|
||||
|
||||
```
|
||||
/label ~"MR-Type::Bugfix"
|
||||
/label ~"PO::👀"
|
||||
/label ~"Tech Lead::👀"
|
||||
/label ~"QA::👀"
|
||||
/label ~"Testautomation::👀"
|
||||
```
|
||||
|
||||
# 👷 Developer Checklist
|
||||
|
||||
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
|
||||
- [ ] No.
|
||||
- [ ] Yes, and the documentation was updated accordingly.
|
||||
|
||||
Document in an extra comment and link to that comment:
|
||||
- [ ] How you verified the fix is working as expected, also in upgrade scenarios.
|
||||
- [ ] Any regression testing done.
|
||||
|
||||
--> Link to comment:
|
||||
@@ -1,8 +1,16 @@
|
||||
Thank you for your contribution!
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
Please follow these simple guidelines to continue:
|
||||
# Summary
|
||||
|
||||
- Create MRs early and use the "draft" state to show that this MR isn't ready for review and merge.
|
||||
- Flag the MR "ready" as soon as it can be reviewed and QA'd.
|
||||
- Always assign the MR to yourself and set somebody from the development team as reviewer. If you do not know whom to chose leave the reviewer empty.
|
||||
- Select one of the templates in case your contribution contains more than simple documentation updates and follow the templates instructions.
|
||||
- *describe the reason for/content of the MR*
|
||||
|
||||
# Commits
|
||||
|
||||
%{all_commits}
|
||||
|
||||
# Authors
|
||||
|
||||
%{co_authored_by}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
# ⬆️ Feature
|
||||
|
||||
*Expected MR Title and git commit message*
|
||||
*`feat(<app-name>): <Short description of the new feature>`*
|
||||
|
||||
## ✅ Changes
|
||||
|
||||
List the key changes made in this MR:
|
||||
|
||||
- ...
|
||||
|
||||
## 🧪 Tests
|
||||
|
||||
Provide steps for QA or reviewers to test the feature and mention anything reviewers should be aware of:
|
||||
|
||||
- ...
|
||||
|
||||
## 🔄 Requirements for migrations
|
||||
|
||||
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
|
||||
- [ ] Any other considerations in context of the update:
|
||||
|
||||
# Checklist / Sign-offs
|
||||
|
||||
## 🏷️ Labels
|
||||
|
||||
Set labels:
|
||||
|
||||
```
|
||||
/label ~"MR-Type::Feature"
|
||||
/label ~"PO::👀"
|
||||
/label ~"Tech Lead::👀"
|
||||
/label ~"QA::👀"
|
||||
/label ~"Testautomation::👀"
|
||||
```
|
||||
|
||||
# 👷 Developer Checklist
|
||||
|
||||
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
|
||||
- [ ] No.
|
||||
- [ ] Yes, and the documentation was updated accordingly.
|
||||
|
||||
Document in an extra comment and link to that comment:
|
||||
- [ ] How you verified the feature is working as expected, also in upgrade scenarios.
|
||||
- [ ] Any regression testing done.
|
||||
|
||||
--> Link to comment:
|
||||
@@ -1,41 +0,0 @@
|
||||
# 🎉 Other
|
||||
|
||||
*Expected MR Title and git commit message*
|
||||
*`fix(<component>): <Short description of what has been changed>`*
|
||||
|
||||
## ✅ Changes
|
||||
|
||||
Explain for the reviewer and QA the reason for the MR and what changes are included.
|
||||
|
||||
- ...
|
||||
|
||||
## 🔄 Requirements for migrations
|
||||
|
||||
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
|
||||
- [ ] Any other considerations in context of the update:
|
||||
|
||||
# Checklist / Sign-offs
|
||||
|
||||
## 🏷️ Labels
|
||||
|
||||
Set labels:
|
||||
|
||||
```
|
||||
/label ~"MR-Type::Other"
|
||||
/label ~"PO::👀"
|
||||
/label ~"Tech Lead::👀"
|
||||
/label ~"QA::👀"
|
||||
/label ~"Testautomation::👀"
|
||||
```
|
||||
|
||||
# 👷 Developer Checklist
|
||||
|
||||
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
|
||||
- [ ] No.
|
||||
- [ ] Yes, and the documentation was updated accordingly.
|
||||
|
||||
Document in an extra comment and link to that comment:
|
||||
- [ ] How you verified the change is working as expected, also in upgrade scenarios.
|
||||
- [ ] Any regression testing done.
|
||||
|
||||
--> Link to comment:
|
||||
@@ -1,41 +0,0 @@
|
||||
# ⬆️ Application Update
|
||||
|
||||
*Expected MR Title and git commit message*
|
||||
*`feat/fix(<app-name>): Update from <old-version> to <new-version>`*
|
||||
|
||||
## 📋 Changelog/Release Notes
|
||||
|
||||
- [ ] [README.md](../../README.md) component table updated including the link to the related release notes
|
||||
- [ ] Provide significant improvements you'd like to see in the openDesk release notes. If you have a lot of details to provide or someone else is providing the details, please use a comment on the MR and link the comment in here.
|
||||
|
||||
## 🔄 Requirements for migrations
|
||||
|
||||
- [ ] Minimum version of the application required in existing depoyments to update/upgrade:
|
||||
- [ ] Describe manual steps required to update existing deployments. This especially applies if the upgrade includes any breaking changes:
|
||||
- [ ] Any other considerations in context of the update:
|
||||
|
||||
# Checklist / Sign-offs
|
||||
|
||||
## 🏷️ Labels
|
||||
|
||||
Set labels:
|
||||
|
||||
```
|
||||
/label ~"MR-Type::AppUpdate"
|
||||
/label ~"PO::👀"
|
||||
/label ~"Tech Lead::👀"
|
||||
/label ~"QA::👀"
|
||||
/label ~"Testautomation::👀"
|
||||
```
|
||||
|
||||
## 👷 Developer Checklist
|
||||
|
||||
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
|
||||
- [ ] No.
|
||||
- [ ] Yes, and the documentation was updated accordingly.
|
||||
|
||||
Document in an extra comment and link to that comment:
|
||||
- [ ] How you verified the update is working as expected, also in upgrade scenarios.
|
||||
- [ ] Any regression testing done.
|
||||
|
||||
--> Link to comment:
|
||||
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="Ebene_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 693.25 214.02">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #571efa;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: #927afa;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g>
|
||||
<path class="cls-2" d="M126.14,140.32v2.13c0,8.99-7.31,16.3-16.3,16.3h-38.26c-8.99,0-16.3-7.31-16.3-16.3v-38.26c0-8.99,7.31-16.3,16.3-16.3h2.13v52.44h52.44Z"/>
|
||||
<path class="cls-1" d="M126.85,127.56h-40.39v-44.65c0-15.24,12.4-27.64,27.64-27.64h12.76c17.58,0,31.89,14.31,31.89,31.89v8.5c0,17.58-14.31,31.89-31.89,31.89ZM104.88,109.13h21.97c7.42,0,13.46-6.04,13.46-13.46v-8.5c0-7.42-6.04-13.46-13.46-13.46h-12.76c-5.08,0-9.21,4.13-9.21,9.21v26.22Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M210.82,90.76c14.85,0,24.34,10.9,24.34,24.25s-9.49,24.25-24.34,24.25-24.44-10.9-24.44-24.25,9.49-24.25,24.44-24.25ZM210.82,133.34c11.37,0,17.39-8.46,17.39-18.33s-6.02-18.33-17.39-18.33-17.48,8.46-17.48,18.33,6.01,18.33,17.48,18.33Z"/>
|
||||
<path d="M244.19,91.7h6.96v11.84c3.29-7.8,10.25-12.78,20.4-12.78,13.07,0,21.9,9.87,21.9,24.34s-8.83,24.16-21.9,24.16c-10.34,0-17.2-5.17-20.4-12.78v28.95h-6.96v-63.73ZM269.38,133.34c9.4,0,17.11-5.83,17.11-18.24s-7.71-18.42-17.11-18.42-17.95,6.11-17.95,18.42,8.65,18.24,17.95,18.24Z"/>
|
||||
<path d="M322.96,90.76c13.35,0,22.28,8.37,22.28,22.65v2.82h-37.5c.28,9.78,5.26,17.29,15.6,17.29,8.55,0,13.54-4.51,15.23-11.47h6.86c-1.97,8.27-7.61,17.2-21.9,17.2-15.13,0-22.46-11.28-22.46-24.91,0-15.04,8.74-23.59,21.9-23.59ZM338.37,110.78c-.66-9.12-6.77-14.29-15.51-14.29-8.18,0-14.29,5.26-15.04,14.29h30.55Z"/>
|
||||
<path d="M355.01,91.7h6.96v12.97c2.54-8.65,9.12-13.91,19.36-13.91s16.73,6.77,16.73,18.99v28.57h-7.05v-28.01c0-9.68-3.76-13.63-12.03-13.63-10.53,0-17.01,8.84-17.01,21.34v20.3h-6.96v-46.62Z"/>
|
||||
<path d="M409.81,72.05h24.35c6.89,0,12.97.85,18.24,2.54,5.26,1.69,9.57,4.98,12.92,9.87,3.35,4.89,5.03,11.78,5.03,20.68s-1.68,15.89-5.03,20.77c-3.35,4.89-7.66,8.18-12.92,9.87-5.27,1.69-11.34,2.54-18.24,2.54h-24.35v-66.27ZM434.16,125.07c4.76,0,8.57-.38,11.42-1.13s5.17-2.55,6.96-5.41c1.79-2.85,2.68-7.32,2.68-13.39s-.91-10.46-2.72-13.35c-1.82-2.88-4.14-4.7-6.96-5.45s-6.61-1.13-11.37-1.13h-9.31v39.86h9.31Z"/>
|
||||
<path d="M480.17,101.33c2.1-3.67,5.01-6.47,8.74-8.41s8.01-2.91,12.83-2.91c7.9,0,14.07,2.1,18.52,6.3,4.45,4.2,6.67,10,6.67,17.39v3.95h-35.53c.25,3.38,1.32,6.03,3.2,7.94,1.88,1.91,4.45,2.87,7.71,2.87,2.82,0,5.15-.59,7-1.79,1.85-1.19,3.02-2.88,3.53-5.08h14.19c-.75,5.26-3.28,9.53-7.57,12.78-4.29,3.26-9.98,4.89-17.06,4.89-5.2,0-9.71-1.05-13.54-3.15-3.82-2.1-6.75-5.03-8.79-8.79-2.04-3.76-3.05-8.08-3.05-12.97s1.05-9.35,3.15-13.02ZM513.02,109.93c-.25-3.01-1.36-5.33-3.34-6.96-1.97-1.63-4.53-2.44-7.66-2.44s-5.56.82-7.47,2.44c-1.91,1.63-2.99,3.95-3.24,6.96h21.71Z"/>
|
||||
<path d="M539.62,134.65c-4.14-3.07-6.21-7.58-6.21-13.54h14.29c0,2.7.85,4.69,2.54,5.97,1.69,1.29,4.29,1.93,7.8,1.93,2.57,0,4.43-.33,5.59-.99,1.16-.66,1.74-1.71,1.74-3.15,0-1-.34-1.82-1.03-2.44-.69-.63-1.79-1.16-3.29-1.6l-14.48-3.95c-3.2-.81-5.95-2.27-8.27-4.37-2.32-2.1-3.48-5-3.48-8.7,0-4.45,1.83-7.86,5.5-10.25,3.67-2.38,8.79-3.57,15.37-3.57,7.27,0,12.94,1.46,17.01,4.37s6.11,7.13,6.11,12.64h-14.29c0-4.57-2.91-6.86-8.74-6.86-2.07,0-3.7.35-4.89,1.03-1.19.69-1.79,1.6-1.79,2.73,0,1.94,1.72,3.35,5.17,4.23l11.09,2.73c4.32,1.07,7.79,2.71,10.39,4.94,2.6,2.22,3.9,5.34,3.9,9.35,0,4.58-1.83,8.07-5.5,10.48-3.67,2.41-9.1,3.62-16.31,3.62-8.02,0-14.1-1.54-18.24-4.61Z"/>
|
||||
<path d="M587.56,69.23h14.29v40.04l18.89-18.33h17.48l-23.59,23.03,23.5,24.35h-17.39l-18.89-19.93v19.93h-14.29v-69.09Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.5 KiB |
167
CHANGELOG.md
@@ -1,170 +1,3 @@
|
||||
# [1.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.6.0...v1.7.0) (2025-08-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **collabora:** Connect to Collabora Controller websocket via service ([5d01f60](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5d01f6023d6d300e106cc86dfca09a4ae388f4ca))
|
||||
* **collabora:** Update from 25.04.2 to 25.04.3 ([3507c62](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3507c62f832556c5d76e7a5b206acbdbcaca37a8))
|
||||
* **helmfile:** Adds default-enterprise-overrides to default values in helmfile-generic ([672e649](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/672e649b608fa03f04834837f13c360a08e8eb6c))
|
||||
* **nextcloud:** Block filesystem-unsafe characters in file and folder names ([0df6212](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0df6212ca9399d39bedc30c064cbae80c2684e44))
|
||||
* **nextcloud:** Include latest Helm chart version with supports `configuration.sharing.restrictUserEnumerationToGroup` ([c3dfa2a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c3dfa2a6075ae388764acbb20bd8282a64183ed3))
|
||||
* **notes:** Set Pod Disruption Budget (PDB) labels ([e35dac0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e35dac087aac54f545d361dee881196b264af906))
|
||||
* **nubus:** Add `livenessProbe` for `nubusUdmListener` to mitigate cases where the listener becomes uninitialized and stops forwarding provisioning data to NATS. Temporary until upstream provides a probe ([ef8d67f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ef8d67f3c1525de6f958ac7a8893b4b30ea3f7dc))
|
||||
* **open-xchange:** Disable documents role ([573e11f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/573e11f5c5103ee5906b0168317054a7e5a22e87))
|
||||
* **open-xchange:** Postfix to support submissions and external secrets ([13ab665](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/13ab6659001abf5b6c683bf6a9309972ef7412b3))
|
||||
* **open-xchange:** Support application specific passwords in groupware when CalDAV/CardDAV support is enabled, see `functional.groupware.davSupport.enabled` for reference ([90b2290](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/90b22904dab0195f505021beb785317f8969ff7d))
|
||||
* **open-xchange:** Use dedicated pod for migration ([6fd52b1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6fd52b167eeed5c7e9eda2a21b209680131380ee))
|
||||
* **opendesk-certificates:** Update Helm chart to remove default host for `webmail` being set even if OX App Suite is not enabled ([09a0aac](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/09a0aace45227b60e9b39671e747958bd339c8c9))
|
||||
* **opendesk-services:** Update opendesk-alerts from 1.1.1 to 1.1.2, update opendesk-dashboards from 1.1.1 to 1.1.2 ([174d4fc](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/174d4fc61cbb718818015779012fa65353987f3c))
|
||||
* **openproject:** Update from 16.2.0 to 16.2.1 ([bba9b71](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bba9b716a3fdf915bfc2925f1c27fe91494edcb0))
|
||||
* **ox-connector:** Update OX Connector and OX Extension to v0.27.2; review `migrations.md` for required upgrade steps ([9d51e40](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9d51e40063d73226fc8a25365cbfa92ff09f0910))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **nextcloud:** Enhance theming options for Nextcloud ([bdc7331](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bdc7331cb59da96941c3250625af3cb5f9b12e15))
|
||||
* **notes:** Switch to new Helm chart with support for self-signed deployments; review `migrations.md` for required upgrade steps ([3106ca7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3106ca793ee1e0021f7c03e620873c49adb54199))
|
||||
* **nubus:** Allow configuration of limits for password reset requests via `security.passwordResetLimits` ([09f54b4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/09f54b41347ff5c90064c8d4c2c6a9db7f05d54c))
|
||||
* **nubus:** Update from 1.11.2 to 1.12.0 ([5537dbb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5537dbbd7cb93dcb2aeafe9017c68a89d2e19293))
|
||||
* **open-xchange:** Update from 8.38 to 8.39 ([489986e](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/489986e906e828f3877e7a9087541f10c5bbfe8c))
|
||||
* **open-xchange:** Use internal endpoint for provisioning and support for optionally spinning up a dedicated internal Pod just for provisioning (see `technial.oxAppSuite.provisioning.dedicatedCoreMwPod` for details) ([31b7ec7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/31b7ec78274e5a901b51aaaeed01e6ac82298b73))
|
||||
* **openproject:** Update from 16.1.1 to 16.2.0 ([e273abb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e273abbecf58b098e76c49e1763b4c3074bf5cec))
|
||||
|
||||
# [1.6.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.5.0...v1.6.0) (2025-07-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **dovecot-pro:** Use of `requiredEnv` instead of `env` and update `README-EE.md` ([a79e40f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a79e40f44af68a16f0944265cc447ec9b0d84922))
|
||||
* **helmfile:** Prefix NATS passwords as workaround for upstream issue and add documentation to `gettings-started.md` [[#185](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/185), [#202](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/202)] ([7f478bf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7f478bffd60bdf3af536bc593ef397d823a22e88))
|
||||
* **helmfile:** Remove default setting from `repositories.helm.registryOpencodeDeEnterprise` for better support of `PRIVATE_HELM_REGISTRY_URL` ([c5dd881](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c5dd8814ae7576eaaf7cfcdd1cb4aa101f164c62))
|
||||
* **helmfile:** Set `nubusKeycloakBootstrap` debug mode when openDesk is running in debug mode ([4e0ffee](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4e0ffeea1f9d0420c404d78c5188ff6bdb0f81ea))
|
||||
* **helmfile:** Streamline license header comment style [[#192](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/192)] ([20cbad3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/20cbad31e75d9ae27081675072561650fa168935))
|
||||
* **nubus:** Explicitly template `nubusStackDataUms.stackDataContext.portalFqdn` to fix custom hostname support [[#193](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/193)] ([6aa6d3a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6aa6d3af2fed1be99b4f4eb5de2e2703ca00578a))
|
||||
* **nubus:** Replace openDesk portal fork with upstream `portal-frontend` image ([e4f1afc](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e4f1afca0fdf4af184f4e287f1317ed57d229013))
|
||||
* **nubus:** Update from 1.11.1 to 1.11.2 ([237c9af](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/237c9af3c16885b51dcd1d7c793bf7fd23dbcefb))
|
||||
* **open-xchange:** Add missing `imagePullSecrets` for `core-imageconverter` and `core-documentconverter` ([9b7f439](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9b7f439d83c9cd5a60b70f8d3ba7d36bb35ebd5c))
|
||||
* **open-xchange:** Enable `com.openexchange.smime.test` only when openDesk is running with `debug.enabled: true` ([51ff7a5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/51ff7a5fdb7b7f3bdef02a32e44e6204df9db6ea))
|
||||
* **open-xchange:** Enable searching by LDAP `mailAlternativeAddress` when resolving global contacts. Note: OX App Suite evaluates all `mailAlternativeAddress` values of a user when searching, but only the first address is returned, which might differ from the one that matched the search criteria. ([9014324](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/90143241564d7e66bf1b864c704e13c677dcbc93))
|
||||
* **open-xchange:** Use `objectstore.dovecot.secretKey` when defined ([5c33226](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5c332264edfcbb3343bcfd39352db6ddefd0a85c))
|
||||
* **opendesk-services:** Add missing certificates ([acbabdb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/acbabdb80662bf0599a157b24d3f8461e1f98cad))
|
||||
* **openproject:** Update from 16.1.0 to 16.1.1 ([e30d4f1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e30d4f126dda29183cffc078307d41d3dce6f4fa))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **collabora:** Update from 24.04.13 to 25.04.2 ([c56f564](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c56f564025531d25a1966792f8c161aedf644c99))
|
||||
* **element:** Update NeoBoard from 2.1.0 to 2.2.1, NeoChoice from 1.5.1. to 1.5.2, NeoDateFix from 1.7.0 to 1.7.1 widgets and NeoDateFixBot from 2.8.2 to 2.8.3 latest releases ([98d31f8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/98d31f811bdb007e40c4b3436ff65cdcf610db7e))
|
||||
* **helmfile:** Add options in `functional.yaml.gotmpl` for setting the portal's corner links, toggling the welcome message and the newsfeed ([1a6f438](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1a6f438724cc442ca7b9c423a326c67690510301))
|
||||
* **nextcloud:** Update from 30.0.10 to 31.0.6 and support for notify-push ([a4c8be6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a4c8be60f335af98270e40478e53e6fa34c23d38))
|
||||
* **nubus:** Update from 1.9.1 to 1.11.1; required minimum openDesk version for this upgrade is 1.5.0, see `migrations.md` for details ([ccd5ab8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ccd5ab84e3f5bb67eb879a3683c299d7a61ddba0))
|
||||
* **open-xchange:** Store attachments for calendar, contact and task objects in object storage; review `migrations.md` for required upgrade steps ([4eb6570](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4eb6570b0a69931f09042bdc40edfad23e6f28c1))
|
||||
* **open-xchange:** Updated OX App Suite from 8.37 to 8.38 ([2b31751](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2b317514c61eba4ebc4cc9e7041aac606d8c16b8))
|
||||
|
||||
# [1.5.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.1...v1.5.0) (2025-06-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **dovecot:** Enable Dovecot ACL for CE (file) & EE (cassandra) ([9354ee7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9354ee719628c876c26e91e1b57a4a0cfafedca1))
|
||||
* **notes:** Support templating of Ingress annotations `bodyTimeout` and `bodySize` to allow application defined upload limits to be reached ([69faf77](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/69faf77d15d1df441eb62c58374620f8035f2596))
|
||||
* **nubus:** Create required LDAP objects for `global.additionalMailDomains` ([4dcb683](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4dcb6831189fc9cedb244c3fd7997d57e8a78c5a))
|
||||
* **nubus:** Explicitly template security context for Keycloak proxy ([e959438](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e9594382ed7a2469240d62134b34bcf3e5d06a59))
|
||||
* **nubus:** Update CSS for login screen to show login button for federated IdP ([0d4e1b0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0d4e1b01e3e82ace7f7438a754235a009036b90d))
|
||||
* **nubus:** Use read-only root filesystem for Keycloak bootstrap ([1edd7c3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1edd7c3f062ec411b8b38f45be9ef22a200b4bea))
|
||||
* **open-xchange:** Enabled mail login resolver ([7547f49](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7547f4948ea13357c4cbc3ae69ae4e7210fdf4a2))
|
||||
* **open-xchange:** Update App Suite 8.37 to latest patch level (8.37.69) ([bc436b2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bc436b248525bf76584dd21f735694065bcb67a5))
|
||||
* **open-xchange:** Update Dovecot CE chart to support ACLs (mailbox sharing) and usernames different from local part of mail address ([87c30ab](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/87c30ab8e32c1b405f6aff8eda5eed5f74d5df0a))
|
||||
* **open-xchange:** Use login name instead of email between OX and Dovecot ([8e9ef08](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8e9ef0867beb8381ad4a5f55f2e9d12bd7dbbba2))
|
||||
* **openproject:** Update from 16.0.0 to 16.0.1 ([b60f9c7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b60f9c7576deca327ad36c48ad0b1a7e3e9d3c9c))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **ci:** Update Helm to 3.18.1 and Helmfile to 1.1.1 ([59a4086](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/59a40864edbdf9775e0d6003425c3b05b7b7cb15))
|
||||
* **notes:** Update from 2.4.0 to 3.2.1 ([9f4e3c8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9f4e3c86c74ef6c6f618150a7a9d0935fb5ed437))
|
||||
* **open-xchange:** Support for `mailAlternativAddress`(es) for sending and receiving emails ([6d6b1a6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6d6b1a6dd754dcb283fd23f08f9df937f8e08c59))
|
||||
* **openproject:** Update from 15.5.1 to 16.0.0 including Helm chart update ([add7266](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/add72669aedfcd57b41fe8680f14940ab77f6aef))
|
||||
|
||||
## [1.4.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.0...v1.4.1) (2025-06-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **nextcloud:** Update NC CE to 30.0.10 ([785be8b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/785be8b6621305e79acca62250720028b9ca7a30))
|
||||
* **nextcloud:** Update Nextcloud incl. apps to 30.0.10 ([559fbf6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/559fbf6801fc785f26f9e6287e0730f86b459a01))
|
||||
* **nubus:** Use `.Values.theme.texts.productName` for Keycloak's `loginTitle` instead of static product name string ([d1a1e5d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d1a1e5dc29ca21fd822abd127406f6859603b9c7))
|
||||
* **open-xchange:** Re-adding `com.openexchange.oauth.provider.*` to fix central contacts feature ([561e44f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/561e44fd4cc42089954868da60edbd210b9a2608))
|
||||
* **open-xchange:** Set `com.openexchange.hostname` to get working links in outgoing system mails (e.g. task assignments) ([0d61687](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0d616871e3f5114ec429714658500c09af842fe6))
|
||||
* **postfix:** Require TLSv1.3 ([3b3d8ac](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3b3d8aca54bdaea055289c993e3f158d93864223))
|
||||
* **requirements.md:** Helm 3.18.x is not supported due to upstream bug ([1ea9cae](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1ea9cae1ce46f864dc03d94c1a72956c5f5ba9a9))
|
||||
|
||||
# [1.4.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.2...v1.4.0) (2025-05-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docs:** Update requirements, bump helmfile to v1.0.0 ([88b29c5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/88b29c57e8197f072b9c80019255ee0b7d1188e1))
|
||||
* **dovecot:** Encode object storage password and add more template values ([c40de73](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c40de73ccf02bf77df0c3a17c2fccf2e113c4b35))
|
||||
* **nubus:** [[#182](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/182)] Add `KC_TRUSTSTORE_PATHS` to Keycloak when using self-signed certificates ([006aed7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/006aed791e5cf58850712e468a15c8abe1ee0973))
|
||||
* **nubus:** [[#183](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/183)] Do not override `nubusPortalConsumer.waitForDependency.image` when using self-signed certificates ([b45a0bf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b45a0bf832506fb60488cd01c9c883b58e1d60b6))
|
||||
* **nubus:** Update ArgoCD hook annotations ([f2b1384](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f2b13846700d8a49a066b3343b043dac89d326f5))
|
||||
* **open-xchange:** Update Open-Xchange to v8.36 ([b40b863](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b40b8630c1a5ba7452d0461d38b1175fa647226d))
|
||||
* **open-xchange:** Update Open-Xchange to v8.37 ([174c73c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/174c73c012e911342644bdcb89d22b35be9baa36))
|
||||
* **openproject:** Update to 15.5.1 ([e91efa8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e91efa8ecc1be9b444092e1a291747bb9f0c00ea))
|
||||
* **openxchange:** Add proper dav URLs in client onboarding and disable unnecessary oauth section ([bba2af0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bba2af0f06942bd2063cc7b79f3e39fdb07838f0))
|
||||
* **openxchange:** Disable redundant o-x-authentication-oauth package ([1d2b17b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1d2b17b4951581e1f60d8a7f2402512dc1c1c568))
|
||||
* **openxchange:** Enable DAV support ([709e50f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/709e50ff7c020347dad953be7380d08438d3ab69))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **collabora:** Update enterprise image to 24.04.13.4.1 ([b590810](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b5908100ddbd7497f7f858e874bcbf7979480d1b))
|
||||
* **helmfile:** Define `global.additionalMailDomains` as list; if you use the setting already, check `migrations.md` for details ([4b30576](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4b305768c444c166e28829ee05631451ba997126))
|
||||
* **helmfile:** Option to select default file format for weboffice using; see `functional.weboffice.defaultFormat` in `functional.yaml.gotmpl` for details ([5f58a85](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5f58a857acab38fa7f56e1e14ef0a6f805c7622e))
|
||||
* **nubus:** Update nubus to v1.9.1 ([3d694a8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3d694a8248d5e983ab3e05753326088b375f2d82))
|
||||
|
||||
## [1.3.2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.1...v1.3.2) (2025-05-06)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **dovecot:** Update Helm chart to fix migration mode ([7ba84b9](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7ba84b99caf61e5a4a35b71d875e9ede0f71423e))
|
||||
* **helmfile:** Explicitly template auth-modules in OX App Suite; Streamline name of OX App Suite EE image ([6cbb6b6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6cbb6b6922864467ca365bcc9b1cfa49182df050))
|
||||
|
||||
## [1.3.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.0...v1.3.1) (2025-04-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ci:** Update Helm to v3.17.3 ([9446faa](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9446faaa597777e9fb15d33953e02fdbfef646b2))
|
||||
* **ci:** Update Helm to v3.17.3 ([d794a20](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d794a2036ed6543bf89a0b661cc8a4c8a383a5f0))
|
||||
* **docs:** Update "Ingress controller" section and add footnote on volume provisioner in `requirements.md` ([17efbd7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/17efbd79f177f635885735823696a6e50b919d3e))
|
||||
* **helmfile:** Conditional templating of additional annotations in selected components to unblock openDesk deployment despite a bug in Helm 3.17 (https://github.com/helm/helm/issues/30587) ([861b84b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/861b84b14de9fb42c483f3ddb9e083305750d137))
|
||||
* **postfix:** Disable unauthenticated relaying of mails in `postfix-ox` ([7414f05](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7414f05005e019f2121e8458fe63e795819fe92c))
|
||||
|
||||
# [1.3.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.2.1...v1.3.0) (2025-04-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **helmfile:** Fix Kyverno lint issues for EE components ([46b3834](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/46b38342d3cb6789e1734cd6eba412bc726c834b))
|
||||
* **helmfile:** Remove no longer used `secrets.nubus.defaultAccounts.*` ([6e6d155](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6e6d15552e87a77870755db3b48f2af686916c1f))
|
||||
* **helmfile:** Support for Keycloak session settings via `functional.authentication.realmSettings.*` ([3fcfa00](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3fcfa00503854f752a3885321b16b3f3597cb09a))
|
||||
* **migrations:** Optional delete of `ums-minio-rewrites` Ingress, as it is non-existing in deployments with external object storage ([6932953](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/693295391bb02892b537a48513c9e0c2824ed466))
|
||||
* **ox-connector:** Update to v0.19.0 ([fe664a7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/fe664a7f8d696fea53b6abadec5a0cb5db751f43))
|
||||
* **xwiki:** Update Helm chart to v1.4.4 to fix the problem with XWiki not starting when secrets contained specific (XML interpreted) characters ([67a1df0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/67a1df0f80dc598287174a8dd6bda3f477227f0d))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **collabora:** Update to 24.04.13 ([8f12208](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8f12208074b2947ec65ebc3c21920d4f775e0c6e))
|
||||
* **helmfile:** Add template support for annotations ([9cde57d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9cde57d74b8cfdd09e4f6b82cf45f1b1a686e035))
|
||||
* **helmfile:** Support for SSO federation; see `ssoFederation` section in `functional.yaml.gotmpl` for details ([79975a5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/79975a58e3a4f50e59d1d790045c22a32ab49372))
|
||||
* **nubus:** Show openDesk version to all users (instead of admin users only) ([393ee31](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/393ee311630630fd1aae8354ead90bcaaf5e4dba))
|
||||
* **nubus:** Update to 1.8.0 ([90c49f6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/90c49f6f83df0b34b86c17164eaa4e137d0cd9be))
|
||||
* **openproject:** Update to 15.5.0 ([7f1cfc5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7f1cfc55551f608603e0401dfef24bbb9cc334e5))
|
||||
|
||||
## [1.2.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.2.0...v1.2.1) (2025-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Please read the [project's entire CONTRIBUTING.md](https://gitlab.opencode.de/bm
|
||||
|
||||
# How to contribute?
|
||||
|
||||
Please also read the [project's workflow documentation](./docs/developer/workflow.md) for more details on standards like commit
|
||||
Please also read the [project's workflow documentation](./docs/workflow.md) for more details on standards like commit
|
||||
messages and branching convention.
|
||||
|
||||
## Helm vs. Operators vs. Manifests
|
||||
|
||||
176
README-EE.md
@@ -6,9 +6,11 @@ SPDX-License-Identifier: Apache-2.0
|
||||
<h1>openDesk Enterprise Edition</h1>
|
||||
|
||||
<!-- TOC -->
|
||||
* [Overview](#overview)
|
||||
* [Enterprise Features](#enterprise-features)
|
||||
* [CE vs. EE](#ce-vs-ee)
|
||||
* [Enabling the Enterprise deployment](#enabling-the-enterprise-deployment)
|
||||
* [Configuring the oD EE deployment for self-hosted installations](#configuring-the-od-ee-deployment-for-self-hosted-installations)
|
||||
* [Registry access](#registry-access)
|
||||
* [License keys](#license-keys)
|
||||
* [Component overview](#component-overview)
|
||||
* [CE Components](#ce-components)
|
||||
* [EE Components](#ee-components)
|
||||
* [Collabora](#collabora)
|
||||
@@ -17,116 +19,13 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Open-Xchange](#open-xchange)
|
||||
* [OX App Suite](#ox-app-suite)
|
||||
* [OX Dovecot](#ox-dovecot)
|
||||
* [Enabling the Enterprise deployment](#enabling-the-enterprise-deployment)
|
||||
* [Configuring the oD EE deployment for self-hosted installations](#configuring-the-od-ee-deployment-for-self-hosted-installations)
|
||||
* [Registry access](#registry-access)
|
||||
* [License keys](#license-keys)
|
||||
<!-- TOC -->
|
||||
|
||||
# Overview
|
||||
|
||||
openDesk Enterprise Edition is recommended for production use. It receives support and patches from ZenDiS and the suppliers of the components due to the product subscriptions included.
|
||||
openDesk Enterprise Edition is recommended for production use. It receives support and patches from ZenDiS and the suppliers of the components due to the included product subscriptions.
|
||||
|
||||
This document refers to the openDesk Community Edition as "oD CE" and the openDesk Enterprise Edition as "oD EE".
|
||||
|
||||
Please contact [ZenDiS](mailto:opendesk@zendis.de) to get openDesk Enterprise, either as a SaaS offering or for your on-premises installation.
|
||||
|
||||
# Enterprise Features
|
||||
|
||||
oD EE ships the following features for Enterprise use that are not available in oD CE.
|
||||
|
||||
| Component | Enterprise-only Features |
|
||||
| -------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
||||
| **Collabora** | Branding |
|
||||
| | [Automatic load scaling](https://www.collaboraonline.com/collabora-online-controller/) |
|
||||
| **Element** | [AdminBot](https://ems-docs.element.io/books/element-cloud-documentation/page/admin-bot) |
|
||||
| | [GroupSync](https://ems-docs.element.io/books/element-server-suite-classic-documentation-lts-2504/page/setting-up-group-sync-with-the-installer#bkmrk-what-is-group-sync?) |
|
||||
| | [Admin Console](https://ems-docs.element.io/books/element-server-suite-classic-documentation-lts-2504/page/using-the-admin-console) |
|
||||
| **Nextcloud** | Enterprise security patches |
|
||||
| | [Guard app](https://nextcloud.com/features/#guard) |
|
||||
| **Open‑Xchange** | S3 storage |
|
||||
| | Central orchestration of cluster topology, health checks, and configuration |
|
||||
| | Advanced Full-Text Search (FTS) functionality for mailboxes |
|
||||
| **OpenProject**. | [Enterprise addons](https://www.openproject.org/docs/enterprise-guide/) (*Corporate Plan*) |
|
||||
| **XWiki** | [XWiki Pro apps](https://xwiki.com/en/offerings/products/xwiki-pro) |
|
||||
|
||||
# CE vs. EE
|
||||
|
||||
The following table summarizes the differences between oD CE and oD EE.
|
||||
|
||||
| Aspect | Community Edition (CE) | Enterprise Edition (EE) |
|
||||
| -------------------------------- | --------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| **Licensing of core components** | OSS (Apache‑2.0 / GPL, etc.) | Same OSS licenses |
|
||||
| **Closed‑source modules** | None | Collabora (branding), Element (admin tools), Nextcloud (guard app), OX Pro, Dovecot Pro |
|
||||
| **Technical enablement** | Fully public images/charts via openCode | EE‑only registry, license file (`enterprise.yaml`) |
|
||||
| **Support & updates** | Community via openCode, no SLA | SLA‑backed support, patches, 2nd/3rd level |
|
||||
| **Access to source code** | All CE code on openCode | Proprietary modules NOT on openCode |
|
||||
|
||||
|
||||
## CE Components
|
||||
|
||||
The following components are using the same codebase and artifacts for their Community and Enterprise offering:
|
||||
|
||||
- Cryptpad
|
||||
- Jitsi
|
||||
- Notes
|
||||
- Nubus
|
||||
- OpenProject
|
||||
- XWiki
|
||||
|
||||
## EE Components
|
||||
|
||||
This section provides information about the components that have - at least partially - Enterprise-specific artifacts.
|
||||
|
||||
If you want to check in detail which artifacts are specific to openDesk Enterprise and thereby may contain proprietary code, please check the `repository:`
|
||||
values in the image ([1](./helmfile/environments/default/images.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl))
|
||||
and chart ([1](./helmfile/environments/default/charts.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl)) definitions.
|
||||
When a repository path starts with `/zendis`, the artifact is only available in an openDesk Enterprise deployment.
|
||||
|
||||
### Collabora
|
||||
|
||||
- Collabora Online (COOL) container image: Is build from the same public source code as Collabora Development Edition (CODE), only the build configurations might differ. COOL includes a brand package that is not public and its license is not open source.
|
||||
- COOL Controller container image and Helm chart: Source code and chart are using Mozilla Public License Version 2.0, but the source code is not public. It is provided to customers upon request.
|
||||
|
||||
openDesk updates Collabora once a COOL image based on the version pattern `<major>.<minor>.<patch>.3+.<build>` was made available. This happens usually at the same time the CODE image with `<major>.<minor>.<patch>.2+.<build>` is made available.
|
||||
|
||||
### Element
|
||||
|
||||
- AdminBot and GroupSync container image: 100% closed source
|
||||
- Admin Console container image: 100% closed source, though ~65% of the total runtime code is from the [matrix-bot-sdk](https://github.com/turt2live/matrix-bot-sdk/)
|
||||
|
||||
### Nextcloud
|
||||
|
||||
- Nextcloud Enterprise: openDesk uses the Nextcloud Enterprise to the build Nextcloud container image for oD EE. The Nextcloud EE codebase might contain EE exclusive (longterm support) security patches, plus the Guard app, that is not publicly available, while it is AGPL-3.0 licensed.
|
||||
|
||||
openDesk updates the Nextcloud images for openDesk CE and EE in parallel, therefore we will not upgrade to a new major Nextcloud release before the related Nextcloud Enterprise release is available. When patches are released exclusively for Nextcloud Enterprise, they are made available also exclusively in oD EE.
|
||||
|
||||
### Open-Xchange
|
||||
|
||||
#### OX App Suite
|
||||
|
||||
- OX App Suite Core Middleware container image: The amount of code, that is not open source and has a proprietary license, is <10%.
|
||||
- OX App Suite Pro Helm chart: It is not publicly available, though it is "just" an umbrella chart re-using the publicly available charts referencing the EE images, so it has <10% prorietary content.
|
||||
|
||||
openDesk updates OX App Suite in oD CE and EE always to the same release version. Only the App Suíte Pro Helm chart has the same versioning as the actual App Suite release, the chart used in oD CE has a different versioning scheme.
|
||||
|
||||
#### OX Dovecot
|
||||
|
||||
- Dovecot Pro container image: Dovecot Pro is based on the open source components Dovecot and Pigeonhole but extended by modules providing additional functionality like obox2, cluster, cluster controller and dovecot fts. The additional modules make up about 15% of the overall Dovecot Pro code and are subject to a closed source license.
|
||||
|
||||
openDesk aims to keep Dovecot's shared codebases in sync between oD CE and EE, though the versioning between the releases differs (CE: 2.x, EE: 3.y).
|
||||
|
||||
Dovecot Pro requires two additional environment variables:
|
||||
|
||||
- `DOVECOT_CRYPT_PRIVATE_KEY`
|
||||
- `DOVECOT_CRYPT_PUBLIC_KEY`
|
||||
|
||||
These variables must contain the base64 encoded strings of the private and public
|
||||
key. These keys can be generated with the following commands:
|
||||
|
||||
- Private Key: `openssl genpkey -algorithm X25519 -out private.pem && cat private.pem | base64 -w0`
|
||||
- Public Key: `openssl pkey -in private.pem -out public.pem -pubout && cat public.pem | base64 -w0`
|
||||
|
||||
Please contact [ZenDiS](mailto:opendesk@zendis.de) to get openDesk Enterprise, either as a SaaS offering or for you on-premise installation.
|
||||
|
||||
# Enabling the Enterprise deployment
|
||||
|
||||
@@ -146,7 +45,7 @@ OPENDESK_ENTERPRISE=true
|
||||
|
||||
With openDesk EE you get access to the related artifact registry owned by ZenDiS.
|
||||
|
||||
Three steps are required to access the registry - for step 1 and 2 you can set some variables. Below, you can define `<your_name_for_the_secret>` freely, like `enterprise-secret`, as long as it consistent in step 1 and 3.
|
||||
Three steps are required to access the registry - for step #1 and #2 you can set some variables. Below, you can define `<your_name_for_the_secret>` freely, like `enterprise-secret`, as long as it consistent in step #1 and #3.
|
||||
|
||||
```shell
|
||||
NAMESPACE=<your_namespace>
|
||||
@@ -187,7 +86,7 @@ repositories:
|
||||
|
||||
## License keys
|
||||
|
||||
Some applications require license information for their Enterprise features to be enabled. With the aforementioned registry credentials you will also receive a file called [`enterprise.yaml`](./helmfile/environments/default/enterprise_keys.yaml.gotmpl) containing the relevant license keys.
|
||||
Some applications require license information for their Enterprise features to be enabled. With the aforementioned registry credentials you will also receive a file called `enterprise.yaml` containing the relevant license keys.
|
||||
|
||||
Please place the file next your other `.yaml.gotmpl` file(s) that configure your deployment.
|
||||
|
||||
@@ -195,4 +94,59 @@ Details regarding the scope/limitation of the component's licenses:
|
||||
|
||||
- Nextcloud: Enterprise license to enable [Nextcloud Enterprise](https://nextcloud.com/de/enterprise/) specific features, can be used across multiple installations until the licensed number of users is reached.
|
||||
- OpenProject: Domain specific enterprise license to enable [OpenProject's Enterprise feature set](https://www.openproject.org/enterprise-edition/), domain matching can use regular expressions.
|
||||
- XWiki: Deployment specific enterprise license (key pair) to activate the [XWiki Pro](https://xwiki.com/en/offerings/products/xwiki-pro) apps. *Caution! XWiki needs these license keys as one-line strings. Multi-line strings result in installation failure*
|
||||
- XWiki: Deployment specific enterprise license (key pair) to activate the [XWiki Pro](https://xwiki.com/en/offerings/products/xwiki-pro) apps.
|
||||
|
||||
# Component overview
|
||||
|
||||
## CE Components
|
||||
|
||||
The following components are using the same codebase and artifacts for their Enterprise and Community offering:
|
||||
|
||||
- Cryptpad
|
||||
- Jitsi
|
||||
- Notes
|
||||
- Nubus
|
||||
- OpenProject
|
||||
- XWiki
|
||||
|
||||
## EE Components
|
||||
|
||||
This section provides information about the components that have - at least partially - Enterprise specific artifacts.
|
||||
|
||||
If you want to check in detail which artifacts are specific to openDesk Enterprise and thereby may contain proprietary code, please check the `repository:`
|
||||
values in the image ([1](./helmfile/environments/default/images.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl))
|
||||
and chart ([1](./helmfile/environments/default/charts.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl)) definitions.
|
||||
When a repository path starts with `/zendis`, the artifact is only available in an openDesk Enterprise deployment.
|
||||
|
||||
### Collabora
|
||||
|
||||
- Collabora Online (COOL) container image: Is build from the same public source code as Collabora Development Edition (CODE), only the build configurations might differ. COOL includes a brand package that is not public and its license is not open source.
|
||||
- COOL Controller container image and Helm chart: Source code and chart are using Mozilla Public License Version 2.0, but the source code is not public. It is provided to customers upon request.
|
||||
|
||||
openDesk updates Collabora once a COOL image based on the version pattern `<major>.<minor>.<patch>.3` is available, at the same time the CODE image will be updated to `<major>.<minor>.<patch>.2`.
|
||||
|
||||
### Element
|
||||
|
||||
- AdminBot and GroupSync container image: 100% closed source
|
||||
- Admin Console container image: 100% closed source, though ~65% of the total runtime code is from the [matrix-bot-sdk](https://github.com/turt2live/matrix-bot-sdk/)
|
||||
|
||||
### Nextcloud
|
||||
|
||||
- Nextcloud Enterprise: openDesk uses the Nextcloud Enterprise to the build Nextcloud container image for oD EE. The Nextcloud EE codebase might contain EE exclusive (longterm support) security patches, plus the Guard app, that is not publicly available, while it is AGPL-3.0 licensed.
|
||||
|
||||
openDesk updates the Nextcloud images for openDesk CE and EE in parallel, therefore we will not upgrade to a new major Nextcloud release before the related Nextcloud Enterprise release is available. When patches are released exclusively for Nextcloud Enterprise, they are made available also exclusively in oD EE.
|
||||
|
||||
### Open-Xchange
|
||||
|
||||
#### OX App Suite
|
||||
|
||||
- OX App Suite Core Middleware container image: The amount of code, that is not open source and has a proprietary license, is <10%.
|
||||
- OX App Suite Pro Helm chart: It is not publicly available, though it is "just" an umbrella chart re-using the publicly available charts referencing the EE images, so it has <10% prorietary content.
|
||||
|
||||
openDesk updates OX App Suite in od CE and EE always to the same release version. Only the App Suíte Pro Helm chart has the same versioning as the actual App Suite release, the chart used in oD CE has a different versioning scheme.
|
||||
|
||||
#### OX Dovecot
|
||||
|
||||
- Dovecot Pro container image: Dovecot Pro is based on the open source components Dovecot and Pigeonhole but extended by modules providing additional functionality like obox2, cluster, cluster controller and dovecot fts. The additional modules make up about 15% of the overall Dovecot Pro code and are subject to a closed source license.
|
||||
|
||||
openDesk aims to keep Dovecot's shared codebases in sync between oD CE and EE, though the versioning between the releases differs (CE: 2.x, EE: 3.y).
|
||||
|
||||
30
README.md
@@ -32,18 +32,18 @@ For production use, the [openDesk Enterprise Edition](./README-EE.md) is recomme
|
||||
|
||||
openDesk currently features the following functional main components:
|
||||
|
||||
| Function | Functional Component | License | Component<br/>Version | Upstream Documentation |
|
||||
|----------------------|-----------------------------|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Chat & collaboration | Element ft. Nordeck widgets | AGPL-3.0-or-later (Element Web), AGPL-3.0-only (Synapse), Apache-2.0 (Nordeck widgets) | [1.11.89](https://github.com/element-hq/element-web/releases/tag/v1.11.89) | [For the most recent release](https://element.io/user-guide) |
|
||||
| Collaborative notes | Notes (aka Docs) | MIT | [3.2.1](https://github.com/suitenumerique/docs/releases/tag/v3.2.1) | Online documentation/welcome document available in installed application |
|
||||
| Diagram editor | CryptPad ft. diagrams.net | AGPL-3.0-only | [2024.9.0](https://github.com/cryptpad/cryptpad/releases/tag/2024.9.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
|
||||
| File management | Nextcloud | AGPL-3.0-or-later | [31.0.6](https://nextcloud.com/de/changelog/#31-0-6) | [Nextcloud 31](https://docs.nextcloud.com/) |
|
||||
| Groupware | OX App Suite | GPL-2.0-only (backend), AGPL-3.0-or-later (frontend) | [8.39](https://documentation.open-xchange.com/appsuite/releases/8.39/) | Online documentation available from within the installed application; [Additional resources](https://documentation.open-xchange.com/) |
|
||||
| Knowledge management | XWiki | LGPL-2.1-or-later | [16.10.5](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.10.5/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
|
||||
| Portal & IAM | Nubus | AGPL-3.0-or-later | [1.12.0](https://docs.software-univention.de/nubus-kubernetes-release-notes/1.x/en/1.12.html#version-1-12-0-2025-07-31) | [Univention's documentation website](https://docs.software-univention.de/n/en/nubus.html) |
|
||||
| Project management | OpenProject | GPL-3.0-only | [16.2.1](https://www.openproject.org/docs/release-notes/16-2-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
||||
| Videoconferencing | Jitsi | Apache-2.0 | [2.0.9955](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9955) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
||||
| Weboffice | Collabora | MPL-2.0 | [25.04.3](https://www.collaboraoffice.com/code-25-04-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.89](https://github.com/element-hq/element-desktop/releases/tag/v1.11.89) | [For the most recent release](https://element.io/user-guide) |
|
||||
| Collaborative notes | Notes (aka Docs) | [2.4.0](https://github.com/suitenumerique/docs/releases/tag/v2.4.0) | Online documentation/welcome document available in installed application |
|
||||
| Diagram editor | CryptPad ft. diagrams.net | [2024.9.0](https://github.com/cryptpad/cryptpad/releases/tag/2024.9.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
|
||||
| File management | Nextcloud | [30.0.6](https://nextcloud.com/de/changelog/#30-0-6) | [Nextcloud 30](https://docs.nextcloud.com/) |
|
||||
| Groupware | OX App Suite | [8.35](https://documentation.open-xchange.com/appsuite/releases/8.35/) | Online documentation available from within the installed application; [Additional resources](https://documentation.open-xchange.com/) |
|
||||
| Knowledge management | XWiki | [16.10.5](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.10.5/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
|
||||
| Portal & IAM | Nubus | [1.7.0](https://docs.software-univention.de/nubus-kubernetes-release-notes/latest/en/changelog.html#version-1-7-0-2025-02-23) | [Univention's documentation website](https://docs.software-univention.de/n/en/nubus.html) |
|
||||
| Project management | OpenProject | [15.4.2](https://www.openproject.org/docs/release-notes/15-4-2/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
||||
| Videoconferencing | Jitsi | [2.0.9955](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9955) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
||||
| Weboffice | Collabora | [24.04.12.4](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 designed for the execution inside containers, one of the project's objectives is to
|
||||
align the applications with best practices regarding container design and operations.
|
||||
@@ -93,8 +93,6 @@ Find out more about the permission system in the [roles & permissions concept](.
|
||||
|
||||
# Releases
|
||||
|
||||
openDesk implements a defined [release and patch management process](./docs/releases.md) to ensure stability and security.
|
||||
|
||||
All technical releases are created using [Semantic Versioning](https://semver.org/).
|
||||
|
||||
Gitlab provides an
|
||||
@@ -106,7 +104,7 @@ in the files from the release's git-tag:
|
||||
- `./helmfile/environments/default/images.yaml.gotmpl`
|
||||
- `./helmfile/environments/default/charts.yaml.gotmpl`
|
||||
|
||||
Find more information in our [Workflow documentation](./docs/developer/workflow.md).
|
||||
Find more information in our [Workflow documentation](./docs/workflow.md).
|
||||
|
||||
# Data Storage
|
||||
|
||||
@@ -125,7 +123,7 @@ If you want to address other topics, please check the section
|
||||
|
||||
# Development
|
||||
|
||||
If you want to join or contribute to the development of openDesk please read the [Development guide](./docs/developer/development.md).
|
||||
If you want to join or contribute to the development of openDesk please read the [Development guide](./docs/development.md).
|
||||
|
||||
# License
|
||||
|
||||
|
||||
10
REUSE.toml
@@ -23,17 +23,7 @@ path = "docs/architecture/apis_images/*"
|
||||
SPDX-FileCopyrightText = "2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
|
||||
SPDX-License-Identifier = "Apache-2.0"
|
||||
|
||||
[[annotations]]
|
||||
path = ".opencode/openDesk-logo-rgb-color.svg"
|
||||
SPDX-FileCopyrightText = "2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
|
||||
SPDX-License-Identifier = "CC-BY-SA-4.0"
|
||||
|
||||
[[annotations]]
|
||||
path = ".opencode/screenshots/*"
|
||||
SPDX-FileCopyrightText = "2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
|
||||
SPDX-License-Identifier = "CC-BY-SA-4.0"
|
||||
|
||||
[[annotations]]
|
||||
path = ".gitlab/merge_request_templates/*.md"
|
||||
SPDX-FileCopyrightText = "2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
|
||||
SPDX-License-Identifier = "Apache-2.0"
|
||||
|
||||
@@ -443,7 +443,7 @@ While the IAM manages users centrally, some applications come with local account
|
||||
| Element | `uvs` | The account for the "User Verification Service". It is used by Jitsi integrated into Element. | `secrets.matrixUserVerificationService.password` |
|
||||
| | `meeting-bot` | Used by the Nordeck Meeting-Bot to manage meeting rooms in Synapse. | `secrets.matrixNeoDateFixBot.password` |
|
||||
| Nextcloud | `nextcloud` | Bootstrap the Nextcloud fileshare for OpenProject with `opendesk-openproject-bootstrap` job[^1]. | `secrets.nextcloud.adminPassword` |
|
||||
| OX App Suite | `admin` | OX Connector to provision context, users, groups etc. | `secrets.oxAppsuite.adminPassword` |
|
||||
| OX App Suite | `admin` | OX-Connector to provision context, users, groups etc. | `secrets.oxAppsuite.adminPassword` |
|
||||
| OpenProject | set in `secrets.openproject.apiAdminUsername` | Bootstrap the Nextcloud fileshare for OpenProject with `opendesk-openproject-bootstrap` job[^1]. | `secrets.openproject.apiAdminPassword` |
|
||||
| XWiki | `superadmin` | Only available with `debug.enabled: true`, can be used for interactive login using `/bin/view/Main/?oidc.skipped=true`. | `secrets.xwiki.superadminpassword` |
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ This chapter presents APIs available in openDesk, grouped by application.
|
||||
* [UDM Simple API](#udm-simple-api)
|
||||
* [UDM REST API](#udm-rest-api)
|
||||
* [UCR Python API](#ucr-python-api)
|
||||
* [Identity Store and Directory Service (LDAP)](#identity-store-and-directory-service-ldap)
|
||||
* [Nubus Provisioning Service](#nubus-provisioning-service)
|
||||
* [Nubus Authorization Service](#nubus-authorization-service)
|
||||
* [LDAP](#ldap)
|
||||
* [Nubus Provisioning Service (**TBD**)](#nubus-provisioning-service-tbd)
|
||||
* [Nubus Authorization Service (**TBD**)](#nubus-authorization-service-tbd)
|
||||
* [Groupware - OX AppSuite / OX Dovecot](#groupware---ox-appsuite--ox-dovecot)
|
||||
* [Usage of APIs within openDesk](#usage-of-apis-within-opendesk)
|
||||
* [HTTP API](#http-api)
|
||||
@@ -65,13 +65,11 @@ This chapter presents APIs available in openDesk, grouped by application.
|
||||
|
||||
# IAM - Nubus
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/components.html#overview-components-fig)
|
||||

|
||||
|
||||
## UMC Python API
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/developer-reference/latest/en/umc/architecture.html#umc-api)
|
||||
|
||||
| Name | UMC Python API |
|
||||
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
@@ -103,7 +101,7 @@ This chapter presents APIs available in openDesk, grouped by application.
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | |
|
||||
| Supported standards | |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/umc/local-system-module.html#umc-store-api |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/umc/local-system-module.html#umc-store-api |
|
||||
|
||||
## IntercomService (ICS) API
|
||||
|
||||
@@ -137,14 +135,13 @@ This chapter presents APIs available in openDesk, grouped by application.
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | Depends on the integration use case. |
|
||||
| Supported standards | |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/listener/api.html |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/listener/api.html |
|
||||
|
||||
More details on the Nubus provisioning service can be found here: https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html
|
||||
More details on the Nubus provisioning service can be found here: https://docs.software-univention.de/nubus-kubernetes-architecture/0.5/en/components/provisioning-service.html
|
||||
|
||||
## UDM Simple API
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/architecture/latest/en/services/udm.html#architecture-model-udm)
|
||||

|
||||
|
||||
| Name | UDM Simple API |
|
||||
| ------------------------------ |-------------------------------------------------------------------|
|
||||
@@ -153,13 +150,13 @@ More details on the Nubus provisioning service can be found here: https://docs.s
|
||||
| Authentication | |
|
||||
| In openDesk provided by | Univention Directory Manager |
|
||||
| Transport protocol | |
|
||||
| Usage within component | Allows to use UDM capability and objects directly in Python programs. UDM Simple API provides Python modules and classes below `univention.udm.*` |
|
||||
| Usage within component | |
|
||||
| Usage within openDesk | |
|
||||
| Usage for external integration | |
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | Depends on the integration use case. |
|
||||
| Supported standards | |
|
||||
| Documentation | https://docs.software-univention.de/ucs-python-api/univention.udm.html#module-univention.udm. |
|
||||
| Documentation | |
|
||||
|
||||
## UDM REST API
|
||||
|
||||
@@ -169,19 +166,18 @@ More details on the Nubus provisioning service can be found here: https://docs.s
|
||||
| Versioning | |
|
||||
| Authentication | Basic Auth |
|
||||
| In openDesk provided by | Univention Directory Manager |
|
||||
| Transport protocol | HTTP() |
|
||||
| Transport protocol | HTTP(S) |
|
||||
| Usage within component | The Nubus bootstrapping process makes use of the API. |
|
||||
| Usage within openDesk | |
|
||||
| Usage for external integration | The [openDesk User Importer](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/user-import) utilizes the API. |
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | Depends on the integration use case. |
|
||||
| Supported standards | |
|
||||
| Documentation | https://docs.software-univention.de/nubus-kubernetes-customization/latest/en/api/udm-rest.html |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/udm/rest-api.html |
|
||||
|
||||
## UCR Python API
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/architecture/latest/en/services/ucr.html#services-ucr-architecture-model)
|
||||

|
||||
|
||||
| Name | UCR Python API |
|
||||
| ------------------------------ | --------------------------------------------------------------------------------------------------- |
|
||||
@@ -196,14 +192,11 @@ More details on the Nubus provisioning service can be found here: https://docs.s
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | |
|
||||
| Supported standards | |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/ucr/usage.html#using-ucr-from-python |
|
||||
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/ucr/usage.html#using-ucr-from-python |
|
||||
|
||||
## Identity Store and Directory Service (LDAP)
|
||||
## LDAP
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/identity-store.html#component-identity-store-figure)
|
||||
|
||||
| Name | Identity Store and Directory Service (LDAP) |
|
||||
| Name | LDAP |
|
||||
| ------------------------------ |-------------------------------------------------------------------------------------------------------------------------|
|
||||
| Purpose | Read access to Nubus LDAP |
|
||||
| Versioning | n/a |
|
||||
@@ -216,25 +209,15 @@ More details on the Nubus provisioning service can be found here: https://docs.s
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | LDAP |
|
||||
| Supported standards | LDAP |
|
||||
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/identity-store.html#component-identity-store-directory-service |
|
||||
| Documentation | https://docs.software-univention.de/manual/5.0/en/domain-ldap/ldap-directory.html |
|
||||
|
||||
## Nubus Provisioning Service
|
||||
## Nubus Provisioning Service (**TBD**)
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html#component-provisioning-service-complete-figure)
|
||||
To be delivered.
|
||||
|
||||
| Name | Nubus Proisioning Service |
|
||||
| ------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html |
|
||||
## Nubus Authorization Service (**TBD**)
|
||||
|
||||
## Nubus Authorization Service
|
||||
|
||||

|
||||
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/interfaces-protocols.html#authorization-service)
|
||||
|
||||
| Name | Nubus Authorization Service |
|
||||
| ------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/interfaces-protocols.html#authorization-service |
|
||||
To be delivered.
|
||||
|
||||
# Groupware - OX AppSuite / OX Dovecot
|
||||
|
||||
@@ -288,7 +271,7 @@ The following are the APIs used by the Groupware application:
|
||||
| In openDesk provided by | OX AppSuite Middleware |
|
||||
| Transport protocol | HTTP(S) |
|
||||
| Usage within component | none |
|
||||
| Usage within openDesk | OX Connector synchronizes the state of the objects (users, groups etc.) managed in the LDAP. |
|
||||
| Usage within openDesk | OX-Connector synchronizes the state of the objects (users, groups etc.) managed in the LDAP. |
|
||||
| Usage for external integration | none |
|
||||
| Parallel access | Allowed |
|
||||
| Message protocol | XML based, exactly following the format of Java RMI. |
|
||||
|
||||
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 411 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 80 KiB |
@@ -66,8 +66,8 @@ All parts of openDesk Community Edition must be open source with source code (al
|
||||
|
||||
openCode provides some boundaries when it comes to open source license compliance openDesk has to adhere to:
|
||||
|
||||
- The components must be published under a license listed in the [openCode license allow list](https://opencode.de/de/wissen/rechtssichere-nutzung/open-source-lizenzen).
|
||||
- Delivered artifacts (container images) must contain only components licensed under the aforementioned allow list. A container must not contain any artifact using a license from the [openCode license block list](https://opencode.de/de/wissen/rechtssichere-nutzung/open-source-lizenzen#3.-Negativliste-aller-nicht-freigegebenen-Lizenzen).
|
||||
- The components must be published under a license listed in the [openCode license allow list](https://wikijs.opencode.de/de/Hilfestellungen_und_Richtlinien/Lizenzcompliance#h-2-open-source-lizenzliste).
|
||||
- Delivered artifacts (container images) must contain only components licensed under the aforementioned allow list. A container must not contain any artifact using a license from the [openCode license block list](https://wikijs.opencode.de/de/Hilfestellungen_und_Richtlinien/Lizenzcompliance#h-3-negativliste-aller-nicht-freigegebenen-lizenzen).
|
||||
|
||||
Deviations from the above requirements must be documented in the openDesk license deviation report.
|
||||
|
||||
@@ -119,7 +119,7 @@ openDesk should be compliant with the "Deutsche Verwaltungscloud Strategie" (DVS
|
||||
|
||||
## IT-Grundschutz
|
||||
|
||||
The IT-Grundschutz catalog knowns a lot of modules ("Bausteine"), but not all of them apply to all components, as there are some related to hardware or some just relevant for the operator while openDesk is "just" the software platform. The first step for an IT-Grundschutz evaluation of a component (or the platform as a whole) requires defining which modules are applicable. Other modules apply to all components e.g. [APP.4.4 Kubernetes](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/06_APP_Anwendungen/APP_4_4_Kubernetes_Edition_2023.pdf), [SYS.1.6 Containerisierung](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/07_SYS_IT_Systeme/SYS_1_6_Containerisierung_Edition_2023.pdf) and [CON.2 Datenschutz](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/03_CON_Konzepte_und_Vorgehensweisen/CON_2_Datenschutz_Edition_2023.pdf).
|
||||
The IT-Grundschutz catalog knowns a lot of modules ("Bausteine"), but not all of them apply to all components, as there are some related to hardware or some just relevant for the operator while openDesk is "just" the software platform. The first step for an IT-Grundschutz evaluation of a component (or the platform as a whole) requires defining which modules are applicable. Other modules apply to all components e.g. [APP.4.4 Kubernetes](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/06_APP_Anwendungen/APP_4_4_Kubernetes_Edition_2023.pdf), [SYS.1.6 Containerisierung](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/07_SYS_IT_Systeme/SYS_1_6_Containerisierung_Edition_2023.pdf) and [CON 2 Datenschutz](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/IT-GS-Kompendium_Einzel_PDFs_2023/03_CON_Konzepte_und_Vorgehensweisen/CON_2_Datenschutz_Edition_2023.pdf).
|
||||
|
||||
Within each module are multiple requirements ("Anforderungen") that are usually composed of multiple partial requirements ("Teilanforderungen"). Each requirement has a given category:
|
||||
- B for basic ("Basis") - the requirement must be fulfilled.
|
||||
@@ -133,7 +133,7 @@ Different requirements address different roles in IT-Grundschutz.
|
||||
- Operator: processes & product (service)
|
||||
- Customer: processes.
|
||||
|
||||
As a supplier of an openDesk component, you will focus on the "Supplier" requirements, while the outcome (your product) must enable the Provider to fulfill the requirements that lay with its responsibility for the openDesk platform. Operators use openDesk to provide a service, therefore the openDesk platform must enable an Operator to fulfill the related requirements. Finally, the service must enable the customer to align with the scope of the IT-Grundschutz catalog. So it will happen that a requirement from e.g. the customer level needs a specific capability by the product (Supplier's responsibility), a defined core configuration from the platform (Provider's responsibility), or a certain service setup from the Operator.
|
||||
As a supplier of an openDesk component, you will focus on the "Supplier" requirements, while the outcome (your product) must enable the Provider to fulfill the requirements that lay with its responsibility for the openDesk platform. Operators use openDesk to provide a service, therefore the openDesk platform must enable an Operator to fulfill the related requirements. Finally, the service must enable the customer to align with the scope of the IT Grundschutz catalog. So it will happen that a requirement from e.g. the customer level needs a specific capability by the product (Supplier's responsibility), a defined core configuration from the platform (Provider's responsibility), or a certain service setup from the Operator.
|
||||
|
||||
We are aware that IT-Grundschutz is a complex topic and are working towards a streamlined process to reduce overhead as much as possible and ensure to maximize the use of synergies.
|
||||
|
||||
@@ -167,7 +167,7 @@ Each component must be able to operate according to the [EU's General Data Prote
|
||||
|
||||
While this can be answered by each component that will be in the spotlight for the suppliers, we also need an aligned overall picture for openDesk that at least has the platform-specific user lifecycle and cross-application interfaces in focus.
|
||||
|
||||
Note: The topics of availability, integrity, and confidentiality of personal data are also being addressed by the IT-Grundschutz module "CON.2". It has to be ensured that it is not in contradiction to what is being done in the general area of data protection.
|
||||
Note: The topics of availability, integrity, and confidentiality of personal data are also being addressed by the IT-Grundschutz module "CON 2". It has to be ensured that it is not in contradiction to what is being done in the general area of data protection.
|
||||
|
||||
**Reference:** https://gitlab.opencode.de/bmi/opendesk/documentation/datenschutz
|
||||
|
||||
@@ -185,8 +185,7 @@ With a central Identity- and Access Management (IAM) also the user lifecycle (UL
|
||||
|
||||
The focus is to have all the account information in all applications including the account's state, profile picture ([reference](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/issues/27)) and - where required - the user's group memberships. This cannot be done purely by pushing that data through OIDC claims when a user logs in to an application therefore two ways of managing an account are applicable and described in the following subchapters.
|
||||
|
||||
> **Note**<br>
|
||||
> Allowing ad hoc updates of account data through OIDC claims during login is still encouraged.
|
||||
Note: Allowing ad hoc updates of account data through OIDC claims during login is still encouraged.
|
||||
|
||||
### Pull: LDAP
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ Intercom-Service,Redis,1
|
||||
|
||||
Jitsi,PersistentVolume,1
|
||||
|
||||
Nextcloud,PostgreSQL,1
|
||||
Nextcloud,MariaDB,1
|
||||
Nextcloud,S3,1
|
||||
Nextcloud,Redis,1
|
||||
|
||||
@@ -60,24 +60,22 @@ Open-Xchange,Redis,1
|
||||
|
||||
Postfix,PersistentVolume,1
|
||||
|
||||
XWiki,PostgreSQL,1
|
||||
XWiki,MariaDB,1
|
||||
XWiki,PersistentVolume,1
|
||||
```
|
||||
|
||||
# Details
|
||||
|
||||
| Application | Data Storage | Backup | Content | (Default) Identifier | Details |
|
||||
|----------------------|--------------|----------|-----------------------------------------------------------------------------------|------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
|
||||
| Application | Data Storage | Backup | Content | Identifier | Details |
|
||||
| -------------------- | ------------ | -------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------- | ----------------------------------------------------- |
|
||||
| **ClamAV** | PVC | No | ClamAV Database | `clamav-database-clamav-simple-0` | `/var/lib/clamav` |
|
||||
| **Dovecot** | PVC | Yes | openDesk CE only: User mail directories | `dovecot` | `/srv/mail` |
|
||||
| | S3 | Yes | openDesk EE only: User mail | `dovecot` | `dovecot` |
|
||||
| | Cassandra | Yes | openDesk EE only: Metadata and ACLs | `dovecot_dictmap`, `dovecot_acl` |
|
||||
| **Dovecot** | PVC | Yes | User mail directories (openDesk CE only, openDesk EE uses Dovecot Pro with Object Storage) | `dovecot` | `/srv/mail` |
|
||||
| **Element/Synapse** | PostgreSQL | Yes | Application's main database | `matrix` | |
|
||||
| | PVC | Yes | Attachments | `media-opendesk-synapse-0` | `/media` |
|
||||
| | | Yes | Sync and state data | `matrix-neodatefix-bot` | `/app/storage` |
|
||||
| **Intercom-Service** | Redis | No | Shared session data | | |
|
||||
| **Jitsi** | PVC | Optional | Meeting recordings (feature not enabled in openDesk) | `prosody-data-jitsi-prosody-0` | `/config/data` |
|
||||
| **Nextcloud** | PostgreSQL | Yes | Application's main database Meta-Data | `nextcloud` | |
|
||||
| **Nextcloud** | MariaDB | Yes | Application's main database Meta-Data | `nextcloud` | |
|
||||
| | S3 | Yes | The Nextcloud managed user files | `nextcloud` | |
|
||||
| | Redis | No | Distributed caching, as well as transactional file locking | | |
|
||||
| **Nubus** | PostgreSQL | Yes | Main database for Nubus' IdP Keycloak | `keycloak` | |
|
||||
@@ -90,7 +88,7 @@ XWiki,PersistentVolume,1
|
||||
| | | Yes | openLDAP process data | `shared-run-ums-ldap-server-primary-0` | `/var/run/slapd` |
|
||||
| | | No | openLDAP database (secondary R/O Pods), secondaries can sync from the primary | `shared-data-ums-ldap-server-secondary-0` | `/var/lib/univention-ldap` |
|
||||
| | | No | openLDAP process data | `shared-run-ums-ldap-server-secondary-0` | `/var/run/slapd` |
|
||||
| | | Yes | The state of the listener | `data-ums-provisioning-udm-listener-0` | `/var/log/univention`<br>`/var/lib/univention-ldap/schema/id`<br>`/var/lib/univention-directory-listener` |
|
||||
| | | Yes | The state of the listener | `data-ums-provisioning-listener-0` | `/var/log/univention` and two others |
|
||||
| | | No | Cache | `group-membership-cache-ums-portal-consumer-0` | `/usr/share/univention-group-membership-cache/caches` |
|
||||
| | | Yes | Queued provisioning objects | `nats-data-ums-provisioning-nats-0` | `/data` |
|
||||
| | Memcached | No | Cache for UMC Server | | |
|
||||
@@ -102,22 +100,18 @@ XWiki,PersistentVolume,1
|
||||
| **Open-Xchange** | MariaDB | Yes | Application's control database to coordiate dynamically created ones | `configdb` | |
|
||||
| | | Yes | Dynamically creates databases of schema `PRIMARYDB_n`containing multiple contexts | `PRIMARYDB_*` | |
|
||||
| | | Yes | OX Guard related settings | `oxguard*` | |
|
||||
| | S3 | Yes | Attachments of meetings, contacts and tasks | `openxchange` | |
|
||||
| | Redis | Optional | Cache, session related data, distributed maps | | |
|
||||
| | PVC | Yes | OX Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` |
|
||||
| | | Yes | OX Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` |
|
||||
| | PVC | Yes | OX-Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` |
|
||||
| | | Yes | OX-Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` |
|
||||
| **Postfix** | PVC | Yes | Mail spool | `postfix` | `/var/spool/postfix` |
|
||||
| **XWiki** | PostgreSQL | Yes | Application's main database | `xwiki` | |
|
||||
| **XWiki** | Database | Yes | Application's main database | `xwiki` | |
|
||||
| | PVC | Yes | Attachments | `xwiki-data-xwiki-0` | `/usr/local/xwiki/data` |
|
||||
|
||||
Additionally, the following persistent volumes are mounted by Pods that serve as a data storage for the applications mentioned above.
|
||||
Additionally, the following persistent volumes are mounted by pods that serve as a data storage for the applications mentioned above.
|
||||
|
||||
These services are not ment for production use, so you can ignore these as you surely backup your production services instead.
|
||||
|
||||
| Service | Pod | Volume Name | PVC | MountPath | Comment |
|
||||
|------------|------------------|--------------|-----------------------------|-----------------------|------------------|
|
||||
| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` | |
|
||||
| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` | |
|
||||
| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` | |
|
||||
| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` | |
|
||||
| Cassandra | `cassandra-*` | `data` | `data-cassandra-*` | `/bitnami/cassandra` | openDesk EE only |
|
||||
| Service | Pod | Volume Name | PVC | MountPath |
|
||||
| ---------- | ---------------- | ------------ | --------------------------- | --------------------- |
|
||||
| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` |
|
||||
| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` |
|
||||
| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` |
|
||||
| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` |
|
||||
|
||||
@@ -60,7 +60,7 @@ Before you investigate any app-specific configuration, it is recommended that yo
|
||||
The `main` branch is configured to be the default branch, as visitors to the project on openCode should see that
|
||||
branch by default.
|
||||
|
||||
Please use the `develop` branch to diverge your branch(es) from. See the [workflow guide](./docs/developer/workflow.md)
|
||||
Please use the `develop` branch to diverge your branch(es) from. See the [workflow guide](./docs/workflow.md)
|
||||
for more details on naming conventions.
|
||||
|
||||
# External artifacts - `charts.yaml.gotmpl` and `images.yaml.gotmpl`
|
||||
@@ -159,3 +159,4 @@ for Helm charts.
|
||||
You may also want to make use of our [standard CI](https://gitlab.opencode.de/bmi/opendesk/tooling/gitlab-config) to
|
||||
quickly get Helm charts and container images that are signed, linted, scanned, and released.
|
||||
Check out the `.gitlab-ci.yaml` files in the project's [Charts](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts) or [Images](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images) to get an idea just how little you need to do by yourself.
|
||||
components
|
||||
@@ -17,8 +17,6 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Add multiple user accounts via CSV file](#add-multiple-user-accounts-via-csv-file)
|
||||
* [Start the migration](#start-the-migration)
|
||||
* [Monitor migration status](#monitor-migration-status)
|
||||
* [Appendix](#appendix)
|
||||
* [Validating master authentication](#validating-master-authentication)
|
||||
<!-- TOC -->
|
||||
|
||||
Most organizations already have email accounts on various platforms that need to be migrated to openDesk. This document describes the migration from M365 accounts to openDesk using the [audriga Migration Service](https://www.audriga.com) in combination with the master authentication option in openDesk. Other source platforms are also supported, and their migrations work in a similar manner.
|
||||
@@ -72,12 +70,12 @@ In openDesk, you have to have all user accounts with mailboxes pre-defined befor
|
||||
|
||||
## Deploy openDesk with master authentication
|
||||
|
||||
With openDesk 1.0 Enterprise, you can set openDesk's email components (OX AppSuite and OX Dovecot) to master authentication mode to run the migration as described in this document using the following two settings for your deployment. This is NOT available in openDesk Community deployments:
|
||||
With openDesk 1.0 Enterprise, you can set openDesk's email components (OX AppSuite and OX Dovecot) to master authentication mode to run the migration as described in this document using the following two settings for your deployment:
|
||||
|
||||
```
|
||||
secrets:
|
||||
oxAppSuite:
|
||||
migrationsMasterPassword: "your_temporary_master_password"
|
||||
adminPassword: "your_temporary_master_password"
|
||||
functional:
|
||||
migration:
|
||||
oxAppSuite:
|
||||
@@ -87,12 +85,10 @@ functional:
|
||||
1. You must specify a master password, it will be referenced later in this document.
|
||||
2. You need to enable the actual master authentication mode.
|
||||
|
||||
To validate the master authentication mode please read the appendix section at the end of the document.
|
||||
|
||||
Updating your deployment with these settings will allow you to continue with the migration scenario. Once the migration is completed, you can remove `secrets.oxAppSuite.migrationsMasterPassword` and need to turn off the migration mode by setting `functional.migration.oxAppSuite.enabled` to `false` or removing that setting, as `false` is the default before you update your deployment once again.
|
||||
Updating your deployment with these settings will allow you to continue with the migration scenario. Once the migration is completed, you can remove `secrets.oxAppSuite.adminPassword` and need to turn off the migration mode by setting `functional.migration.oxAppSuite.enabled` to `false` or removing that setting, as `false` is the default before you update your deployment once again.
|
||||
|
||||
> **Note**<br>
|
||||
> For the changes to take effect, it is sufficient to re-deploy the `open-xchange` component alone. But you have to restart the Dovecot Pod(s) manually when switching to/from the master authentication mode for the changes to take effect.
|
||||
> For the changes to take effect, it is sufficient to re-deploy the `open-xchange` component alone.
|
||||
|
||||
> **Note**<br>
|
||||
> While in master authentication mode, regular users cannot log in to the webmail module of openDesk or access the mail using IMAP, as it is not recommended that users interact with the target mail infrastructure during the migration scenario described in this document.
|
||||
@@ -186,39 +182,3 @@ Click on "Details" to get further information about the migration.
|
||||
You can access a detailed log for each account by clicking "Protocol" on the right-hand side. Here, you can see detected duplicates or encountered errors (e.g., if emails cannot be transferred due to your provider's size limitations).
|
||||
|
||||
You will receive status emails for the migration job's submission and start, as well as when the migration job is finished. The emails are sent to the email address you have entered during the configuration. Those emails include a link to the status website so you can easily track and monitor your migration. Once the migration has been started, you can safely close the status website and shut down your computer; the migration will continue. You can re-open the status website anytime.
|
||||
|
||||
# Appendix
|
||||
|
||||
## Validating master authentication
|
||||
|
||||
Below are details in case you want to verify master authentication for Dovecot and OX AppSuite.
|
||||
|
||||
Set a few variables first:
|
||||
|
||||
```shell
|
||||
export MIG_DOMAIN=your-opendesk-domain.tld
|
||||
export MIG_WEBMAIL_HOST=webmail
|
||||
export MIG_USERNAME=eva
|
||||
export MIG_MASTER_PASSWORD=YourMasterPassword
|
||||
export MIG_IMAP_PORT=31123
|
||||
```
|
||||
|
||||
Ensure that you have defined a (your) default context for the migration where the account (in this example `eva`) can be found. The following should be executed in OX App Suite's `open-xchange-core-mw-default-0` container, in the example we set the default context to `1`:
|
||||
|
||||
```shell
|
||||
/opt/open-xchange/sbin/changecontext -c 1 -L defaultcontext -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW
|
||||
```
|
||||
|
||||
With the preparation from above you should be able to successfully authenticate to both components:
|
||||
|
||||
**OX App Suite**
|
||||
|
||||
```shell
|
||||
curl -X POST -d "name=${MIG_USERNAME}&password=${MIG_MASTER_PASSWORD}" "https://${MIG_WEBMAIL_HOST}.${MIG_DOMAIN}/appsuite/api/login?action=login"
|
||||
```
|
||||
|
||||
**Dovecot**
|
||||
|
||||
```shell
|
||||
echo "a001 LOGIN ${MIG_USERNAME} ${MIG_MASTER_PASSWORD}" | openssl s_client -ign_eof -connect ${MIG_DOMAIN}:${MIG_IMAP_PORT}
|
||||
```
|
||||
|
||||
@@ -22,7 +22,7 @@ SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
Most organizations already have an Identity and Access Management (IAM) system with an identity provider (IdP) for single sign-on (SSO) to internal or external web applications.
|
||||
|
||||
This document helps in setting up your organization's IdP and openDesk to enable IdP federation.
|
||||
This document explains how to configure your organization's IdP and the openDesk IdP to support account federation with openDesk SSO based on your organization's login.
|
||||
|
||||
# References
|
||||
|
||||
@@ -70,23 +70,6 @@ This document focuses on the OIDC federation between an external IdP and the ope
|
||||
|
||||
# Example configuration
|
||||
|
||||
The following section explains how to configure the IdP federation manually in an example upstream IdP and in openDesk.
|
||||
|
||||
With openDesk 1.4.0 IdP federation has to be enabled as part of the deployment using the `functional.authentication.ssoFederation` section, see [`functional.yaml.gotmpl`](../../helmfile/environments/default/functional.yaml.gotmpl) for reference.
|
||||
|
||||
You can use the description below to configure and test the federation that can be exported and used as part of the deployment afterwards, e.g. with the following commands from within the Keycloak Pod:
|
||||
|
||||
```shell
|
||||
# Set the variables according to your deployment first, below are just example values.
|
||||
export FEDERATION_IDP_ALIAS=sso-federation-idp
|
||||
export NAMESPACE=example_namespace
|
||||
export CLUSTER_NETWORKING_DOMAIN=svc.cluster.local
|
||||
# Authenticate with Keycloak
|
||||
/opt/keycloak/bin/kcadm.sh config credentials --server http://ums-keycloak.${NAMESPACE}.${CLUSTER_NETWORKING_DOMAIN}:8080 --realm master --user ${KEYCLOAK_ADMIN} --password ${KEYCLOAK_ADMIN_PASSWORD}
|
||||
# Request details of IdP configuration
|
||||
/opt/keycloak/bin/kcadm.sh get identity-provider/instances/${FEDERATION_IDP_ALIAS} -r opendesk
|
||||
```
|
||||
|
||||
## Versions
|
||||
|
||||
The example was tested with openDesk v0.7.0 using its integrated Keycloak v24.0.3. As external IdP, we also used an openDesk deployment of the same version, but created a separate realm for proper configuration separation.
|
||||
@@ -99,8 +82,8 @@ The following values are used in this example documentation. Please ensure when
|
||||
- `id.opendesk.tld`: hostname for the openDesk IdP, so openDesk is deployed at `opendesk.tld`.
|
||||
- `fed-test-idp-realm`: realm name for your organization's IdP.
|
||||
- `opendesk-federation-client`: OIDC client for the openDesk federation defined in your organization's IdP.
|
||||
- `sso-federation-idp`: Identifier of your organization IdP's configuration within the openDesk Keycloak.
|
||||
- `sso-federation-flow`: Identifier of the required additional login flow to be created and referenced in the openDesk Keycloak.
|
||||
- `auto-federate-idp`: Identifier of your organization IdP's configuration within the openDesk Keycloak.
|
||||
- `auto-federate-flow`: Identifier of the required additional login flow to be created and referenced in the openDesk Keycloak.
|
||||
|
||||
## Keycloak admin console access
|
||||
|
||||
@@ -142,7 +125,7 @@ If you just created the `fed-test-idp-realm`, you are already in the admin scree
|
||||
- `Standard flow`
|
||||
- `Direct access grants`
|
||||
- Client create wizard page 3:
|
||||
- *Valid Redirect URLs*: `https://id.opendesk.tld/realms/opendesk/broker/sso-federation-idp/endpoint`
|
||||
- *Valid Redirect URLs*: `https://id.opendesk.tld/realms/opendesk/broker/auto-federate-idp/endpoint`
|
||||
- When completed with *Save*, you get to the detailed client configuration that also needs some updates:
|
||||
- Tab *Settings* > Section *Logout settings*
|
||||
- *Front channel logout*: `Off`
|
||||
@@ -152,21 +135,17 @@ If you just created the `fed-test-idp-realm`, you are already in the admin scree
|
||||
|
||||
## openDesk IdP
|
||||
|
||||
> **Note**
|
||||
> While manual configuration is possible, an SSO federation can also be configured as part of the deployment.
|
||||
> Check `functional.authentication.ssoFederation` section from the `functional.yaml.gotmpl` for details.
|
||||
|
||||
The following configuration is taking place in the Keycloak realm `opendesk`.
|
||||
|
||||
- *Authentication* > *Create flow*
|
||||
- *Name*: `sso-federation-flow`
|
||||
- *Name*: `auto-federate-flow`
|
||||
- *Flow type*: `Basic flow`
|
||||
- *Create*
|
||||
- *Add execution*: Add `Detect existing broker user` and set it to `Required`
|
||||
- *Add step*: `Automatically set existing user` and set it to `Required`
|
||||
|
||||
- *Identity providers* > *User-defined* > *OpenID Connect 1.0*
|
||||
- *Alias*: `sso-federation-idp` (used in our example)
|
||||
- *Alias*: `auto-federate-idp` (used in our example)
|
||||
- *Display Name*: A descriptive Name, in case you do not forcefully redirect the user to the IdP, that name is shown on the login screen for manual selection.
|
||||
- *Use discovery endpoint*: `On` (default)
|
||||
- *Discovery endpoint*: `https://idp.organization.tld/realms/fed-test-idp-realm/.well-known/openid-configuration` - this URL may look different if you do not use Keycloak or a different Keycloak version as IdP in your organization
|
||||
@@ -176,11 +155,11 @@ The following configuration is taking place in the Keycloak realm `opendesk`.
|
||||
- *Client ID*: Use the client ID you took from your organization's IdP config (`opendesk-federation-client` in this example)
|
||||
- *Client Secret*: Use the secret you took from your organization's IdP config
|
||||
- When completed with *Add*, you get to the detailed IdP configuration which at least needs the following update:
|
||||
- *First login flow override*: `sso-federation-flow`
|
||||
- *First login flow override*: `auto-federate-flow`
|
||||
- Depending on your organizations IdP and process preferences, additional configuration may be required
|
||||
|
||||
- In case you want to forcefully redirect all users to your organization's IdP (disabling login with local openDesk accounts):
|
||||
- *Authentication* > `2fa-browser`
|
||||
- Click on the cogwheel next to the *Identity Provider Re-director*
|
||||
- *Alias*: `sso-federation-idp`
|
||||
- *Default Identity Provider*: `sso-federation-idp`
|
||||
- *Alias*: `auto-federate-idp`
|
||||
- *Default Identity Provider*: `auto-federate-idp`
|
||||
|
||||
@@ -70,14 +70,10 @@ For your convenience, we recommend creating a `*.domain.tld` A-Record for your c
|
||||
| domain.tld | TXT | `v=spf1 +a +mx +a:mail.domain.tld ~all` | Optional, use proper MTA record if present |
|
||||
| _dmarc.domain.tld | TXT | `v=DMARC1; p=quarantine` | Optional |
|
||||
| default._domainkey.domain.tld | TXT | `v=DKIM1; k=rsa; h=sha256; ...` | Optional, DKIM settings |
|
||||
| _caldavs._tcp.domain.tld | SRV | 10 1 443 dav.domain.tld. | Optional, CalDav auto discovery |
|
||||
| _caldav._tcp.domain.tld | SRV | 10 1 80 dav.domain.tld. | Optional, CalDav auto discovery |
|
||||
| _carddavs._tcp.domain.tld | SRV | 10 1 443 dav.domain.tld. | Optional, CardDav auto discovery |
|
||||
| _carddav._tcp.domain.tld | SRV | 10 1 80 dav.domain.tld. | Optional, CardDav auto discovery |
|
||||
|
||||
## Domain
|
||||
|
||||
A list of all subdomains can be found in `helmfile/environments/default/global.yaml.gotmpl`.
|
||||
A list of all subdomains can be found in `helmfile/environments/default/global.gotmpl`.
|
||||
|
||||
All subdomains can be customized. For example, _Nextcloud_ can be changed to `files.domain.tld` in `dev` environment:
|
||||
|
||||
@@ -103,7 +99,7 @@ export DOMAIN=domain.tld
|
||||
### Apps
|
||||
|
||||
Depending on your ideal openDesk deployment, you may wish to disable or enable certain apps.
|
||||
All available apps and their default values are located in `helmfile/environments/default/opendesk_main.yaml.gotmpl`.
|
||||
All available apps and their default values are located in `helmfile/environments/default/opendesk_main.gotmpl`.
|
||||
|
||||
| Component | Name | Default | Description |
|
||||
| -------------------- | --------------------------- | ------- | ------------------------------ |
|
||||
@@ -186,7 +182,7 @@ global:
|
||||
|
||||
Some apps, like Jitsi and Dovecot, require HTTP and external TCP connections.
|
||||
These apps create a Kubernetes service object.
|
||||
You can configure whether `NodePort` (for on-premises), `LoadBalancer` (for cloud), or `ClusterIP` (to disable) should be
|
||||
You can configure whether `NodePort` (for on-premise), `LoadBalancer` (for cloud), or `ClusterIP` (to disable) should be
|
||||
used:
|
||||
|
||||
```yaml
|
||||
@@ -226,19 +222,16 @@ cluster:
|
||||
|
||||
### Ingress
|
||||
|
||||
The default value for the `ingressClassName` in openDesk is set to `nginx`. This prevents fallback to the
|
||||
cluster’s default ingress class, since the Helm charts used by openDesk components are not consistently aligned in
|
||||
how they handle a missing or empty `ingressClassName`. In case you are using a non-standard `ingressClassName` for
|
||||
your `ingress-nginx` controller you have to configure it as follows:
|
||||
By default, the `ingressClassName` is empty and selects the default ingress controller in your cluster. You can customize it by
|
||||
setting the following attribute to the name of the ingress controller the within your deployment you wish to use. Useful if the ingress controller you wish to use is not the default.
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
ingressClassName: "nginx"
|
||||
ingressClassName: "name-of-my-nginx-ingress"
|
||||
```
|
||||
|
||||
> **Note**<br>
|
||||
> Currently, the only supported ingress controller is `ingress-nginx`
|
||||
> (see [requirements.md](./docs/requirements.md) for reference).
|
||||
Currently, the only supported ingress controller is `ingress-nginx` (see
|
||||
[requirements.md](./docs/requirements.md)) for reference).
|
||||
|
||||
### Container runtime
|
||||
|
||||
@@ -279,8 +272,7 @@ While openDesk configures the applications with meaningful defaults, you can che
|
||||
|
||||
### Ports
|
||||
|
||||
> **Note**<br>
|
||||
> If you use `NodePort` for service exposure, you must check your deployment for the actual ports and ensure they are opened where necessary.
|
||||
**Note:** If you use `NodePort` for service exposure, you must check your deployment for the actual ports and ensure they are opened where necessary.
|
||||
|
||||
#### Web-based user interface
|
||||
|
||||
@@ -384,18 +376,6 @@ To prevent others from using your openDesk instance, you must set your individua
|
||||
export MASTER_PASSWORD="your_individual_master_password"
|
||||
```
|
||||
|
||||
> **Note**<br>
|
||||
> Currently a [documented](https://docs.software-univention.de/nubus-kubernetes-operation/1.x/en/configuration/nats.html#configure-the-secrets) upstream [bug](https://forge.univention.org/bugzilla/show_bug.cgi?id=58357) causes a failure when passwords/secrets beginning with certain numbers are using for the Nubus subcomponent NATS.
|
||||
> With openDesk 1.6.0 an update-aware workaround was implemented that prefixes the affected secrets in the openDesk included `secrets.yaml.gotmpl` that derives all secrets from the previously mentioned `MASTER_PASSWORD`.
|
||||
> If you are using externally provided passwords/secrets make sure that none of the ones listed below are starting with a number:
|
||||
>
|
||||
> - `secrets.nubus.provisioning.api.natsPassword`
|
||||
> - `secrets.nubus.provisioning.dispatcherNatsPassword`
|
||||
> - `secrets.nubus.provisioning.prefillNatsPassword`
|
||||
> - `secrets.nubus.provisioning.udmListenerNatsPassword`
|
||||
> - `secrets.nubus.provisioning.udmTransformerNatsPassword`
|
||||
> - `secrets.nats.natsAdminPassword`
|
||||
|
||||
## Install
|
||||
|
||||
After setting your environment-specific values in `dev` environment, you can start deployment by:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
@@ -7,40 +7,20 @@ SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
<!-- TOC -->
|
||||
* [Disclaimer](#disclaimer)
|
||||
* [Deprecation warnings](#deprecation-warnings)
|
||||
* [Automated migrations - Overview and mandatory upgrade path](#automated-migrations---overview-and-mandatory-upgrade-path)
|
||||
* [Manual checks/actions](#manual-checksactions)
|
||||
* [v1.7.0+](#v170)
|
||||
* [Pre-upgrade to v1.7.0+](#pre-upgrade-to-v170)
|
||||
* [Helmfile fix: Ensure enterprise overrides apply when deploying from project root](#helmfile-fix-ensure-enterprise-overrides-apply-when-deploying-from-project-root)
|
||||
* [Replace Helm chart: New Notes Helm chart with support for self-signed deployments](#replace-helm-chart-new-notes-helm-chart-with-support-for-self-signed-deployments)
|
||||
* [Post-upgrade to v1.7.0+](#post-upgrade-to-v170)
|
||||
* [Upstream fix: Provisioning of functional mailboxes](#upstream-fix-provisioning-of-functional-mailboxes)
|
||||
* [v1.6.0+](#v160)
|
||||
* [Pre-upgrade to v1.6.0+](#pre-upgrade-to-v160)
|
||||
* [Upstream constraint: Nubus' external secrets](#upstream-constraint-nubus-external-secrets)
|
||||
* [Helmfile new secret: `secrets.minio.openxchangeUser`](#helmfile-new-secret-secretsminioopenxchangeuser)
|
||||
* [Helmfile new object storage: `objectstores.openxchange.*`](#helmfile-new-object-storage-objectstoresopenxchange)
|
||||
* [OX App Suite fix-up: Using S3 as storage for non mail attachments (pre-upgrade)](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-pre-upgrade)
|
||||
* [Post-upgrade to v1.6.0+](#post-upgrade-to-v160)
|
||||
* [OX App Suite fix-up: Using S3 as storage for non mail attachments (post-upgrade)](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-post-upgrade)
|
||||
* [v1.4.0+](#v140)
|
||||
* [Pre-upgrade to v1.4.0+](#pre-upgrade-to-v140)
|
||||
* [Helmfile new feature: `functional.authentication.ssoFederation`](#helmfile-new-feature-functionalauthenticationssofederation)
|
||||
* [Helmfile cleanup: `global.additionalMailDomains` as list](#helmfile-cleanup-globaladditionalmaildomains-as-list)
|
||||
* [v1.2.0+](#v120)
|
||||
* [Pre-upgrade to v1.2.0+](#pre-upgrade-to-v120)
|
||||
* [From v1.1.2](#from-v112)
|
||||
* [Helmfile cleanup: Do not configure OX provisioning when no OX installed](#helmfile-cleanup-do-not-configure-ox-provisioning-when-no-ox-installed)
|
||||
* [Helmfile new default: PostgreSQL for XWiki and Nextcloud](#helmfile-new-default-postgresql-for-xwiki-and-nextcloud)
|
||||
* [v1.1.2+](#v112)
|
||||
* [Pre-upgrade to v1.1.2+](#pre-upgrade-to-v112)
|
||||
* [From v1.1.1](#from-v111)
|
||||
* [Pre-upgrade from v1.1.1](#pre-upgrade-from-v111)
|
||||
* [Helmfile feature update: App settings wrapped in `apps.` element](#helmfile-feature-update-app-settings-wrapped-in-apps-element)
|
||||
* [v1.1.1+](#v111)
|
||||
* [Pre-upgrade to v1.1.1](#pre-upgrade-to-v111)
|
||||
* [From v1.1.0](#from-v110)
|
||||
* [Pre-upgrade from v1.1.0](#pre-upgrade-from-v110)
|
||||
* [Helmfile feature update: Component specific `storageClassName`](#helmfile-feature-update-component-specific-storageclassname)
|
||||
* [Helmfile new secret: `secrets.nubus.masterpassword`](#helmfile-new-secret-secretsnubusmasterpassword)
|
||||
* [v1.1.0+](#v110)
|
||||
* [Pre-upgrade to v1.1.0](#pre-upgrade-to-v110)
|
||||
* [From v1.0.0](#from-v100)
|
||||
* [Pre-upgrade from v1.0.0](#pre-upgrade-from-v100)
|
||||
* [Helmfile cleanup: Restructured `/helmfile/files/theme` folder](#helmfile-cleanup-restructured-helmfilefilestheme-folder)
|
||||
* [Helmfile cleanup: Consistent use of `*.yaml.gotmpl`](#helmfile-cleanup-consistent-use-of-yamlgotmpl)
|
||||
* [Helmfile cleanup: Prefixing certain app directories with `opendesk-`](#helmfile-cleanup-prefixing-certain-app-directories-with-opendesk-)
|
||||
@@ -50,10 +30,10 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [openDesk defaults (new): Enforce login](#opendesk-defaults-new-enforce-login)
|
||||
* [openDesk defaults (changed): Jitsi room history enabled](#opendesk-defaults-changed-jitsi-room-history-enabled)
|
||||
* [External requirements: Redis 7.4](#external-requirements-redis-74)
|
||||
* [Post-upgrade to v1.1.0+](#post-upgrade-to-v110)
|
||||
* [Post-upgrade from v1.0.0](#post-upgrade-from-v100)
|
||||
* [XWiki fix-ups](#xwiki-fix-ups)
|
||||
* [v1.1.0](#v110-1)
|
||||
* [Pre-upgrade to v1.1.0](#pre-upgrade-to-v110-1)
|
||||
* [From v0.9.0](#from-v090)
|
||||
* [Pre-upgrade from v0.9.0](#pre-upgrade-from-v090)
|
||||
* [Configuration Cleanup: Removal of unnecessary OX-Profiles in Nubus](#configuration-cleanup-removal-of-unnecessary-ox-profiles-in-nubus)
|
||||
* [Configuration Cleanup: Updated `global.imagePullSecrets`](#configuration-cleanup-updated-globalimagepullsecrets)
|
||||
* [Changed openDesk defaults: Matrix presence status disabled](#changed-opendesk-defaults-matrix-presence-status-disabled)
|
||||
@@ -61,17 +41,20 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Changed openDesk defaults: File-share configurability](#changed-opendesk-defaults-file-share-configurability)
|
||||
* [Changed openDesk defaults: Updated default subdomains in `global.hosts`](#changed-opendesk-defaults-updated-default-subdomains-in-globalhosts)
|
||||
* [Changed openDesk defaults: Dedicated group for access to the UDM REST API](#changed-opendesk-defaults-dedicated-group-for-access-to-the-udm-rest-api)
|
||||
* [Post-upgrade to v1.0.0+](#post-upgrade-to-v100)
|
||||
* [Post-upgrade from v0.9.0](#post-upgrade-from-v090)
|
||||
* [Configuration Improvement: Separate user permission for using Video Conference component](#configuration-improvement-separate-user-permission-for-using-video-conference-component)
|
||||
* [Optional Cleanup](#optional-cleanup)
|
||||
* [From v0.8.1](#from-v081)
|
||||
* [Pre-upgrade from v0.8.1](#pre-upgrade-from-v081)
|
||||
* [Updated `cluster.networking.cidr`](#updated-clusternetworkingcidr)
|
||||
* [Updated customizable template attributes](#updated-customizable-template-attributes)
|
||||
* [`migrations` S3 bucket](#migrations-s3-bucket)
|
||||
* [Automated migrations - Details](#automated-migrations---details)
|
||||
* [v1.6.0+ (automated)](#v160-automated)
|
||||
* [v1.6.0+ migrations-post](#v160-migrations-post)
|
||||
* [v1.2.0+ (automated)](#v120-automated)
|
||||
* [v1.2.0+ migrations-pre](#v120-migrations-pre)
|
||||
* [v1.2.0+ migrations-post](#v120-migrations-post)
|
||||
* [v1.1.0+ (automated)](#v110-automated)
|
||||
* [v1.0.0+ (automated)](#v100-automated)
|
||||
* [From v1.1.2 (automated)](#from-v112-automated)
|
||||
* [migrations-pre](#migrations-pre)
|
||||
* [migrations-post](#migrations-post)
|
||||
* [From v1.0.0 (automated)](#from-v100-automated)
|
||||
* [From v0.9.0 (automated)](#from-v090-automated)
|
||||
* [Related components and artifacts](#related-components-and-artifacts)
|
||||
* [Development](#development)
|
||||
<!-- TOC -->
|
||||
@@ -92,17 +75,6 @@ Manual checks and possible activities are also required by openDesk updates, the
|
||||
> **Known limitations**<br>
|
||||
> We assume that the PV reclaim policy is set to `delete`, resulting in PVs getting deleted as soon as the related PVC is deleted; we will not address explicit deletion for PVs.
|
||||
|
||||
# Deprecation warnings
|
||||
|
||||
We cannot hold back all migrations as some are required e.g. due to a change in a specific component that we want/need to update, we try to bundle others only with major releases.
|
||||
|
||||
This section should provide you with an overview of what changes to expect in the next major release (openDesk 2.0) expected in September 2025.
|
||||
|
||||
- `functional.portal.link*` (see `functional.yaml.gotmpl` for details) are going to be moved into the `theme.*` tree, we are also going to move the icons used for the links currently found under `theme.imagery.portalEntries` in this step.
|
||||
- We will explicitly set the [database schema configuration](https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Configuration/#HConfigurethenamesofdatabaseschemas) for XWiki to avoid the use of the `public` schema.
|
||||
- `persistance.storages.oxConnector.storageClassName` and `persistance.storages.nubusUdmListener.storageClassName` will be templated in Helmfile requiring you to template them explicitly if their current default values differs from the global value set in `persistence.storageClassNames.RWO`.
|
||||
- The currently used Helm chart for Notes will be replaced requiring some config updates.
|
||||
|
||||
# Automated migrations - Overview and mandatory upgrade path
|
||||
|
||||
The following table gives an overview of the mandatory upgrade path of openDesk, required in order for the automated migrations to work as expected.
|
||||
@@ -111,12 +83,11 @@ To upgrade existing deployments, you cannot skip any version mentioned in the co
|
||||
|
||||
| Mandatory version |
|
||||
| ----------------- |
|
||||
| v1.5.0 |
|
||||
| v1.2.x |
|
||||
| v1.1.x |
|
||||
| v1.0.0 |
|
||||
| v0.9.0 |
|
||||
| v0.8.1 |
|
||||
<!-- | 1.x.x | add the entry to the table as soon as we get new migration requiring that the former migration was executed -->
|
||||
|
||||
> **Note**<br>
|
||||
> Be sure to check out the table in the release version you are going to install, and not the currently installed version.
|
||||
@@ -125,197 +96,9 @@ If you would like more details about the automated migrations, please read secti
|
||||
|
||||
# Manual checks/actions
|
||||
|
||||
## v1.7.0+
|
||||
Be sure you check all the sections for the releases you are going to update your current deployment from.
|
||||
|
||||
### Pre-upgrade to v1.7.0+
|
||||
|
||||
### Helmfile fix: Ensure enterprise overrides apply when deploying from project root
|
||||
|
||||
**Target group:** All openDesk Enterprise deployments initiated from the project root using `helmfile_generic.yaml.gotmpl`
|
||||
|
||||
Previously, the default values referenced in `helmfile_generic.yaml.gotmpl` did not include the necessary Enterprise overrides from `helmfile/environment/default-ee-overrides/`.
|
||||
|
||||
As a result, when deploying openDesk Enterprise Edition from the project root, the correct Enterprise charts and images for Collabora, Nextcloud, OpenXchange, and Dovecot were not applied. This issue does not affect deployments started at the component level (e.g., `helmfile/apps/collabora`).
|
||||
|
||||
Please verify that your deployment uses the correct Enterprise charts and images. If not, migrate to the Enterprise versions before upgrading to openDesk EE v1.7.0.
|
||||
|
||||
#### Replace Helm chart: New Notes Helm chart with support for self-signed deployments
|
||||
|
||||
**Target group:** All deployments that set `app.notes.enabled: true` (default is `false`).
|
||||
|
||||
We replaced the Helm Chart used for the Notes (aka "Impress") deployment. If you have enabled Notes in your deployment, you must manually uninstall the old chart before upgrading to openDesk v1.7.0.
|
||||
|
||||
```shell
|
||||
helm uninstall -n <your_namespace> impress
|
||||
```
|
||||
|
||||
In case you are using `annotation.notes` they have to be moved into one of the remaining dicts, see [`annotations.yaml.gotmpl`](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/develop/helmfile/environments/default/annotations.yaml.gotmpl) for details:
|
||||
|
||||
```yaml
|
||||
annotation:
|
||||
notesBackend: {}
|
||||
notesFrontend: {}
|
||||
notesYProvider: {}
|
||||
```
|
||||
|
||||
### Post-upgrade to v1.7.0+
|
||||
|
||||
#### Upstream fix: Provisioning of functional mailboxes
|
||||
|
||||
**Target group:** Deployments with OX App Suite that make use of IAM maintained functional mailboxes.
|
||||
|
||||
The update of OX Connector included in openDesk 1.7.0 fixes an issue with the provisioning of IAM maintained functional mailboxes. If your deployment makes use of these mailboxes it is recommended to trigger a full sync of the OX App Suite provisioning by recreating the OX Connector's provisioning subscription using calls to the provisioning API that is temporary port-forwarded in the example below:
|
||||
|
||||
```shell
|
||||
export NAMESPACE=<your_namespace>
|
||||
export SUBSCRIPTION_NAME=ox-connector
|
||||
export SUBSCRIPTION_SECRET_NAME=ums-provisioning-ox-credentials
|
||||
export TEMPORARY_CONSUMER_JSON=$(mktemp)
|
||||
export PROVISIONING_API_POD_NAME=$(kubectl -n ${NAMESPACE} get pods --no-headers -o custom-columns=":metadata.name" | grep ums-provisioning-api | tr -d '\n')
|
||||
kubectl -n ${NAMESPACE} port-forward ${PROVISIONING_API_POD_NAME} 7777:7777 &
|
||||
export PROVISIONING_PORT_FORWARD_PID=$!
|
||||
sleep 10
|
||||
kubectl -n ${NAMESPACE} get secret ${SUBSCRIPTION_SECRET_NAME} -o json | jq '.data | map_values(@base64d)' | jq -r '."ox-connector.json"' > ${TEMPORARY_CONSUMER_JSON}.json
|
||||
export PROVISIONING_ADMIN_PASSWORD=$(kubectl -n ${NAMESPACE} get secret ums-provisioning-api-admin -o jsonpath='{.data.password}' | base64 --decode)
|
||||
# Delete the current subscription
|
||||
curl -o - -u "admin:${PROVISIONING_ADMIN_PASSWORD}" -X DELETE http://localhost:7777/v1/subscriptions/${SUBSCRIPTION_NAME}
|
||||
# Recreate the subscription
|
||||
curl -u "admin:${PROVISIONING_ADMIN_PASSWORD}" -H 'Content-Type: application/json' -d @${TEMPORARY_CONSUMER_JSON}.json http://localhost:7777/v1/subscriptions
|
||||
kill ${PROVISIONING_PORT_FORWARD_PID}
|
||||
rm ${TEMPORARY_CONSUMER_JSON}
|
||||
```
|
||||
|
||||
## v1.6.0+
|
||||
|
||||
### Pre-upgrade to v1.6.0+
|
||||
|
||||
#### Upstream constraint: Nubus' external secrets
|
||||
|
||||
**Target group:** Operators that use external secrets for Nubus.
|
||||
|
||||
> **Note**<br>
|
||||
> External Secrets are not yet a supported feature. We are working on making it available in 2025, though it is possible to make use of the support for external secrets within single applications using the openDesk [customization](../helmfile/environments/default/customization.yaml.gotmpl) options.
|
||||
|
||||
Please ensure you read the [Nubus 1.10.0 "Migration steps" section](https://docs.software-univention.de/nubus-kubernetes-release-notes/1.x/en/changelog.html#v1-10-0-migration-steps) with focus on the paragraph "Operators that make use of the following UDM Listener secrets variables" and act accordingly.
|
||||
|
||||
#### Helmfile new secret: `secrets.minio.openxchangeUser`
|
||||
|
||||
**Target group:** All existing deployments that have OX App Suite enabled and that use externally defined secrets in combination with openDesk provided MinIO object storage.
|
||||
|
||||
For OX App Suite to access the object storage a new secret has been introduced.
|
||||
|
||||
It is declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/secrets.yaml.gotmpl) by the key: `secrets.minio.openxchangeUser`. If you define your own secrets, please ensure that you provide a value for this secret as well, otherwise the aforementioned secret will be derived from the `MASTER_PASSWORD`.
|
||||
|
||||
#### Helmfile new object storage: `objectstores.openxchange.*`
|
||||
|
||||
**Target group:** All deployments that use an external object storage.
|
||||
|
||||
For OX App Suite's newly introduced filestore you have to configure a new object storage (bucket). When you are using
|
||||
an external object storage you did this already for all the entries in
|
||||
[`objectstores.yaml.gotmpl`](../helmfile/environments/default/objectstores.yaml.gotmpl). Where we now introduced
|
||||
`objectstores.openxchange` section that you also need to provide you external configuration for.
|
||||
|
||||
#### OX App Suite fix-up: Using S3 as storage for non mail attachments (pre-upgrade)
|
||||
|
||||
**Target group:** All existing deployments that have OX App Suite enabled.
|
||||
|
||||
With openDesk 1.6.0 OX App Suite persists the attachments on contact, calendar or task objects in object storage.
|
||||
|
||||
To enable the use of this new filestore backend existing deployments must execute the following steps.
|
||||
|
||||
Preparation:
|
||||
- Ensure your `kubeconfig` is pointing to the cluster that is running your deployment.
|
||||
- Identify/create a e.g. local temporary directory that can keep the attachments while upgrading openDesk.
|
||||
- Set some environment variables to prepare running the documented commands:
|
||||
|
||||
```shell
|
||||
export ATTACHMENT_TEMP_DIR=<your_temporary_directory_for_the_attachments>
|
||||
export NAMESPACE=<your_namespace>
|
||||
```
|
||||
|
||||
1. Copy the existing attachments from all `open-xchange-core-mw-default-*` Pods to the identified directory, example for `open-xchange-core-mw-default-0`:
|
||||
```shell
|
||||
kubectl cp -n ${NAMESPACE} open-xchange-core-mw-default-0:/opt/open-xchange/ox-filestore ${ATTACHMENT_TEMP_DIR}
|
||||
```
|
||||
2. Run the upgrade.
|
||||
3. Continue with the [related post-upgrade steps](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-post-upgrade)
|
||||
|
||||
### Post-upgrade to v1.6.0+
|
||||
|
||||
#### OX App Suite fix-up: Using S3 as storage for non mail attachments (post-upgrade)
|
||||
|
||||
**Target group:** All existing deployments having OX App Suite enabled.
|
||||
|
||||
Continued from the [related pre-upgrade section](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-pre-upgrade).
|
||||
|
||||
1. Copy the attachments back from your temporary directory into `open-xchange-core-mw-default-0`.
|
||||
```shell
|
||||
kubectl cp -n ${NAMESPACE} ${ATTACHMENT_TEMP_DIR}/* open-xchange-core-mw-default-0:/opt/open-xchange/ox-filestore
|
||||
```
|
||||
2. Ideally you verify the files have been copied as expected checking the target directory in the `open-xchange-core-mw-default-0` Pod. All the following commands are for execution within the aforementioned Pod.
|
||||
3. Get the `id` of the new object storage based OX filestore, using the following command in the first line of the following block. In the shown example output the `id` for the new filestore would be `10` as the filestore can be identified by its path value `s3://ox-filestore-s3`, the `id` of the existing filestore would be `3` identified by the corresponding path `/opt/open-xchange/ox-filestore`:
|
||||
```shell
|
||||
/opt/open-xchange/sbin/listfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW
|
||||
id path size reserved used max-entities cur-entities
|
||||
3 /opt/open-xchange/ox-filestore 100000 200 5 5000 1
|
||||
10 s3://ox-filestore-s3 100000 0 0 5000 0
|
||||
```
|
||||
4. Get the list of your OX contexts IDs (`cid` column in the output of the `listcontext` command), as the next step needs to be executed per OX context. Most installation will just have a single OX context (`1`).
|
||||
```shell
|
||||
/opt/open-xchange/sbin/listcontext -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW
|
||||
cid fid fname enabled qmax qused name lmappings
|
||||
1 3 1_ctx_store true 5 1 1,context1
|
||||
```
|
||||
5. For each of your OX contexts IDs run the final filestore migration command and you will get output like this: `context 1 to filestore 10 scheduled as job 1`:
|
||||
```shell
|
||||
/opt/open-xchange/sbin/movecontextfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -f <your_s3_filestore_id_from_step_3> -c <your_context_id_from_step_4>
|
||||
```
|
||||
6. Depending on the size of your filestore, moving the contexts will take some time. You can check the status of a context's jobs with the command below. When the job status is `Done` you can also doublecheck that everything worked as expected by running the `listfilestore` command from step #3 and should see that the filestore is no longer used.
|
||||
```shell
|
||||
/opt/open-xchange/sbin/jobcontrol -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -c <your_context_id_from_step_4> -l
|
||||
ID Type of Job Status Further Information
|
||||
1 movefilestore Done move context 1 to filestore 10
|
||||
```
|
||||
7. Finally you can unregister the old filestore:
|
||||
```shell
|
||||
/opt/open-xchange/sbin/unregisterfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -i <your_old_filestore_id_from_step_3>
|
||||
```
|
||||
|
||||
## v1.4.0+
|
||||
|
||||
### Pre-upgrade to v1.4.0+
|
||||
|
||||
#### Helmfile new feature: `functional.authentication.ssoFederation`
|
||||
|
||||
**Target group:** Deployments that make use of IdP federation as described in [`idp-federation.md`](./enhanced-configuration/idp-federation.md).
|
||||
|
||||
Please ensure to configure your IdP federation config details as part of `functional.authentication.ssoFederation`. You can find more details in the "Example configuration" section of [`idp-federation.md`](./enhanced-configuration/idp-federation.md).
|
||||
|
||||
#### Helmfile cleanup: `global.additionalMailDomains` as list
|
||||
|
||||
**Target group:** Installations that have set `global.additionalMailDomains`.
|
||||
|
||||
The `additionalMailDomains` had to be defined as a comma separated string. That now needs to change into a list of domains.
|
||||
|
||||
For example the following config:
|
||||
|
||||
```yaml
|
||||
global:
|
||||
additionalMailDomains: "sub1.maildomain.de,sub2.maildomain.de"
|
||||
```
|
||||
|
||||
Needs to change to:
|
||||
|
||||
```yaml
|
||||
global:
|
||||
additionalMailDomains:
|
||||
- "sub1.maildomain.de"
|
||||
- "sub2.maildomain.de"
|
||||
```
|
||||
|
||||
## v1.2.0+
|
||||
|
||||
### Pre-upgrade to v1.2.0+
|
||||
## From v1.1.2
|
||||
|
||||
#### Helmfile cleanup: Do not configure OX provisioning when no OX installed
|
||||
|
||||
@@ -325,7 +108,7 @@ With openDesk 1.2.0 the OX provisioning consumer will not be registered when the
|
||||
|
||||
We do not remove the consumer for existing installations, if you want to do that for your existing installation please perform the following steps:
|
||||
|
||||
```shell
|
||||
```
|
||||
export NAMESPACE=<your_namespace>
|
||||
kubectl -n ${NAMESPACE} exec -it ums-provisioning-nats-0 -c nats-box -- sh -c 'nats consumer rm stream:ox-connector durable_name:ox-connector --user=admin --password=${NATS_PASSWORD} --force'
|
||||
kubectl -n ${NAMESPACE} exec -it ums-provisioning-nats-0 -c nats-box -- sh -c 'nats stream rm stream:ox-connector --user=admin --password=${NATS_PASSWORD} --force'
|
||||
@@ -376,9 +159,9 @@ In case you are planning to migrate an existing instance from MariaDB to Postgre
|
||||
- https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Backup#HUsingtheXWikiExportfeature
|
||||
- https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/ImportExport
|
||||
|
||||
## v1.1.2+
|
||||
## From v1.1.1
|
||||
|
||||
### Pre-upgrade to v1.1.2+
|
||||
### Pre-upgrade from v1.1.1
|
||||
|
||||
#### Helmfile feature update: App settings wrapped in `apps.` element
|
||||
|
||||
@@ -390,7 +173,7 @@ If you have a deployment where you specify settings found in the aforementioned
|
||||
|
||||
The following configuration:
|
||||
|
||||
```yaml
|
||||
```
|
||||
certificates:
|
||||
enabled: false
|
||||
notes:
|
||||
@@ -399,7 +182,7 @@ notes:
|
||||
|
||||
Needs to be changed to:
|
||||
|
||||
```yaml
|
||||
```
|
||||
apps:
|
||||
certificates:
|
||||
enabled: false
|
||||
@@ -407,9 +190,9 @@ apps:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## v1.1.1+
|
||||
## From v1.1.0
|
||||
|
||||
### Pre-upgrade to v1.1.1
|
||||
### Pre-upgrade from v1.1.0
|
||||
|
||||
#### Helmfile feature update: Component specific `storageClassName`
|
||||
|
||||
@@ -460,11 +243,11 @@ persistence:
|
||||
|
||||
#### Helmfile new secret: `secrets.nubus.masterpassword`
|
||||
|
||||
A not yet templated secret was discovered in the Nubus deployment. It is now declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/secrets.yaml.gotmpl) and can be defined using: `secrets.nubus.masterpassword`. If you define your own secrets, please be sure this new secret is set to the same value as the `MASTER_PASSWORD` environment variable used in your deployment.
|
||||
A not yet templated secret was discovered in the Nubus deployment. It is now declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/theme.yaml.gotmpl) and can be defined using: `secrets.nubus.masterpassword`. If you define your own secrets, please be sure this new secret is set to the same value as the `MASTER_PASSWORD` environment variable used in your deployment.
|
||||
|
||||
## v1.1.0+
|
||||
## From v1.0.0
|
||||
|
||||
### Pre-upgrade to v1.1.0
|
||||
### Pre-upgrade from v1.0.0
|
||||
|
||||
#### Helmfile cleanup: Restructured `/helmfile/files/theme` folder
|
||||
|
||||
@@ -627,7 +410,7 @@ The update from openDesk v1.0.0 contains Redis 7.4.1, like the other openDesk bu
|
||||
|
||||
Please ensure the Redis you are using is updated to at least version 7.4 to support the requirement of OX App Suite.
|
||||
|
||||
### Post-upgrade to v1.1.0+
|
||||
### Post-upgrade from v1.0.0
|
||||
|
||||
#### XWiki fix-ups
|
||||
|
||||
@@ -653,9 +436,9 @@ Unfortunately XWiki does not upgrade itself as expected. The bug has been report
|
||||
|
||||
You should have now a fully functional XWiki instance with single sign-on and full-text search.
|
||||
|
||||
## v1.1.0
|
||||
## From v0.9.0
|
||||
|
||||
### Pre-upgrade to v1.1.0
|
||||
### Pre-upgrade from v0.9.0
|
||||
|
||||
#### Configuration Cleanup: Removal of unnecessary OX-Profiles in Nubus
|
||||
|
||||
@@ -837,7 +620,7 @@ The IAM admin account `Administrator` is the only member of this group by defaul
|
||||
|
||||
If you need other accounts to use the API, please assign them to the aforementioned group.
|
||||
|
||||
### Post-upgrade to v1.0.0+
|
||||
### Post-upgrade from v0.9.0
|
||||
|
||||
#### Configuration Improvement: Separate user permission for using Video Conference component
|
||||
|
||||
@@ -867,35 +650,46 @@ kubectl -n ${NAMESPACE} delete pvc shared-run-ums-ldap-server-0
|
||||
kubectl -n ${NAMESPACE} delete pvc ox-connector-ox-contexts-ox-connector-0
|
||||
```
|
||||
|
||||
## From v0.8.1
|
||||
|
||||
### Pre-upgrade from v0.8.1
|
||||
|
||||
#### Updated `cluster.networking.cidr`
|
||||
|
||||
- Action: `cluster.networking.cidr` is now an array (was a string until v0.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 update your custom deployment values according to 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 `grafana.*`, 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 create a bucket called `migrations` using your S3 endpoint.
|
||||
- Reference: `objectstores.migrations` in [objectstores.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/objectstores.yaml)
|
||||
|
||||
# Automated migrations - Details
|
||||
|
||||
## v1.6.0+ (automated)
|
||||
|
||||
> **Note**<br>
|
||||
> Details can be found in [run_5.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_5.py).
|
||||
|
||||
### v1.6.0+ migrations-post
|
||||
|
||||
Restarting the StatefulSets `ums-provisioning-nats` and `ox-connector` due to a workaround applied on the NATS secrets, see the "Notes" segment of the ["Password seed" heading in getting-started.md](./docs/getting-started.md#password-seed)
|
||||
|
||||
> **Note**<br>
|
||||
> This change aims to prevent authentication failures with NATS in some Pods, which can lead to errors such as: `wait-for-nats Unavailable, waiting 2 seconds. Error: nats: 'Authorization Violation'`.
|
||||
|
||||
## v1.2.0+ (automated)
|
||||
## From v1.1.2 (automated)
|
||||
|
||||
> **Note**<br>
|
||||
> Details can be found in [run_4.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_4.py).
|
||||
|
||||
### v1.2.0+ migrations-pre
|
||||
### migrations-pre
|
||||
|
||||
- Delete PVC `group-membership-cache-ums-portal-consumer-0`: With the upgrade the Nubus Portal Consumer no longer requires to be executed with root privileges. The PVC contains files that require root permission to access them, therefore the PVC gets deleted (and re-created) during the upgrade.
|
||||
- Delete StatefulSet `ums-portal-consumer`: A bug was fixed in the templating of the Portal Consumer's PVC causing the values in `persistence.storages.nubusPortalConsumer.*` to be ignored. As these values are immutable, we had to delete the whole StatefulSet.
|
||||
|
||||
### v1.2.0+ migrations-post
|
||||
### migrations-post
|
||||
|
||||
- Restarting Deployment `ums-provisioning-udm-transformer` and StatefulSet `ums-provisioning-udm-listener` as well as deleting the Nubus Provisioning consumer `durable_name:incoming` on stream `stream:incoming`: Due to a bug in Nubus 1.7.0 the `incoming` stream was blocked after the upgrade, the aforementioned measures unblock the stream.
|
||||
|
||||
## v1.1.0+ (automated)
|
||||
## From v1.0.0 (automated)
|
||||
|
||||
With openDesk v1.1.0 the IAM stack supports HA LDAP primary as well as scalable LDAP secondary pods.
|
||||
|
||||
@@ -906,7 +700,7 @@ creating the config map with the mentioned label.
|
||||
> **Note**<br>
|
||||
> Details can be found in [run_3.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_3.py).
|
||||
|
||||
## v1.0.0+ (automated)
|
||||
## From v0.9.0 (automated)
|
||||
|
||||
The `migrations-pre` and `migrations-post` jobs in the openDesk deployment address the automated migration tasks.
|
||||
|
||||
|
||||
122
docs/releases.md
@@ -1,122 +0,0 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<h1>Release Management</h1>
|
||||
|
||||
This document outlines the release and patch management strategy for **openDesk**, ensuring that all updates, patches, and new releases are systematically **planned, tested, documented**, and **reliably deployed** into production. The process is designed to align with operational planning requirements and maintain system stability and security.
|
||||
|
||||
<!-- TOC -->
|
||||
* [Release Cycle](#release-cycle)
|
||||
* [Release Types](#release-types)
|
||||
* [Release Schedule](#release-schedule)
|
||||
* [Upgrades](#upgrades)
|
||||
* [Patch Management Process](#application-administration)
|
||||
* [Patch Identification & Prioritization](#patch-identification-prioritization)
|
||||
* [Patch Workflow](#patch-workflow)
|
||||
* [Communication Plan](#communication-plan)
|
||||
* [Announcement Channels](#announcement-channels)
|
||||
* [Timing of Communications](#timing-of-communications)
|
||||
* [Documentation Requirements](#documentation-requirements)
|
||||
* [Compliance & Review](#compliance-review)
|
||||
<!-- TOC -->
|
||||
|
||||
# Release Cycle
|
||||
|
||||
openDesk follows a structured release cycle to ensure predictability and reliability:
|
||||
|
||||
## Release Types
|
||||
|
||||
| Type | Frequency | Content |
|
||||
|----------------|---------------|---------------------------------------------------------------|
|
||||
| **Major** | Annually (Q3) | Large feature sets, architecture changes, breaking changes |
|
||||
| **Minor** | Monthly | New features, enhancements, may contain breaking changes or refactors (clearly flagged in the notes) |
|
||||
| **Patch** | On demand | Bug fixes, security updates, minor improvements, no intended breaking changes |
|
||||
|
||||
> **Note:** openDesk does **not** guarantee that minor releases are 100% backward‑compatible. When a breaking change is unavoidable it is announced in the release notes under a dedicated header **“Breaking Changes”** and a migration guide is provided.
|
||||
|
||||
## Release Schedule
|
||||
|
||||
- **Major releases** are scheduled for **Q3 each year**, with planning beginning in Q1.
|
||||
- **Minor releases** occur **monthly on Mondays**, typically **around 10:00 AM** local time.
|
||||
- Each minor release follows a **4-week cycle**.
|
||||
- **Week 1–3**: Active development of new features and improvements.
|
||||
- **End of Week 3**: **Feature freeze** is enforced to allow stabilization and testing.
|
||||
- **Week 4**: Final testing, approvals, and preparation for release.
|
||||
- At the **end of Week 4**, a new minor version is released, and a new cycle begins.
|
||||
- **Patch releases** are created **on demand**, based on criticality and urgency.
|
||||
|
||||
## Upgrades
|
||||
|
||||
- openDesk does not guarantee an in‑place upgrade between two major versions. Always consult the release notes and plan appropriate migration efforts.
|
||||
- Even within the same major line, skipping multiple monthly minor versions is not guaranteed to work without intermediate upgrade steps.
|
||||
- All breaking changes, including those in monthly minor releases, are highlighted in the release notes under Breaking Changes.
|
||||
- Additional, non‑binding migration hints are collected in `migrations.md`
|
||||
|
||||
# Patch Management Process
|
||||
|
||||
A standardized process ensures patches are developed, prioritized, and deployed efficiently.
|
||||
|
||||
## Patch Identification & Prioritization
|
||||
|
||||
Patches are categorized by severity and urgency:
|
||||
|
||||
| Priority Level | Criteria |
|
||||
|----------------|--------------------------------------------------------------------------|
|
||||
| **Critical** | Security vulnerabilities, system outages, data loss risks |
|
||||
| **High** | Major bugs affecting multiple users, performance degradation |
|
||||
| **Medium** | Functional bugs with workarounds, minor usability issues |
|
||||
| **Low** | Cosmetic issues, documentation updates |
|
||||
|
||||
## Patch Workflow
|
||||
|
||||
The following steps define the patch workflow from issue identification to post-deployment review. This process ensures consistent quality and minimal disruption to users:
|
||||
|
||||
1. **Identification**: Potential issues are detected through automated monitoring, internal testing, audits, or user reports submitted via the support ticketing system.
|
||||
2. **Assessment**: The product and engineering teams triage the issue, determine severity based on business and user impact, and prioritize it within the patch queue.
|
||||
3. **Development**: A fix is implemented on a dedicated feature or hotfix branch, adhering to coding standards and version control protocols.
|
||||
4. **Testing**: All patches undergo automated unit and integration tests, as well as manual QA validation in a staging environment that closely mirrors production.
|
||||
5. **Approval**: Once tested, the patch must be approved by the product owner or a designated release manager, with proper documentation and change control entries.
|
||||
6. **Deployment**: The patch is rolled out using CI/CD pipelines during predefined deployment windows or as soon as possible for critical issues.
|
||||
7. **Post-deployment review**: After deployment, the fix is verified in production, and monitoring tools are used to detect regressions or unintended side effects.
|
||||
|
||||
This workflow ensures that patches are handled with the same level of discipline as planned releases, supporting both reliability and agility.
|
||||
|
||||
# Communication Plan
|
||||
|
||||
A lightweight approach reduces manual effort while maintaining transparency.
|
||||
|
||||
## Announcement Channels
|
||||
|
||||
| Channel | Audience | Purpose | Owner |
|
||||
|---------|----------|---------|-------|
|
||||
| **openCode Changelog** | Community & EE | Primary source of truth for every release | DevOps |
|
||||
| **Account‑Manager Mail / Ticket** | Enterprise customers | Targeted information & upgrade advice | Customer Success |
|
||||
|
||||
## Timing of Communications
|
||||
|
||||
| Release Type | What | When |
|
||||
|--------------|------|------|
|
||||
| **Major** | Roadmap entry + migration highlights | 4 weeks before release |
|
||||
| | Final confirmation | 1 week before release |
|
||||
| **Minor** | Changelog entry (draft) | Immediately after feature freeze (end of week 3) |
|
||||
| | EE mail/ticket | 2 business days before deployment |
|
||||
| **Patch** | Changelog entry | Right after production deploy |
|
||||
| | EE mail/ticket (only if impacted) | Within 1 business day |
|
||||
|
||||
Community users consume information via openCode; Enterprise customers get an additional nudge via their account manager – **no mass mailings are sent manually**.
|
||||
|
||||
# Documentation Requirements
|
||||
|
||||
Each release (major, minor, or patch) must include:
|
||||
|
||||
- **Release notes** outlining new features, fixes, and known issues
|
||||
- **Change logs** with commit references and affected components
|
||||
- **Test reports** confirming QA coverage and results
|
||||
- **Deployment checklist** reviewed and approved by the product owner
|
||||
|
||||
# Compliance & Review
|
||||
|
||||
- The release process is reviewed **bi-annually** to incorporate feedback and evolving requirements
|
||||
- Emergency patches (e.g., zero-day security issues) may bypass the standard schedule but must be documented post-deployment
|
||||
@@ -1,5 +1,4 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
-->
|
||||
@@ -13,8 +12,6 @@ This section covers the internal system requirements and external service requir
|
||||
* [Hardware](#hardware)
|
||||
* [Kubernetes](#kubernetes)
|
||||
* [Ingress controller](#ingress-controller)
|
||||
* [Supported controllers](#supported-controllers)
|
||||
* [Minimal configuration](#minimal-configuration)
|
||||
* [Volume provisioner](#volume-provisioner)
|
||||
* [Certificate management](#certificate-management)
|
||||
* [External services](#external-services)
|
||||
@@ -28,15 +25,15 @@ openDesk is a Kubernetes-only solution and requires an existing Kubernetes (K8s)
|
||||
|
||||
- K8s cluster >= v1.24, [CNCF Certified Kubernetes distribution](https://www.cncf.io/certification/software-conformance/)
|
||||
- Domain and DNS Service
|
||||
- Ingress controller (Ingress NGINX) >= [4.11.5/1.11.5](https://github.com/kubernetes/ingress-nginx/releases)
|
||||
- [Helm](https://helm.sh/) >= v3.17.3, but not v3.18.0[^1]
|
||||
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= v1.0.0
|
||||
- [HelmDiff](https://github.com/databus23/helm-diff) >= v3.11.0
|
||||
- Volume provisioner supporting RWO (read-write-once)[^2]
|
||||
- Ingress controller (Ingress NGINX) >= [4.11.5/1.11.5](https://github.com/kubernetes/ingress-nginx/releases) - tested with v1.11.1 up to v1.11.5
|
||||
- **Important Note**: We are working on support for more recent versions, but please ensure to use at least 1.11.5 due to ["security issues"](https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities) in earlier versions.
|
||||
- Ingress-NGINX introduced new security defaults in version 1.12.0, which are currently not compatible with openDesk. While we are working to adhere to these defaults, you can find additional information below on how to configure Ingress-NGINX >= 1.12.0 to be compatible with openDesk.
|
||||
- [Helm](https://helm.sh/) >= v3.9.0
|
||||
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= **v1.0.0-rc8**
|
||||
- [HelmDiff](https://github.com/databus23/helm-diff) >= v3.6.0
|
||||
- Volume provisioner supporting RWO (read-write-once)
|
||||
- Certificate handling with [cert-manager](https://cert-manager.io/)
|
||||
|
||||
**Additional openDesk Enterprise requirements**
|
||||
- [OpenKruise](https://openkruise.io/)[^3] >= v1.6
|
||||
- [OpenKruise](https://openkruise.io/)[^1] >= v1.6
|
||||
|
||||
# Hardware
|
||||
|
||||
@@ -63,33 +60,21 @@ The deployment is tested against [kubespray](https://github.com/kubernetes-sigs/
|
||||
The deployment is intended to be used only over HTTPS via a configured FQDN, therefore it is required to have a properly
|
||||
configured ingress controller deployed in your cluster.
|
||||
|
||||
## Supported controllers
|
||||
|
||||
**Supported controllers:**
|
||||
- [Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx)
|
||||
|
||||
> **Note**<br>
|
||||
> The platform development team is evaluating the use of [Gateway API](https://gateway-api.sigs.k8s.io/).
|
||||
|
||||
**Compatibility with Ingress NGINX >= 1.12.0**
|
||||
|
||||
With the release 1.12.0 Ingress NGINX introduced new security default settings, which are incompatible with current openDesk releases. If you want to use Ingress-NGINX >= 1.12.0 the following settings have to be set:
|
||||
```
|
||||
controller.config.annotations-risk-level=Critical
|
||||
controller.config.strict-validate-path-type=false
|
||||
```
|
||||
See the [`annotations-risk-level` documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#annotations-risk-level) and [`strict-validate-path-type` documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#strict-validate-path-type) for details.
|
||||
With the release 1.12.0 Ingress NGINX introduced new security default settings, which are incompatible with current openDesk releases. If you want to use Ingress-NGINX >= 1.12.0 the following settings have to be set
|
||||
- The annotation risk level has to be set to `critical`. See the [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#annotations-risk-level) for details.
|
||||
- Strict path type validation has to be disabled. See the [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#strict-validate-path-type) for details.
|
||||
|
||||
> **Important Note**<br>
|
||||
> Ensure to install at least Ingress NGINX 1.11.5 or 1.12.1 due to [security issues](https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities) in earlier versions.
|
||||
> Ensure to install at least Ingress NGINX 1.12.1 due to ["security issues"](https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities) in 1.12.0.
|
||||
|
||||
## Minimal configuration
|
||||
|
||||
Several components in openDesk make use of snippet annotations, which are disabled by default. Please enable them using the following configuration:
|
||||
```
|
||||
controller.allowSnippetAnnotations=true
|
||||
controller.admissionWebhooks.allowSnippetAnnotations=true
|
||||
```
|
||||
See the [`allowSnippetAnnotations` documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#allow-snippet-annotations) for context.
|
||||
> **Note**<br>
|
||||
> The platform development team is evaluating the use of [Gateway API](https://gateway-api.sigs.k8s.io/). If you can provide input on that topic, please get in contact with us.
|
||||
|
||||
# Volume provisioner
|
||||
|
||||
@@ -117,7 +102,7 @@ deployments, you need to make use of your own production-grade services; see the
|
||||
|----------|---------------------|---------|-----------------------|
|
||||
| Cache | Memcached | `1.6.x` | Memcached |
|
||||
| | Redis | `7.x.x` | Redis |
|
||||
| Database | Cassandra[^3] | `5.0.x` | Cassandra |
|
||||
| Database | Cassandra[^1] | `5.0.x` | Cassandra |
|
||||
| | MariaDB | `10.x` | MariaDB |
|
||||
| | PostgreSQL | `15.x` | PostgreSQL |
|
||||
| Mail | Mail Transfer Agent | | Postfix |
|
||||
@@ -137,8 +122,4 @@ Helmfile requires [HelmDiff](https://github.com/databus23/helm-diff) to compare
|
||||
|
||||
# Footnotes
|
||||
|
||||
[^1]: Due to a [Helm bug](https://github.com/helm/helm/issues/30890) Helm 3.18.0 is not supported.
|
||||
|
||||
[^2]: Due to [restrictions on Kubernetes `emptyDir`](https://github.com/kubernetes/kubernetes/pull/130277) you need a volume provisioner that has sticky bit support, otherwise the OpenProject seeder job will fail.
|
||||
|
||||
[^3]: Required for Dovecot Pro as part of openDesk Enterprise Edition.
|
||||
[^1]: Required for Dovecot Pro as part of openDesk Enterprise Edition.
|
||||
|
||||
@@ -1,39 +1,23 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2025 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
|
||||
-->
|
||||
|
||||
<h1>Scaling</h1>
|
||||
|
||||
This document covers the possibilities to scale the applications in openDesk.
|
||||
This document covers the possibilities to scale applications.
|
||||
|
||||
It provides rough benchmarks for configuring your own environment across various scale levels.
|
||||
In production, resource demands are primarily driven by actual usage patterns and system load, especially the number of concurrently active users.
|
||||
Consequently, we strongly recommend implementing monitoring and logging solutions to detect usage trends and enable timely intervention when needed.
|
||||
# Horizontal scalability
|
||||
|
||||
| Application | Recommendation | Note(s) |
|
||||
| ------------ | -------------- | ------- |
|
||||
| Collabora | - 1 vCPU per 15 active users <br/> - 50 MB RAM per active user <br/> - 1 MBit/s per 10 active users | - |
|
||||
| Element | Per 10k users with values for federation activated / federation deactivated:<br/><br/> Homeserver:<br/> - 15 / 10 vCPU<br/> - 12 / 8 GB RAM<br/><br/>Postgres:<br/> - 10 / 4 vCPU<br/> - 32 / 16 GB RAM | Required hardware resources are impacted by whether or not federation is being used |
|
||||
| Cryptpad | No large-scale deployments seen, minimum requirements: <br/> - 2 vCPU <br/> - 2 GB RAM <br/> - 20 GB storage (depending on planned usage) | Most of the computation is done client-side |
|
||||
| Jitsi | Jitsi-Meet server: <br/> - 4 vCPU <br/> - 8 GB RAM <br/> <br/> For every 200 concurrent users one JVB with: <br/> - 8 vCPU <br/> - 8 GB RAM <br/><br/> Network bandwidth: <br/> - 1 GBit/s - 10 GBit/s small deployments <br/> - 10 Gbit/s *per bridge* large deployments<br/> | JVB network bandwidth calculation depends on the stream resolution (HD vs. 4k). |
|
||||
| Nextcloud | Up to 5k / more than 5k users: <br/> - 4 to 20 Nextcloud AIO Pods with 8 vCPUs and 32 / 64 GB RAM each <br/> - 2 / 4 DB servers with 8 / 16 vCPUs and 64 / 128 GB RAM each, plus DB load balancer | - |
|
||||
| OpenProject | - 4-6 vCPU per ~500 users <br/> - 6-8 GB per ~500 users <br/> - +20-50 GB storage per ~500 users, depending on workload and attachment storage[^1] <br/><br/> - Web Workers: +4 per ~500 users <br/> - Background Workers: +1-2 multithreaded workers per ~500 users, depending on workload | These values are guidelines and should be adjusted based on actual monitoring of resource usage. Scaling should prioritize CPU and RAM, prioritize scaling Web Workers first, followed by Background Workers and Disk Space as needed. |
|
||||
| Open-Xchange | For ~200 users (64 concurrent users to App Suite & 128 users to Dovecot): <br/> - 10 vCPU <br/> - 58 GB RAM <br/> - 660 GB storage | - |
|
||||
| XWiki | Advise for small instances: <br> - 4 vCPU <br/> - 6 GB RAM | - |
|
||||
|
||||
[^1]: Nextcloud is configured for attachment storage as well.
|
||||
We are working on generating this document automatically based on the file
|
||||
[`replicas.yaml.gotmpl`](../helmfile/environments/default/replicas.yaml.gotmpl) that contains necessary annotations.
|
||||
In the meantime, this file can be used to check the components scaling support/capabilities.
|
||||
|
||||
# Upstream information
|
||||
|
||||
While scaling services horizontally is the ideal solution, information about vertical scaling is helpful
|
||||
when defining the application's resources, see [`resources.yaml.gotmpl`](../helmfile/environments/default/resources.yaml.gotmpl) for references.
|
||||
|
||||
Linked below is documentation related to scaling for upstream applications, where publically available:
|
||||
Linked below is documentation related to scaling from the upstream application:
|
||||
|
||||
- [Collabora Online Technical Documentation](https://mautic.collaboraoffice.com/asset/60:collabora-online-technical-information-pdf)
|
||||
- [OpenProject System Requirements](https://www.openproject.org/docs/installation-and-operations/system-requirements/)
|
||||
- [XWiki Performance](https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Performances/)
|
||||
- [Element Requirements and Recommendations](https://ems-docs.element.io/books/element-server-suite-documentation-lts-2404/page/requirements-and-recommendations)
|
||||
- [Jitsi DevOps Guide (scalable setup)](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-scalable/), [Jitsi Meet Needs](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-requirements/)
|
||||
- [OpenProject system requirements](https://www.openproject.org/docs/installation-and-operations/system-requirements/)
|
||||
|
||||
@@ -100,7 +100,6 @@ containerSecurityContext:
|
||||
type: "RuntimeDefault"
|
||||
```
|
||||
|
||||
|
||||
or
|
||||
|
||||
```yaml
|
||||
@@ -112,7 +111,7 @@ containerSecurityContext:
|
||||
## readOnlyRootFilesystem
|
||||
|
||||
|
||||
Containers should have an immutable file systems, so that attackers can not modify application code or download malicious code.
|
||||
Containers should have immutable file systems, so that attackers can not modify application code or download malicious code.
|
||||
|
||||
```yaml
|
||||
containerSecurityContext:
|
||||
@@ -147,7 +146,7 @@ This list gives you an overview of templated security settings and if they compl
|
||||
|
||||
| process | status | allowPrivilegeEscalation | privileged | readOnlyRootFilesystem | runAsNonRoot | runAsUser | runAsGroup | seccompProfile | capabilities |
|
||||
| ------- | ------ | ------------------------ | ---------- | ---------------------- | ------------ | --------- | ---------- | -------------- | ------------ |
|
||||
| **collabora**/collabora-online | :x: | yes | no | no | yes | 1001 | 1001 | yes | no ["CHOWN","FOWNER","SYS_CHROOT"] |
|
||||
| **collabora**/collabora-online | :x: | yes | no | no | yes | 100 | 101 | yes | no ["CHOWN","FOWNER","SYS_CHROOT"] |
|
||||
| **cryptpad**/cryptpad | :x: | no | no | no | yes | 4001 | 4001 | yes | yes |
|
||||
| **element**/matrix-neoboard-widget | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
|
||||
| **element**/matrix-neochoice-widget | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
|
||||
@@ -169,19 +168,22 @@ This list gives you an overview of templated security settings and if they compl
|
||||
| **jitsi**/jitsi/jitsi/web | :x: | no | no | no | no | 0 | 0 | yes | no |
|
||||
| **jitsi**/jitsi/patchJVB | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud-management | :x: | no | no | no | yes | 101 | 101 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud-notifypush | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud/aio | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
|
||||
| **nextcloud**/opendesk-nextcloud/exporter | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
|
||||
| **notes**/impress/backend | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
|
||||
| **notes**/impress/frontend | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
|
||||
| **notes**/impress/y-provider | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
|
||||
| **notes**/impress/backend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **notes**/impress/frontend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **notes**/impress/yProvider | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
|
||||
| **nubus**/intercom-service | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/intercom-service/provisioning | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
|
||||
| **nubus**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/keycloak | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusKeycloakBootstrap | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusGuardian/authorizationApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusGuardian/managementApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusGuardian/managementUi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusGuardian/openPolicyAgent | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusKeycloakBootstrap | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusKeycloakExtensions/handler | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
|
||||
| **nubus**/ums/nubusKeycloakExtensions/proxy | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusKeycloakExtensions/proxy | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
|
||||
| **nubus**/ums/nubusLdapNotifier | :x: | no | n/a | yes | yes | 101 | 102 | yes | yes |
|
||||
| **nubus**/ums/nubusNotificationsApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusPortalConsumer | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
|
||||
@@ -194,7 +196,7 @@ This list gives you an overview of templated security settings and if they compl
|
||||
| **nubus**/ums/nubusUdmListener | :x: | no | n/a | yes | yes | 102 | 65534 | yes | yes |
|
||||
| **nubus**/ums/nubusUdmRestApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusUmcGateway | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
|
||||
| **nubus**/ums/nubusUmcServer | :x: | no | n/a | yes | yes | 999 | 999 | yes | yes |
|
||||
| **nubus**/ums/nubusUmcServer | :x: | no | n/a | yes | no | 0 | 0 | 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 |
|
||||
|
||||
@@ -9,14 +9,14 @@ SPDX-License-Identifier: Apache-2.0
|
||||
* [Overview](#overview)
|
||||
* [Test concept](#test-concept)
|
||||
* [Rely on upstream applications QA](#rely-on-upstream-applications-qa)
|
||||
* [Functional QA (end-to-end tests)](#functional-qa-end-to-end-tests)
|
||||
* [Nightly testing](#nightly-testing)
|
||||
* [Reporting test results](#reporting-test-results)
|
||||
* [Load- and performance testing](#load--and-performance-testing)
|
||||
* [Run minimal functional QA (end-to-end tests)](#run-minimal-functional-qa-end-to-end-tests)
|
||||
* [Run extensive load and performance tests](#run-extensive-load-and-performance-tests)
|
||||
* [Base performance testing](#base-performance-testing)
|
||||
* [Load testing to saturation point](#load-testing-to-saturation-point)
|
||||
* [Load testing up to a defined user count](#load-testing-up-to-a-defined-user-count)
|
||||
* [Overload/recovery tests](#overloadrecovery-tests)
|
||||
* [Reporting and test results](#reporting-and-test-results)
|
||||
* [Allure TestOps](#allure-testops)
|
||||
<!-- TOC -->
|
||||
|
||||
# Overview
|
||||
@@ -42,65 +42,24 @@ We receive the release notes early before a new application release is integrate
|
||||
we are able to check for the existence of a sufficient set of test cases.
|
||||
The suppliers create a set of test cases for each new function.
|
||||
|
||||
## Functional QA (end-to-end tests)
|
||||
## Run minimal functional QA (end-to-end tests)
|
||||
|
||||
We develop and maintain a [set of end-to-end tests](https://gitlab.opencode.de/bmi/opendesk/deployment/e2e-tests) focussing on:
|
||||
To ensure the function of all applications, we run a minimal set of testcases to check the
|
||||
basic functionality of openDesk along with the integrated applications.
|
||||
|
||||
- use cases that are spanning more than a single application, e.g.
|
||||
- the filepicker in OX App Suite for selecting files from Nextcloud or
|
||||
- the central navigation that is part of the top bar of most applications.
|
||||
- openDesk specific configurations/supported settings that can be found in the `functional.yaml.gotmpl`, e.g.
|
||||
- SSO federation or
|
||||
- sharing settings for Nextcloud.
|
||||
- bugs identified in the past, e.g.
|
||||
- creating a folder in OX or
|
||||
- enforcement of an account's password renewal.
|
||||
Furthermore, we analyze all features and use cases which are implemented by a set of more than one
|
||||
application.
|
||||
Not all of these features are testable by the suppliers, so we develop testcases
|
||||
for such features.
|
||||
|
||||
We execute the tests using English and German as language profile.
|
||||
The openDesk application owners prioritize this list of end-to-end-testcases, and we
|
||||
implement these testcases in the [test automation framework](https://gitlab.opencode.de/bmi/opendesk/deployment/e2e-tests).
|
||||
|
||||
The development team utilizes the test automation described above for QA'ing their feature branches.
|
||||
|
||||
### Nightly testing
|
||||
|
||||
We use the functional e2e-tests in nightly testruns on a matrix of deployments addressing different application profiles to ensure the quality of the development branch's current state.
|
||||
|
||||
The following naming scheme is applied for the deployment matrix:
|
||||
|
||||
- `<edition>-<type>-<profile>` resulting e.g. in `ce-init-default` or `ee-upgr-extsrv`
|
||||
|
||||
**`<edition>`**
|
||||
|
||||
- `ce`: openDesk Community Edition
|
||||
- `ee`: openDesk Enterprise Edition
|
||||
|
||||
**`<type>`**
|
||||
|
||||
- `init`: Initial / fresh / from the scratch deployment of `develop` branch into an empty namespace.
|
||||
- `upgr`: Deploy latest migration release (needs to be pinned manually) into an empty namespace, afterwards run upgrade deployment with current state of `develop` branch.
|
||||
- `upd`: Deploy latest release (`main` branch) into an empty namespace, afterwards run upgrade deployment with current state of `develop` branch.
|
||||
|
||||
**`<profile>`**: The following profiles are defined
|
||||
- `default`: With
|
||||
- *`functional.yaml`*: No changes beside specific `2FA testing` group and enabled UDM REST API (required for user import).
|
||||
- *Services*: Internal services deployed with openDesk are used.
|
||||
- *Secrets*: Master password based secrets based on `secrets.yaml.gotmpl`
|
||||
- *Certificates*: Letsencrypt-prod certificates are used.
|
||||
- *Deployment*: GitLab CI based deployment.
|
||||
- `funct1`: Different configuration of `functional.yaml`, self-signed-certs [and when available external secrets].
|
||||
- `extsrv`: External services (where possible).
|
||||
- `gitops`: Argo CD based deployment.
|
||||
|
||||
### Reporting test results
|
||||
|
||||
All executions of the end-to-end tests are tracked in a central platform running [Allure TestOps](https://docs.qameta.io/allure-testops/).
|
||||
|
||||
As the TestOps tool contains infrastructure details of our development and test clusters it is currently only accessible for to project members.
|
||||
|
||||
## Load- and performance testing
|
||||
## Run extensive load and performance tests
|
||||
|
||||
Our goal is to deliver openDesk as application-grade software with the ability to serve large user bases.
|
||||
|
||||
We create and perform [load- and performance tests](https://gitlab.opencode.de/bmi/opendesk/deployment/load-tests) for each release of openDesk.
|
||||
We create and perform extensive load and performance tests for each release of openDesk.
|
||||
|
||||
Our approach consists of different layers of load testing.
|
||||
|
||||
@@ -150,4 +109,30 @@ If necessary, we perform overload tests, which will saturate the system with mul
|
||||
test cases until no further increase in throughput is visible. Then we add even more load
|
||||
until the first HTTP requests run into timeouts or errors.
|
||||
After a few minutes, we reduce the load below the saturation point.
|
||||
Now we can check if the system is able to recover from the overload status.
|
||||
Then we check if the system is able to recover from the overload status.
|
||||
|
||||
# Reporting and test results
|
||||
|
||||
We perform test runs every night, on all of our environments.
|
||||
|
||||
For each environment, we define so-called profiles, these contain the features enabled
|
||||
per environment.
|
||||
|
||||
For example: Testing the email features in an environment without deployment of Open-Xchange makes no sense at all.
|
||||
|
||||
Also, we test the whole system via a browser with `language=DE` and another browser with `language=EN`.
|
||||
|
||||
The test results are saved in an [Allure TestOps](https://qameta.io/) server, so interested persons
|
||||
are able to view the test results later in detail.
|
||||
|
||||
## Allure TestOps
|
||||
|
||||
The Allure TestOps [server](https://testops.opendesk.run/) is currently only accessible to project members.
|
||||
|
||||
The relevant project is called *opendesk*.
|
||||
|
||||
To get an overview, click in the left symbol list onto the symbol "Rocket" to
|
||||
check all relevant launches.
|
||||
|
||||
Now you can see the launch #xxxx, and directly check for the success
|
||||
of this launch.
|
||||
|
||||
@@ -14,17 +14,17 @@ This document covers the theming options for an openDesk deployment.
|
||||
|
||||
# Settings
|
||||
|
||||
All default settings can be found in [`theme.yaml.gotmpl`](../helmfile/environments/default/theme.yaml.gotmpl). Most of the components adhere to these settings.
|
||||
All default settings can be found in [`theme.gotmpl`](../helmfile/environments/default/theme.gotmpl). Most of the components adhere to these settings.
|
||||
|
||||
Please review the default configuration that is applied to understand your customization options.
|
||||
|
||||
You can just update the files in [helmfile/files/theme](../helmfile/files/theme) to change logos, favicons etc. Note that the `.svg` versions of the favicons are also used for the portal tiles.
|
||||
|
||||
> **Note**<br>
|
||||
> Theming focuses on colors, iconography and imagery. If you like to adapt the default links in the portal pointing to external
|
||||
> resources (like "Support", "Legal Notice") please check the `functional.portal` section
|
||||
> in [`functional.yaml.gotmpl`](../helmfile/environments/default/functional.yaml.gotmpl)
|
||||
You can just update the files in:
|
||||
- [helmfile/files/theme](../helmfile/files/theme): To change logos, favicons etc.
|
||||
- [helmfile/files/portal-tiles](../helmfile/files/portal-tiles): To change the icons in the portal.
|
||||
|
||||
# Known limitations
|
||||
|
||||
- Portal and Keycloak screen styles, especially colors, must be applied in the [`portalStylesheets.css`](../helmfile/files/theme/portalStylesheet.css),
|
||||
Not all applications support theming. Known exceptions are:
|
||||
- OpenProject, comes with a build in openDesk theming that can be modified in the Enterprise version's OpenProject web interface.
|
||||
- The portal background logo can (currently) only be set on initial deployment.
|
||||
- Portal and Keycloak screen styles must be applied in the [`portalStylesheets.css`](../helmfile/files/theme/portalStylesheet.css).
|
||||
|
||||
@@ -238,7 +238,7 @@ The Standard Quality Gate addresses quality assurance steps that should be execu
|
||||
1. Linting
|
||||
- Blocking
|
||||
- Licensing: [reuse](https://github.com/fsfe/reuse-tool)
|
||||
- openDesk specific: Especially `images.yaml.gotmpl` and `charts.yaml.gotmpl`, find more details in [development.md](./docs/developer/development.md).
|
||||
- openDesk specific: Especially `images.yaml.gotmpl` and `charts.yaml.gotmpl`, find more details in [development.md](./docs/development.md).
|
||||
- Non-Blocking
|
||||
- Security: [Kyverno policy check](../.kyverno) addressing some IT-Grundschutz requirements
|
||||
- Formal: Yaml
|
||||
@@ -355,15 +355,12 @@ Example: `tmueller/fix_jitsi_theming`.
|
||||
|
||||
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.
|
||||
|
||||
> **Note**<br>
|
||||
> The first letter after the `: ` must be uppercase.
|
||||
|
||||
```text
|
||||
<type>(<scope>): <Short summary> [path/to/issue#1]
|
||||
<type>(<scope>): [path/to/issue#1] <short summary>.
|
||||
│ │ │ │
|
||||
│ │ | └─> Issue reference (optional)
|
||||
│ │ | └─> Summary in present tense, sentence case, with no period at the end
|
||||
│ │ |
|
||||
│ │ └─> Summary in present tense, sentence case, with no period at the end
|
||||
│ │ └─> Issue reference (optional)
|
||||
│ │
|
||||
│ └─> Commit Scope: helmfile, docs, collabora, nextcloud, open-xchange, etc.
|
||||
│
|
||||
@@ -373,11 +370,11 @@ Commit messages must adhere to the [Conventional Commit standard](https://www.co
|
||||
Example: `fix(open-xchange): Bump to 8.26 to heal issue with functional mailbox provisioning.`
|
||||
|
||||
> **Note**<br>
|
||||
> The commit messages are an essential part of the [technical releases](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/releases) as the release notes are generated from these messages.
|
||||
> The commit messages are an essential part of the [technical releases](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/releases) as the release's notes are generated from the messages.
|
||||
|
||||
#### Verified commits
|
||||
|
||||
We only allow verified commits; please read on about the options you have to make your commits verified:
|
||||
We only allow verified commits; please read about the options you have to make your commits verified:
|
||||
- https://docs.gitlab.com/user/project/repository/signed_commits/ssh/
|
||||
- https://docs.gitlab.com/user/project/repository/signed_commits/gpg/
|
||||
- https://docs.gitlab.com/user/project/repository/signed_commits/x509/
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
controller:
|
||||
enableHashmapParallelization: true
|
||||
@@ -31,10 +33,6 @@ imagePullSecrets:
|
||||
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
annotations:
|
||||
{{- with .Values.annotations.coco.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
className: {{ .Values.ingress.ingressClassName | quote }}
|
||||
hosts:
|
||||
- host: "{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}"
|
||||
@@ -46,8 +44,7 @@ ingress:
|
||||
hosts:
|
||||
- "{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}"
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.coco.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -68,7 +65,4 @@ replicaCount: {{ .Values.replicas.collaboraController }}
|
||||
resources:
|
||||
{{ .Values.resources.collaboraController | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.coco.serviceAccount | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
image:
|
||||
repository: "{{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
*/}}
|
||||
---
|
||||
autoscaling:
|
||||
enabled: false
|
||||
@@ -30,7 +32,7 @@ collabora:
|
||||
{{- end }}
|
||||
{{- if .Values.apps.collaboraController.enabled }}
|
||||
--o:indirection_endpoint.url=https://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/routeToken
|
||||
--o:monitors.monitor[0]=ws://collabora-controller-cool-controller:9000/controller/ws
|
||||
--o:monitors.monitor[0]=wss://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/ws
|
||||
--o:monitors.monitor[0][@retryInterval]=5
|
||||
{{- end }}
|
||||
username: "collabora-internal-admin"
|
||||
@@ -63,35 +65,6 @@ ingress:
|
||||
location /cool/getMetrics { deny all; return 403; }
|
||||
location /cool/adminws/ { deny all; return 403; }
|
||||
location /browser/dist/admin/admin.html { deny all; return 403; }
|
||||
# NGINX
|
||||
nginx.org/websocket-services: "collabora"
|
||||
nginx.org/lb-method: "hash $arg_WOPISrc consistent"
|
||||
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: "{{ .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: "{{ .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
|
||||
# block admin urls from outside
|
||||
acl admin_url path_beg /cool/getMetrics
|
||||
acl admin_url path_beg /cool/adminws/
|
||||
acl admin_url path_beg /browser/dist/admin/admin.html
|
||||
http-request deny if admin_url
|
||||
{{- with .Values.annotations.collabora.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName | quote }}
|
||||
hosts:
|
||||
@@ -104,11 +77,10 @@ ingress:
|
||||
hosts:
|
||||
- "{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}"
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.collabora.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
fsGroup: 1001
|
||||
fsGroup: 100
|
||||
|
||||
prometheus:
|
||||
servicemonitor:
|
||||
@@ -130,8 +102,8 @@ securityContext:
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: false
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1001
|
||||
runAsGroup: 1001
|
||||
runAsUser: 100
|
||||
runAsGroup: 101
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
capabilities:
|
||||
@@ -144,13 +116,6 @@ securityContext:
|
||||
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.collabora | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
annotations:
|
||||
{{ .Values.annotations.collabora.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.collabora.service | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
# https://github.com/cryptpad/helm/blob/main/charts/cryptpad/README.md or
|
||||
# https://github.com/cryptpad/helm/blob/main/charts/cryptpad/values.yaml
|
||||
@@ -37,9 +39,6 @@ ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
annotations:
|
||||
nginx.org/websocket-services: "cryptpad"
|
||||
{{- with .Values.annotations.cryptpad.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
className: {{ .Values.ingress.ingressClassName | quote }}
|
||||
hosts:
|
||||
- host: "{{ .Values.global.hosts.cryptpad }}.{{ .Values.global.domain }}"
|
||||
@@ -54,8 +53,7 @@ ingress:
|
||||
persistence:
|
||||
enabled: false
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.cryptpad.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
fsGroup: 4001
|
||||
@@ -82,8 +80,6 @@ securityContext:
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
annotations:
|
||||
{{ .Values.annotations.cryptpad.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
workloadStateful: false
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.element.common | toYaml | nindent 2 }}
|
||||
|
||||
configuration:
|
||||
endToEndEncryption: true
|
||||
additionalConfiguration:
|
||||
@@ -137,11 +136,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.element.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.element.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -152,14 +148,6 @@ replicaCount: {{ .Values.replicas.element }}
|
||||
resources:
|
||||
{{ .Values.resources.element | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.element.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.element.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
theme:
|
||||
title: "Chat - {{ .Values.theme.texts.productName }}"
|
||||
{{ .Values.theme | toYaml | nindent 2 }}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeoboardWidget.additional | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -40,11 +39,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeoboardWidget.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeoboardWidget.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -55,14 +51,6 @@ replicaCount: {{ .Values.replicas.matrixNeoBoardWidget }}
|
||||
resources:
|
||||
{{ .Values.resources.matrixNeoBoardWidget | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeoboardWidget.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeoboardWidget.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
theme:
|
||||
{{ .Values.theme | toYaml | nindent 2 }}
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeochoiceWidget.additional | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -40,11 +39,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeochoiceWidget.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeochoiceWidget.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -52,14 +48,6 @@ podSecurityContext:
|
||||
|
||||
replicaCount: {{ .Values.replicas.matrixNeoChoiceWidget }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeochoiceWidget.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeochoiceWidget.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
theme:
|
||||
{{ .Values.theme | toYaml | nindent 2 }}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
@@ -24,8 +26,7 @@ image:
|
||||
|
||||
fullnameOverride: "matrix-neodatefix-bot-bootstrap"
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBotBootstrap.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -42,7 +43,4 @@ securityContext:
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.synapseCreateUser | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBotBootstrap.serviceAccount | toYaml | nindent 2 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.additional | toYaml | nindent 2 }}
|
||||
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
hosts:
|
||||
@@ -77,8 +76,6 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.ingress | toYaml | nindent 4 }}
|
||||
|
||||
liveness sample:
|
||||
enabled: true
|
||||
@@ -86,11 +83,8 @@ liveness sample:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.matrixNeoDateFixBot.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.matrixNeoDateFixBot.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -104,12 +98,4 @@ replicaCount: {{ .Values.replicas.matrixNeoDateFixBot }}
|
||||
resources:
|
||||
{{ .Values.resources.matrixNeoDateFixBot | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixBot.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixWidget.additional | toYaml | nindent 2 }}
|
||||
|
||||
configuration:
|
||||
bot:
|
||||
username: "meetings-bot"
|
||||
@@ -45,11 +44,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixWidget.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixWidget.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -63,14 +59,6 @@ resources:
|
||||
theme:
|
||||
{{ .Values.theme | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixWidget.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixNeodatefixWidget.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
nginx:
|
||||
ipv4Only: {{ if eq .Values.cluster.networking.ipFamilies "IPv4" }}true{{ else }}false{{ end }}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
@@ -24,8 +26,7 @@ image:
|
||||
|
||||
fullnameOverride: "opendesk-matrix-user-verification-service-bootstrap"
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationServiceBootstrap.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -41,10 +42,4 @@ securityContext:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.synapseCreateUser | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationServiceBootstrap.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
|
||||
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationService.additional | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -43,8 +42,7 @@ image:
|
||||
repository: {{ .Values.images.matrixUserVerificationService.repository | quote }}
|
||||
tag: {{ .Values.images.matrixUserVerificationService.tag | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationService.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -55,12 +53,4 @@ replicaCount: {{ .Values.replicas.matrixUserVerificationService }}
|
||||
resources:
|
||||
{{ .Values.resources.matrixUserVerificationService | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationService.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementMatrixUserVerificationService.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.elementSynapseWeb.common | toYaml | nindent 2 }}
|
||||
|
||||
clusterDomain: {{ .Values.cluster.networking.domain }}
|
||||
|
||||
containerSecurityContext:
|
||||
@@ -45,9 +44,6 @@ ingress:
|
||||
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"
|
||||
{{- with .Values.annotations.elementSynapseWeb.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
host: "{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}"
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
@@ -55,8 +51,7 @@ ingress:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementSynapseWeb.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -67,12 +62,4 @@ replicaCount: {{ .Values.replicas.synapseWeb }}
|
||||
resources:
|
||||
{{ .Values.resources.synapseWeb | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapseWeb.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapseWeb.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.elementSynapse.common | toYaml | nindent 2 }}
|
||||
|
||||
configuration:
|
||||
additionalConfiguration:
|
||||
user_directory:
|
||||
@@ -218,8 +217,6 @@ federation:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapse.federationIngress | toYaml | nindent 6 }}
|
||||
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -237,11 +234,8 @@ image:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.synapse.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.synapse.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapse.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementSynapse.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -256,14 +250,6 @@ replicaCount: {{ .Values.replicas.synapse }}
|
||||
resources:
|
||||
{{ .Values.resources.synapse | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapse.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementSynapse.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
tls:
|
||||
secretName: {{ if .Values.global.matrixDomain }}"opendesk-certificates-synapse-tls"{{ else }}"opendesk-certificates-tls"{{ end }}
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.elementWellKnown.common | toYaml | nindent 2 }}
|
||||
|
||||
configuration:
|
||||
e2ee:
|
||||
forceDisable: false
|
||||
@@ -45,11 +44,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.elementWellKnown.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.elementWellKnown.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -60,11 +56,4 @@ replicaCount: {{ .Values.replicas.wellKnown }}
|
||||
resources:
|
||||
{{ .Values.resources.wellKnown | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementWellKnown.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.elementWellKnown.serviceAccount | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -8,10 +10,8 @@ global:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
{{- if .Values.annotations.jitsiGlobal.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiGlobal.pod | toYaml | nindent 4}}
|
||||
{{- end }}
|
||||
podAnnotations: {}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
enabled: true
|
||||
@@ -77,12 +77,6 @@ jitsi:
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
{{- if .Values.annotations.jitsiWeb.ingress }}
|
||||
annotations:
|
||||
{{- with .Values.annotations.jitsiWeb.ingress }}
|
||||
{{ . | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
hosts:
|
||||
- host: "{{ .Values.global.hosts.jitsi }}.{{ .Values.global.domain }}"
|
||||
@@ -110,10 +104,6 @@ jitsi:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.jitsi | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiWeb.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiWeb.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
prosody:
|
||||
image:
|
||||
repository: "{{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.prosody.registry }}/{{ .Values.images.prosody.repository }}"
|
||||
@@ -163,10 +153,6 @@ jitsi:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.prosody | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiProsody.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiProsody.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
jicofo:
|
||||
replicaCount: {{ .Values.replicas.jicofo }}
|
||||
image:
|
||||
@@ -190,10 +176,6 @@ jitsi:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.jicofo | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiJicofo.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiJicofo.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
jigasi:
|
||||
replicaCount: {{ .Values.replicas.jigasi }}
|
||||
enabled: {{ .Values.sip.jigasi.enabled }}
|
||||
@@ -223,10 +205,6 @@ jitsi:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.jigasi | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiJigasi.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiJigasi.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
jvb:
|
||||
replicaCount: {{ .Values.replicas.jvb }}
|
||||
# The `useNodeIP` option provided by the upstream charts does not support all relevant scenarios, but since
|
||||
@@ -243,10 +221,6 @@ jitsi:
|
||||
{{ .Values.resources.jvb | toYaml | nindent 6 }}
|
||||
service:
|
||||
type: {{ coalesce .Values.service.type.jitsiVideoBridge .Values.cluster.service.type | quote }}
|
||||
{{- if .Values.annotations.jitsiJvb.service }}
|
||||
annotations:
|
||||
{{ .Values.annotations.jitsiJvb.service | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities: {}
|
||||
@@ -259,18 +233,6 @@ jitsi:
|
||||
type: "RuntimeDefault"
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.jvb | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiJvb.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiJvb.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
metrics:
|
||||
prometheusAnnotations:
|
||||
{{ .Values.annotations.jitsiJvb.metricsPrometheus | toYaml | nindent 8 }}
|
||||
{{- if .Values.annotations.jitsiJvb.metricsGrafana }}
|
||||
grafanaDashboards:
|
||||
annotations:
|
||||
{{ .Values.annotations.jitsiJvb.metricsGrafana | toYaml | nindent 10 }}
|
||||
{{- end }}
|
||||
jibri:
|
||||
replicaCount: {{ .Values.replicas.jibri }}
|
||||
image:
|
||||
@@ -287,19 +249,10 @@ jitsi:
|
||||
# Chart does not allow to template more
|
||||
capabilities:
|
||||
add: ["SYS_ADMIN"]
|
||||
{{- if .Values.annotations.jitsiJibri.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsiJibri.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.annotations.jitsi.serviceAccount }}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.jitsi.serviceAccount | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
patchJVB:
|
||||
configuration:
|
||||
@@ -322,21 +275,14 @@ patchJVB:
|
||||
{{ .Values.seLinuxOptions.jitsiPatchJVB | toYaml | nindent 6 }}
|
||||
image:
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.jitsiPatchJVB.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.jitsiPatchJVB.registry | quote }}
|
||||
repository: {{ .Values.images.jitsiPatchJVB.repository | quote }}
|
||||
tag: {{ .Values.images.jitsiPatchJVB.tag | quote }}
|
||||
|
||||
{{- if .Values.annotations.jitsi.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.jitsi.pod | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
podAnnotations: {}
|
||||
|
||||
replicaCount: {{ .Values.replicas.jitsiKeycloakAdapter }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.jitsiKeycloakAdapter | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.jitsi.serviceAccount | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -24,9 +24,9 @@ releases:
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
|
||||
version: "{{ .Values.charts.nextcloudManagement.version }}"
|
||||
values:
|
||||
- "values-nextcloud-management.yaml.gotmpl"
|
||||
- "values-nextcloud-mgmt.yaml.gotmpl"
|
||||
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
|
||||
- "values-nextcloud-management-ee.yaml.gotmpl"
|
||||
- "values-nextcloud-mgmt-enterprise.yaml.gotmpl"
|
||||
{{- end }}
|
||||
{{- range .Values.customization.release.opendeskNextcloudManagement }}
|
||||
- {{ . }}
|
||||
@@ -34,14 +34,14 @@ releases:
|
||||
waitForJobs: true
|
||||
wait: true
|
||||
installed: {{ .Values.apps.nextcloud.enabled }}
|
||||
timeout: 1800
|
||||
timeout: 900
|
||||
- name: "opendesk-nextcloud"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
|
||||
version: "{{ .Values.charts.nextcloud.version }}"
|
||||
values:
|
||||
- "values-nextcloud.yaml.gotmpl"
|
||||
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
|
||||
- "values-nextcloud-ee.yaml.gotmpl"
|
||||
- "values-nextcloud-enterprise.yaml.gotmpl"
|
||||
{{- end }}
|
||||
{{- range .Values.customization.release.opendeskNextcloud }}
|
||||
- {{ . }}
|
||||
@@ -49,23 +49,6 @@ releases:
|
||||
needs:
|
||||
- "opendesk-nextcloud-management"
|
||||
installed: {{ .Values.apps.nextcloud.enabled }}
|
||||
timeout: 1800
|
||||
- name: "opendesk-nextcloud-notifypush"
|
||||
chart: "nextcloud-repo/{{ .Values.charts.nextcloudNotifyPush.name }}"
|
||||
version: "{{ .Values.charts.nextcloudNotifyPush.version }}"
|
||||
values:
|
||||
- "values-nextcloud-notifypush.yaml.gotmpl"
|
||||
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
|
||||
- "values-nextcloud-notifypush-ee.yaml.gotmpl"
|
||||
{{- end }}
|
||||
{{- range .Values.customization.release.opendeskNextcloudNotifyPush }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
wait: true
|
||||
needs:
|
||||
- "opendesk-nextcloud"
|
||||
installed: {{ and .Values.apps.nextcloud.enabled (gt .Values.replicas.nextcloudNotifyPush 0) }}
|
||||
timeout: 1800
|
||||
|
||||
commonLabels:
|
||||
deployStage: "050-components"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
aio:
|
||||
image:
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -10,10 +12,7 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-php"
|
||||
{{- with .Values.annotations.nextcloudNextcloudMgmt.additional }}
|
||||
{{ . | toYaml | nindent 2}}
|
||||
{{- end }}
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-management"
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
@@ -65,8 +64,6 @@ configuration:
|
||||
enabled: true
|
||||
integrationOpenproject:
|
||||
enabled: {{ .Values.apps.openproject.enabled }}
|
||||
notifyPush:
|
||||
enabled: {{ gt .Values.replicas.nextcloudNotifyPush 0 }}
|
||||
spreed:
|
||||
enabled: true
|
||||
circles:
|
||||
@@ -75,7 +72,6 @@ configuration:
|
||||
collabora:
|
||||
# internalWopiUrl: ""
|
||||
wopiAllowlist: {{ join ", " ( concat .Values.cluster.networking.cidr .Values.cluster.networking.incomingCIDR ) | quote }}
|
||||
defaultFormat: {{ .Values.functional.weboffice.defaultFormat | quote }}
|
||||
|
||||
database:
|
||||
{{ if eq .Values.databases.nextcloud.type "mariadb" }}
|
||||
@@ -101,9 +97,7 @@ configuration:
|
||||
{{- end }}
|
||||
|
||||
ldap:
|
||||
base: {{ .Values.ldap.baseDn | quote }}
|
||||
host: {{ .Values.ldap.host | quote }}
|
||||
dn: "uid=ldapsearch_nextcloud,cn=users,{{ .Values.ldap.baseDn }}"
|
||||
password:
|
||||
value: {{ .Values.secrets.nubus.ldapSearch.nextcloud | quote }}
|
||||
adminGroupName: "managed-by-attribute-FileshareAdmin"
|
||||
@@ -175,9 +169,6 @@ configuration:
|
||||
token:
|
||||
value: {{ .Values.secrets.nextcloud.metricsToken | quote }}
|
||||
|
||||
# A sane default for windows clients would be: `* " | & ? , ; : \ / ~ < >`
|
||||
forbiddenChars: "* \" | & ? , ; : \\ / ~ < >"
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -193,6 +184,8 @@ containerSecurityContext:
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.nextcloudManagement | toYaml | nindent 4 }}
|
||||
podSecurityContext:
|
||||
fsGroup: 101
|
||||
|
||||
debug:
|
||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"2"{{ end }}
|
||||
@@ -221,47 +214,10 @@ image:
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.nextcloud.tag | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nextcloudNextcloudMgmt.pod | toYaml | nindent 2 }}
|
||||
|
||||
podSecurityContext:
|
||||
fsGroup: 101
|
||||
theme:
|
||||
{{ .Values.theme | toYaml | nindent 2 }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.nextcloud | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudNextcloudMgmt.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
theme:
|
||||
background:
|
||||
# Static color background
|
||||
# NOTE: Not available yet because of a bug in Nextcloud 31.X
|
||||
# Ref: https://github.com/nextcloud/server/commit/da51459022d21a569ab8271c5456f69c9316cdad
|
||||
color: {{ .Values.theme.colors.primary | quote }}
|
||||
# PNG or JPEG image background. Overwrites `theme.background.color`
|
||||
imgBase64: {{ .Values.theme.imagery.files.backgroudImg | quote }}
|
||||
|
||||
colors:
|
||||
primary: {{ .Values.theme.colors.primary | quote }}
|
||||
|
||||
favicon:
|
||||
pngBase64: {{ .Values.theme.imagery.files.faviconPng | quote }}
|
||||
|
||||
logo:
|
||||
svgBase64: {{ .Values.theme.imagery.logoHeaderSvgB64 | quote }}
|
||||
|
||||
# Overwrites the header color of Nextcloud with the value set in the `integration_swp` app
|
||||
# This can *intentionally* only be adjusted via customizing
|
||||
swpOverrideHeaderColor: true
|
||||
|
||||
texts:
|
||||
slogan: {{ .Values.theme.texts.slogan | quote }}
|
||||
productName: {{ .Values.theme.texts.productName | quote }}
|
||||
|
||||
urls:
|
||||
imprint: {{ .Values.functional.portal.linkLegalNotice | quote }}
|
||||
privacy: {{ .Values.functional.portal.linkPrivacyStatement | quote }}
|
||||
main: {{ printf "%s.%s" .Values.global.hosts.nubus .Values.global.domain }}
|
||||
...
|
||||
@@ -1,6 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}
|
||||
...
|
||||
@@ -1,141 +0,0 @@
|
||||
# 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
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-notifypush"
|
||||
{{- with .Values.annotations.nextcloudNotifyPush.additional }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
configuration:
|
||||
cache:
|
||||
auth:
|
||||
enabled: true
|
||||
username:
|
||||
value: {{ .Values.cache.nextcloud.username }}
|
||||
password:
|
||||
value: {{ .Values.cache.nextcloud.password | default .Values.secrets.redis.password | quote }}
|
||||
host: {{ .Values.cache.nextcloud.host | quote }}
|
||||
port: {{ .Values.cache.nextcloud.port | quote }}
|
||||
tls: {{ .Values.cache.nextcloud.tls }}
|
||||
database:
|
||||
{{ if eq .Values.databases.nextcloud.type "mariadb" }}
|
||||
type: "mysql"
|
||||
{{ else if eq .Values.databases.nextcloud.type "postgresql" }}
|
||||
type: "postgres"
|
||||
{{ else }}
|
||||
{{ .Values.databases.nextcloud.type | quote }}
|
||||
{{ end }}
|
||||
host: {{ .Values.databases.nextcloud.host | quote }}
|
||||
port: {{ .Values.databases.nextcloud.port | quote }}
|
||||
name: {{ .Values.databases.nextcloud.name | quote }}
|
||||
auth:
|
||||
username:
|
||||
value: {{ .Values.databases.nextcloud.username | quote }}
|
||||
password:
|
||||
{{- if or (eq .Values.databases.nextcloud.type "mariadb") (eq .Values.databases.nextcloud.type "mysql") }}
|
||||
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.mariadb.nextcloudUser | quote }}
|
||||
{{- else if or (eq .Values.databases.nextcloud.type "postgresql") (eq .Values.databases.nextcloud.type "psql") }}
|
||||
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.postgresql.nextcloudUser | quote }}
|
||||
{{- else }}
|
||||
value: {{ .Values.databases.nextcloud.password | quote }}
|
||||
{{- end }}
|
||||
trustedProxy: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
# Nextcloud connection
|
||||
# FIXME: Dynamically get the service name of the `opendesk-nextcloud-aio` chart
|
||||
# IDEA: helmfile > service-names.yaml.gotmpl with service names (external/internal)
|
||||
# So this is controller on a more "global" level
|
||||
# TODO: Find a sensible default
|
||||
nextcloudUrl: "http://opendesk-nextcloud-aio"
|
||||
logging:
|
||||
# Default value for logging is "error" we bump it to "info" for better information in logs
|
||||
# NOTE: "trace", which includes "debug" might be too verbose
|
||||
# https://docs.rs/env_logger/latest/env_logger/#enabling-logging
|
||||
level: {{ if .Values.debug.enabled }}"debug"{{ else }}"info"{{ end }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
enabled: true
|
||||
privileged: false
|
||||
runAsUser: 101
|
||||
runAsGroup: 101
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.nextcloud | toYaml | nindent 6 }}
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraEnvVars:
|
||||
- name: "FS_ENV_CA_CERTIFICATE_PATH"
|
||||
value: "/etc/ssl/certs/ca-certificates.crt"
|
||||
extraVolumes:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
secret:
|
||||
secretName: "opendesk-certificates-ca-tls"
|
||||
items:
|
||||
- key: "ca.crt"
|
||||
path: "ca-certificates.crt"
|
||||
extraVolumeMounts:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
mountPath: "/etc/ssl/certs/ca-certificates.crt"
|
||||
subPath: "ca-certificates.crt"
|
||||
{{- end }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}
|
||||
repository: {{ .Values.images.nextcloud.repository | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.nextcloud.tag | quote }}
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
annotations:
|
||||
{{- with .Values.annotations.nextcloudNotifyPush.ingress }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
metrics:
|
||||
enabled: true
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudNotifyPush.serviceMetrics | toYaml | nindent 6 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nextcloudNotifyPush.pod | toYaml | nindent 4 }}
|
||||
podSecurityContext:
|
||||
fsGroup: 101
|
||||
# prometheus:
|
||||
# serviceMonitor:
|
||||
# enabled: { .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
# labels:
|
||||
# { .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
||||
# prometheusRule:
|
||||
# enabled: { .Values.monitoring.prometheus.prometheusRules.enabled }}
|
||||
# additionalLabels:
|
||||
# { .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
||||
replicaCount: {{ .Values.replicas.nextcloudNotifyPush }}
|
||||
resources:
|
||||
{{ .Values.resources.nextcloudNotifyPush | toYaml | nindent 4 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudNotifyPush.service | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudNotifyPush.serviceAccount | toYaml | nindent 6 }}
|
||||
|
||||
...
|
||||
@@ -1,19 +1,14 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
exporter:
|
||||
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-exporter"
|
||||
{{- with .Values.annotations.nextcloudExporter.additional }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
enabled: true
|
||||
configuration:
|
||||
server: "http://opendesk-nextcloud-aio"
|
||||
@@ -39,8 +34,7 @@ exporter:
|
||||
repository: "{{ .Values.images.nextcloudExporter.repository }}"
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.nextcloudExporter.tag | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nextcloudExporter.pod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
prometheus:
|
||||
serviceMonitor:
|
||||
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
|
||||
@@ -54,17 +48,9 @@ exporter:
|
||||
resources:
|
||||
{{ .Values.resources.nextcloudExporter | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudExporter.serviceAccount | toYaml | nindent 6 }}
|
||||
|
||||
aio:
|
||||
additionalAnnotations:
|
||||
intents.otterize.com/service-name: "opendesk-nextcloud-aio"
|
||||
{{- with .Values.annotations.nextcloudAio.additional }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
configuration:
|
||||
cache:
|
||||
auth:
|
||||
@@ -153,15 +139,11 @@ aio:
|
||||
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"
|
||||
{{- with .Values.annotations.nextcloudAio.ingress }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nextcloudAio.pod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
podSecurityContext:
|
||||
fsGroup: 101
|
||||
prometheus:
|
||||
@@ -177,12 +159,4 @@ aio:
|
||||
resources:
|
||||
{{ .Values.resources.nextcloud | toYaml | nindent 4 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudAio.service | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nextcloudAio.serviceAccount | toYaml | nindent 6 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,197 +1,242 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
collaborationServerSecret:
|
||||
value: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
yProviderApiKey:
|
||||
value: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
fqdn: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
tlsSecretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
backend:
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry | quote }}
|
||||
repository: {{ .Values.images.notesBackend.repository | quote }}
|
||||
pullPolicy: "IfNotPresent"
|
||||
tag: {{ .Values.images.notesBackend.tag | quote }}
|
||||
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry) (.Values.images.notesBackend.repository) | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.notesBackend.tag }}
|
||||
credentials:
|
||||
name: {{ .Values.global.imagePullSecrets | first | quote }}
|
||||
|
||||
ingress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName }}
|
||||
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
enabled: "{{ .Values.ingress.tls.enabled }}"
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
ingressCollaborationWS:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName }}
|
||||
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
path: "/collaboration/ws/"
|
||||
tls:
|
||||
enabled: "{{ .Values.ingress.tls.enabled }}"
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
"nginx.ingress.kubernetes.io/proxy-body-size": "{{ .Values.ingress.parameters.bodySize.notes }}"
|
||||
"nginx.ingress.kubernetes.io/proxy-read-timeout": "{{ .Values.ingress.parameters.bodyTimeout.notes }}"
|
||||
"nginx.ingress.kubernetes.io/proxy-send-timeout": "{{ .Values.ingress.parameters.bodyTimeout.notes }}"
|
||||
{{- if .Values.annotations.notesBackend.ingress }}
|
||||
{{ .Values.annotations.notesBackend.ingress | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Can-Edit, X-User-Id"
|
||||
nginx.ingress.kubernetes.io/auth-url: https://{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}/api/v1.0/documents/collaboration-auth/
|
||||
nginx.ingress.kubernetes.io/enable-websocket: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "86400"
|
||||
nginx.ingress.kubernetes.io/upstream-hash-by: $arg_room
|
||||
|
||||
ingressAdmin:
|
||||
enabled: true
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName }}
|
||||
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
enabled: "{{ .Values.ingress.tls.enabled }}"
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
ingressMedia:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName }}
|
||||
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
annotations:
|
||||
{{ .Values.annotations.notesBackend.ingressAdmin | toYaml | nindent 6 }}
|
||||
replicaCount: {{ .Values.replicas.notesBackend }}
|
||||
containerSecurityContext:
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
|
||||
configuration:
|
||||
ai:
|
||||
apiKey:
|
||||
value: {{ .Values.ai.apiKey }}
|
||||
baseUrl: {{ .Values.ai.endpoint }}
|
||||
model: {{ .Values.ai.model | quote }}
|
||||
aws:
|
||||
endpointUrl: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
|
||||
s3AccessKeyId:
|
||||
value: {{ .Values.objectstores.notes.username }}
|
||||
s3SecretAccessKey:
|
||||
value: {{ .Values.objectstores.notes.secretKey | default .Values.secrets.minio.notesUser | quote }}
|
||||
storageBucketName: {{ .Values.objectstores.notes.bucket }}
|
||||
collaboration:
|
||||
apiUrl: {{ printf "https://%s.%s/collaboration/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
wsUrl: {{ printf "wss://%s.%s/collaboration/ws/" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
database:
|
||||
host: {{ .Values.databases.notes.host | quote }}
|
||||
name: {{ .Values.databases.notes.name | quote }}
|
||||
password:
|
||||
value: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
|
||||
port: {{ .Values.databases.notes.port | quote }}
|
||||
user:
|
||||
value: {{ .Values.databases.notes.username | quote }}
|
||||
email:
|
||||
brandName: "openDesk"
|
||||
from: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}"
|
||||
host: "postfix"
|
||||
port: "25"
|
||||
logoImage: {{ printf "https://%s.%s/univention/portal/icons/entries/swp.notes.svg" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
user:
|
||||
value: {{ printf "%s@%s" "opendesk-system" ( .Values.global.mailDomain | default .Values.global.domain ) }}
|
||||
password:
|
||||
value: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
|
||||
oidc:
|
||||
enabled: true
|
||||
rpClientId:
|
||||
value: "opendesk-notes"
|
||||
rpClientSecret:
|
||||
value: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
|
||||
opJWKSEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
|
||||
opAuthorizationEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/auth"
|
||||
opTokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||
opUserEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
|
||||
opLogoutEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
|
||||
rpScopes: "openid opendesk-notes-scope"
|
||||
loginRedirectUrl: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
loginRedirectUrlFailure: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
logoutRedirectUrl: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
redirectAllowedHosts: {{ printf "https://%s.%s/*" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
essentialClaims: "email"
|
||||
fullnameFields: "given_name,family_name"
|
||||
shortnameField: "given_name"
|
||||
django:
|
||||
secretKey:
|
||||
value: {{ .Values.secrets.notes.djangoSecretKey }}
|
||||
createSuperuser: true
|
||||
superuserEmail:
|
||||
value: {{ printf "default.admin@%s" .Values.global.domain | quote }}
|
||||
superuserPassword:
|
||||
value: {{ .Values.secrets.notes.superuser }}
|
||||
frontendTheme: "openDesk"
|
||||
redisUrl:
|
||||
value: "redis://default:{{ .Values.cache.notes.password | default .Values.secrets.redis.password }}@{{ .Values.cache.notes.host }}:{{ .Values.cache.notes.port }}/7"
|
||||
extraEnvVars:
|
||||
- name: "FRONTEND_HOMEPAGE_FEATURE_ENABLED"
|
||||
value: "False"
|
||||
- name: "FRONTEND_FOOTER_FEATURE_ENABLED"
|
||||
value: "False"
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.notesBackend.pod | toYaml | nindent 4 }}
|
||||
podAnnotationsCreateUser:
|
||||
{{ .Values.annotations.notesBackend.createUserJob | toYaml | nindent 4 }}
|
||||
podAnnotationsMigrate:
|
||||
{{ .Values.annotations.notesBackend.migrateJob | toYaml | nindent 4 }}
|
||||
resources:
|
||||
{{ .Values.resources.notesBackend | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesBackend.service | toYaml | nindent 6 }}
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraVolumes:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
secret:
|
||||
secretName: "opendesk-certificates-ca-tls"
|
||||
items:
|
||||
- key: "ca.crt"
|
||||
path: "ca-certificates.crt"
|
||||
extraVolumeMounts:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
mountPath: "/usr/local/lib/python3.12/site-packages/certifi/cacert.pem"
|
||||
subPath: "ca-certificates.crt"
|
||||
{{- end }}
|
||||
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Amz-Date, X-Amz-Content-SHA256"
|
||||
nginx.ingress.kubernetes.io/auth-url: "https://{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}/api/v1.0/documents/media-auth/"
|
||||
nginx.ingress.kubernetes.io/upstream-vhost: {{ .Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||
nginx.ingress.kubernetes.io/use-regex: "true"
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /{{ .Values.objectstores.notes.bucket }}/$1
|
||||
nginx.ingress.kubernetes.io/session-cookie-path: /media
|
||||
tls:
|
||||
enabled: "{{ .Values.ingress.tls.enabled }}"
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
ingressCollaborationApi:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
className: {{ .Values.ingress.ingressClassName }}
|
||||
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
|
||||
path: /collaboration/api/
|
||||
tls:
|
||||
enabled: "{{ .Values.ingress.tls.enabled }}"
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
|
||||
|
||||
serviceMedia:
|
||||
host: {{ .Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
port: {{ .Values.objectstores.notes.port | default 443 }}
|
||||
|
||||
frontend:
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesFrontend.registry | quote }}
|
||||
repository: {{ .Values.images.notesFrontend.repository | quote }}
|
||||
pullPolicy: "IfNotPresent"
|
||||
tag: {{ .Values.images.notesFrontend.tag | quote }}
|
||||
ingressMedia:
|
||||
enabled: true
|
||||
annotations:
|
||||
{{ .Values.annotations.notesFrontend.ingressMedia | toYaml | nindent 6 }}
|
||||
extraEnvVars:
|
||||
- name: "ICS_BASE_URL"
|
||||
value: {{ printf "https://%s.%s" .Values.global.hosts.intercomService .Values.global.domain | quote }}
|
||||
- name: "PORTAL_BASE_URL"
|
||||
value: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
configuration:
|
||||
objectStoreHost: {{ printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain | quote }}
|
||||
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesFrontend.registry) (.Values.images.notesFrontend.repository) | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.notesFrontend.tag }}
|
||||
envVars:
|
||||
PORT: 8080
|
||||
NEXT_PUBLIC_API_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
NEXT_PUBLIC_Y_PROVIDER_URL: {{ printf "wss://%s.%s/ws" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
NEXT_PUBLIC_MEDIA_URL: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
|
||||
runtimeEnvs:
|
||||
ICS_BASE_URL: {{ printf "https://%s.%s" .Values.global.hosts.intercomService .Values.global.domain | quote }}
|
||||
PORTAL_BASE_URL: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
replicas: {{ .Values.replicas.notesFrontend }}
|
||||
resources:
|
||||
{{ .Values.resources.notesFrontend | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
privileged: false
|
||||
runAsUser: 1001
|
||||
runAsGroup: 1001
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.notesFrontend | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.notesFrontend.pod | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesFrontend.service | toYaml | nindent 6 }}
|
||||
serviceMedia:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesFrontend.service | toYaml | nindent 6 }}
|
||||
|
||||
y-provider:
|
||||
yProvider:
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.notesYProvider.registry | quote }}
|
||||
repository: {{ .Values.images.notesYProvider.repository | quote }}
|
||||
pullPolicy: "IfNotPresent"
|
||||
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.notesYProvider.registry) (.Values.images.notesYProvider.repository) | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.notesYProvider.tag }}
|
||||
replicaCount: 1
|
||||
debug: true
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraEnvVars:
|
||||
- name: "NODE_EXTRA_CA_CERTS"
|
||||
value: "/etc/ssl/certs/cacert.pem"
|
||||
extraVolumes:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
secret:
|
||||
secretName: "opendesk-certificates-ca-tls"
|
||||
items:
|
||||
- key: "ca.crt"
|
||||
path: "ca-certificates.crt"
|
||||
extraVolumeMounts:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
mountPath: "/etc/ssl/certs/cacert.pem"
|
||||
subPath: "ca-certificates.crt"
|
||||
{{- end }}
|
||||
containerSecurityContext:
|
||||
resources:
|
||||
{{ .Values.resources.notesYProvider | toYaml | nindent 4 }}
|
||||
replicas: {{ .Values.replicas.notesYProvider }}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
privileged: false
|
||||
runAsUser: 1001
|
||||
runAsGroup: 1001
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
|
||||
envVars:
|
||||
COLLABORATION_LOGGING: {{ if .Values.debug.enabled }}"true"{{ else }}"false"{{ end }}
|
||||
COLLABORATION_SERVER_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
COLLABORATION_SERVER_SECRET: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
Y_PROVIDER_API_KEY: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
|
||||
oidc:
|
||||
clientId: "opendesk-notes"
|
||||
clientSecret: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
|
||||
|
||||
aiApiKey: {{ .Values.ai.apiKey }}
|
||||
aiBaseUrl: {{ .Values.ai.endpoint }}
|
||||
|
||||
djangoSuperUserEmail: "default.admin@{{ .Values.global.domain }}"
|
||||
djangoSuperUserPass: {{ .Values.secrets.notes.superuser }}
|
||||
djangoSecretKey: {{ .Values.secrets.notes.djangoSecretKey }}
|
||||
|
||||
backend:
|
||||
image:
|
||||
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry) (.Values.images.notesBackend.repository) | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
tag: {{ .Values.images.notesBackend.tag }}
|
||||
replicas: {{ .Values.replicas.notesBackend }}
|
||||
envVars:
|
||||
DB_HOST: {{ .Values.databases.notes.host | quote }}
|
||||
DB_NAME: {{ .Values.databases.notes.name | quote }}
|
||||
DB_USER: {{ .Values.databases.notes.username | quote }}
|
||||
DB_PASSWORD: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
|
||||
DB_PORT: {{ .Values.databases.notes.port | quote }}
|
||||
POSTGRES_DB: {{ .Values.databases.notes.name | quote }}
|
||||
POSTGRES_USER: {{ .Values.databases.notes.username | quote }}
|
||||
POSTGRES_PASSWORD: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
|
||||
FRONTEND_THEME: "openDesk"
|
||||
REDIS_URL: "redis://default:{{ .Values.cache.notes.password | default .Values.secrets.redis.password }}@{{ .Values.cache.notes.host }}:{{ .Values.cache.notes.port }}/7"
|
||||
AWS_S3_ENDPOINT_URL: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
|
||||
AWS_S3_ACCESS_KEY_ID: {{ .Values.objectstores.notes.username }}
|
||||
AWS_S3_SECRET_ACCESS_KEY: {{ .Values.objectstores.notes.secretKey | default .Values.secrets.minio.notesUser | quote }}
|
||||
AWS_STORAGE_BUCKET_NAME: {{ .Values.objectstores.notes.bucket }}
|
||||
DJANGO_CSRF_TRUSTED_ORIGINS: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
DJANGO_SITE_DOMAIN: {{ printf "%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
DJANGO_SITE_NAME: {{ printf "%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
DJANGO_CONFIGURATION: Production
|
||||
DJANGO_ALLOWED_HOSTS: "*"
|
||||
DJANGO_SECRET_KEY: {{ .Values.secrets.notes.djangoSecretKey }}
|
||||
DJANGO_SETTINGS_MODULE: impress.settings
|
||||
DJANGO_SUPERUSER_PASSWORD: {{ .Values.secrets.notes.superuser }}
|
||||
DJANGO_EMAIL_BRAND_NAME: "openDesk"
|
||||
DJANGO_EMAIL_LOGO_IMG: {{ printf "https://%s.%s/univention/portal/icons/entries/swp.notes.svg" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
DJANGO_EMAIL_FROM: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}"
|
||||
DJANGO_EMAIL_HOST: "postfix"
|
||||
DJANGO_EMAIL_PORT: 25
|
||||
DJANGO_EMAIL_USE_SSL: False
|
||||
DJANGO_EMAIL_HOST_USER: {{ printf "%s@%s" "opendesk-system" ( .Values.global.mailDomain | default .Values.global.domain ) }}
|
||||
DJANGO_EMAIL_HOST_PASSWORD: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
|
||||
DJANGO_EMAIL_USE_TLS: False
|
||||
OIDC_RP_CLIENT_ID: "opendesk-notes"
|
||||
OIDC_RP_CLIENT_SECRET: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
|
||||
OIDC_OP_JWKS_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
|
||||
OIDC_OP_AUTHORIZATION_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/auth"
|
||||
OIDC_OP_TOKEN_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||
OIDC_OP_USER_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
|
||||
OIDC_OP_LOGOUT_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
|
||||
OIDC_RP_SIGN_ALGO: RS256
|
||||
OIDC_RP_SCOPES: "openid opendesk-notes-scope"
|
||||
USER_OIDC_FIELD_TO_SHORTNAME: "given_name"
|
||||
USER_OIDC_FIELDS_TO_FULLNAME: "given_name,family_name"
|
||||
USER_OIDC_ESSENTIAL_CLAIMS: "email"
|
||||
OIDC_REDIRECT_ALLOWED_HOSTS: {{ printf "https://%s.%s/*" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
OIDC_AUTH_REQUEST_EXTRA_PARAMS: "{}"
|
||||
OIDC_RENEW_ID_TOKEN: "False"
|
||||
LOGIN_REDIRECT_URL: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
LOGIN_REDIRECT_URL_FAILURE: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
LOGOUT_REDIRECT_URL: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
|
||||
AI_BASE_URL: {{ .Values.ai.endpoint | quote }}
|
||||
AI_API_KEY: {{ .Values.ai.apiKey | quote }}
|
||||
AI_MODEL: {{ .Values.ai.model | quote }}
|
||||
Y_PROVIDER_API_KEY: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
Y_PROVIDER_API_BASE_URL: {{ printf "https://%s.%s/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
COLLABORATION_API_URL: {{ printf "https://%s.%s/collaboration/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
COLLABORATION_SERVER_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
COLLABORATION_SERVER_SECRET: {{ .Values.secrets.notes.collaborationSecret | quote }}
|
||||
COLLABORATION_WS_URL: {{ printf "wss://%s.%s/collaboration/ws/" .Values.global.hosts.notes .Values.global.domain | quote }}
|
||||
migrate:
|
||||
command:
|
||||
- "/bin/sh"
|
||||
- "-c"
|
||||
- |
|
||||
python manage.py migrate --no-input
|
||||
restartPolicy: Never
|
||||
|
||||
createsuperuser:
|
||||
command:
|
||||
- "/bin/sh"
|
||||
- "-c"
|
||||
- |
|
||||
python manage.py createsuperuser --email default.admin@{{ .Values.global.domain }} --password {{ .Values.secrets.notes.superuser }}
|
||||
restartPolicy: Never
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.notesBackend | toYaml | nindent 4 }}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- "ALL"
|
||||
privileged: false
|
||||
runAsUser: 1001
|
||||
runAsGroup: 1001
|
||||
seccompProfile:
|
||||
type: "RuntimeDefault"
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
|
||||
ingressCollaborationApi:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesYProvider.ingressCollaborationAPI | toYaml | nindent 6 }}
|
||||
ingressCollaborationWs:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesYProvider.ingressCollaborationWS | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.notesYProvider.pod | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.notesYProvider.service | toYaml | nindent 6 }}
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.nubusIntercomService.additional | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -51,35 +50,30 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
ics:
|
||||
session:
|
||||
secret: {{ .Values.secrets.intercom.secret | quote }}
|
||||
issuerBaseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||
originRegex: "{{ .Values.global.domain }}"
|
||||
enableSessionCookie: true
|
||||
userUniqueMapper: {{ if .Values.functional.chat.matrix.profile.useImmutableIdentifierForLocalpart }}"opendesk_useruuid"{{ else }}"opendesk_username"{{ end }}
|
||||
usernameClaim: "opendesk_username"
|
||||
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
|
||||
keycloak:
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
default:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
oidc:
|
||||
id: "opendesk-intercom"
|
||||
clientSecret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
|
||||
secret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
|
||||
matrix:
|
||||
asSecret: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
||||
subdomain: {{ .Values.global.hosts.synapse | quote }}
|
||||
serverName: "{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}"
|
||||
auth:
|
||||
applicationServiceSecret: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
||||
nordeck:
|
||||
subdomain: {{ .Values.global.hosts.matrixNeoDateFixBot | quote }}
|
||||
portal:
|
||||
auth:
|
||||
sharedSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||
apiKey: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||
redis:
|
||||
host: {{ .Values.cache.intercomService.host | quote }}
|
||||
port: {{ .Values.cache.intercomService.port }}
|
||||
auth:
|
||||
password: {{ .Values.cache.intercomService.password | default .Values.secrets.redis.password | quote }}
|
||||
openxchange:
|
||||
oci: true
|
||||
@@ -105,11 +99,8 @@ ingress:
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusIntercomService.ingress | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nubusIntercomService.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -121,20 +112,21 @@ provisioning:
|
||||
# client's claims this way.
|
||||
enabled: false
|
||||
config:
|
||||
clientBaseUrl: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}"
|
||||
nubusBaseUrl: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}"
|
||||
keycloak:
|
||||
url: "http://ums-keycloak:8080/realms/{{ .Values.platform.realm }}/"
|
||||
username: "kcadmin"
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
connection:
|
||||
protocol: "http"
|
||||
host: "ums-keycloak"
|
||||
port: 8080
|
||||
auth:
|
||||
username: "kcadmin"
|
||||
existingSecret:
|
||||
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||
baseUrl: "http://ums-keycloak:8080"
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
keyMapping:
|
||||
password: "admin_password"
|
||||
key: "admin_password"
|
||||
ics_client:
|
||||
clientSecret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
|
||||
credentialSecret:
|
||||
key: "ics_secret"
|
||||
image:
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusWaitForDependency.registry | quote }}
|
||||
@@ -158,11 +150,4 @@ replicaCount: {{ .Values.replicas.intercomService }}
|
||||
resources:
|
||||
{{ .Values.resources.intercomService | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusIntercomService.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusIntercomService.serviceAccount | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.nubusNginxS3Gateway.additional | toYaml | nindent 2 }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.nginxS3Gateway.registry | quote }}
|
||||
repository: {{ .Values.images.nginxS3Gateway.repository | quote }}
|
||||
@@ -21,10 +20,6 @@ ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: "/portal-assets/icons/$2/$3"
|
||||
nginx.ingress.kubernetes.io/use-regex: "true"
|
||||
{{- with .Values.annotations.nubusNginxS3Gateway.ingress }}
|
||||
{{. | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
path: "/univention/(portal|selfservice)/icons/(logos|entries)/(.*)$"
|
||||
tls:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
@@ -41,20 +36,8 @@ configuration:
|
||||
secretKey:
|
||||
value: {{ .Values.objectstores.nubus.secretKey | default .Values.secrets.minio.umsUser | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nubusNginxS3Gateway.pod | toYaml | nindent 2 }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.nginxS3Gateway | toYaml | nindent 2 }}
|
||||
|
||||
replicaCount: {{ .Values.replicas.nginxS3Gateway }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusNginxS3Gateway.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusNginxS3Gateway.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
---
|
||||
#
|
||||
# This file is currently optional for customizing purposes only. It will be a mandatory part of Nubus in a later release.
|
||||
#
|
||||
nubusGuardian:
|
||||
authorizationApi:
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.umsGuardianAuthorizationApi | toYaml | nindent 8 }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianAuthorizationApi.registry | quote }}
|
||||
repository: {{ .Values.images.nubusGuardianAuthorizationApi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianAuthorizationApi.tag }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-authorization-api"
|
||||
{{- with .Values.annotations.nubusGuardian.authorizationApiPod }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "Always"
|
||||
replicaCount: {{ .Values.replicas.umsGuardianAuthorizationApi }}
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianAuthorizationApi | toYaml | nindent 6 }}
|
||||
global:
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nubusGuardian.globalPod | toYaml | nindent 6 }}
|
||||
ingress:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusGuardian.ingressIngress | toYaml | nindent 6 }}
|
||||
certManager:
|
||||
enabled: false
|
||||
tls:
|
||||
enabled: {{ .Values.ingress.tls.enabled }}
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
items:
|
||||
- name: management-ui
|
||||
host: ""
|
||||
# -- Define the Ingress paths.
|
||||
paths:
|
||||
- path: /univention/guardian/management-ui
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: guardian-management-ui
|
||||
port:
|
||||
number: 80
|
||||
ingressClassName: ""
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusGuardian.ingressManagementUi | toYaml | nindent 10 }}
|
||||
tls:
|
||||
# enabled: true
|
||||
secretName: ""
|
||||
- name: management-api
|
||||
host: ""
|
||||
paths:
|
||||
- path: /guardian/management
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: guardian-management-api
|
||||
port:
|
||||
number: 80
|
||||
ingressClassName: ""
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusGuardian.ingressManagementApi | toYaml | nindent 10 }}
|
||||
tls:
|
||||
# enabled: true
|
||||
secretName: ""
|
||||
- name: authorization-api
|
||||
host: ""
|
||||
paths:
|
||||
- path: /guardian/authorization
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: guardian-authorization-api
|
||||
port:
|
||||
number: 80
|
||||
ingressClassName: ""
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusGuardian.ingressAuthorizationApi | toYaml | nindent 10 }}
|
||||
tls:
|
||||
# enabled: true
|
||||
secretName: ""
|
||||
managementApi:
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.umsGuardianManagementApi | toYaml | nindent 8 }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianManagementApi.registry | quote }}
|
||||
repository: {{ .Values.images.nubusGuardianManagementApi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianManagementApi.tag }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-management-api"
|
||||
{{- with .Values.annotations.nubusGuardian.managementApiPod }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "Always"
|
||||
replicaCount: {{ .Values.replicas.umsGuardianManagementApi }}
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianManagementApi | toYaml | nindent 6 }}
|
||||
managementUi:
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.umsGuardianManagementUi | toYaml | nindent 8 }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianManagementUi.registry | quote }}
|
||||
repository: {{ .Values.images.nubusGuardianManagementUi.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianManagementUi.tag }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-guardian-management-ui"
|
||||
{{- with .Values.annotations.nubusGuardian.managementUiPod }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
replicaCount: {{ .Values.replicas.umsGuardianManagementUi }}
|
||||
resources:
|
||||
{{ .Values.resources.umsGuardianManagementUi | toYaml | nindent 6 }}
|
||||
openPolicyAgent:
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.umsGuardianOpenPolicyAgent | toYaml | nindent 8 }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusOpenPolicyAgent.registry | quote }}
|
||||
repository: {{ .Values.images.nubusOpenPolicyAgent.repository }}
|
||||
tag: {{ .Values.images.nubusOpenPolicyAgent.tag }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "Always"
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-ums-open-policy-agent"
|
||||
replicaCount: {{ .Values.replicas.umsGuardianOpenPolicyAgent }}
|
||||
resources:
|
||||
{{ .Values.resources.umsOpenPolicyAgent | toYaml | nindent 6 }}
|
||||
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 }}
|
||||
existingSecret:
|
||||
name: "ums-guardian-postgresql-opendesk-credentials"
|
||||
keyMapping:
|
||||
password: "guardianDatabasePassword"
|
||||
provisioning:
|
||||
enabled: false
|
||||
config:
|
||||
nubusBaseUrl: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain }}
|
||||
keycloak:
|
||||
credentialSecret:
|
||||
name: "ums-opendesk-keycloak-credentials"
|
||||
key: "admin_password"
|
||||
realm: {{ .Values.platform.realm | quote }}
|
||||
username: "kcadmin"
|
||||
keycloak:
|
||||
auth:
|
||||
existingSecret:
|
||||
name: "ums-opendesk-guardian-client-secret"
|
||||
keyMapping:
|
||||
password: "managementApiClientSecret"
|
||||
connection:
|
||||
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||
baseUrl: "http://ums-keycloak:8080"
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianProvisioning.registry | quote }}
|
||||
repository: {{ .Values.images.nubusGuardianProvisioning.repository }}
|
||||
tag: {{ .Values.images.nubusGuardianProvisioning.tag }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusGuardian.serviceAccount | toYaml | nindent 6 }}
|
||||
---
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: "{{ .Values.global.domain }}"
|
||||
@@ -108,13 +110,8 @@ config:
|
||||
clientSessionMaxLifespan: {{ .Values.functional.authentication.realmSettings.clientSessionMaxLifespan }}
|
||||
clientOfflineSessionIdleTimeout: {{ .Values.functional.authentication.realmSettings.clientOfflineSessionIdleTimeout }}
|
||||
clientOfflineSessionMaxLifespan: {{ .Values.functional.authentication.realmSettings.clientOfflineSessionMaxLifespan }}
|
||||
ssoFederation:
|
||||
enabled: {{ .Values.functional.authentication.ssoFederation.enabled }}
|
||||
enforceFederatedLogin: {{ .Values.functional.authentication.ssoFederation.enforceFederatedLogin }}
|
||||
name: {{ .Values.functional.authentication.ssoFederation.name | quote }}
|
||||
idpDetails: {{ .Values.functional.authentication.ssoFederation.idpDetails | toYaml | nindent 6 }}
|
||||
twoFactorSettings:
|
||||
additionalGroups: {{ .Values.functional.authentication.twoFactor.groups | toYaml | nindent 6 }}
|
||||
additionalGroups: {{ .Values.functional.authentication.twoFactor.groups }}
|
||||
precreateGroups: [ 'Domain Admins', 'Domain Users', '2fa-users', 'IAM API - Full Access',
|
||||
{{ if .Values.apps.nextcloud.enabled }}'managed-by-attribute-Fileshare', 'managed-by-attribute-FileshareAdmin',{{ end }}
|
||||
{{ if .Values.apps.xwiki.enabled }}'managed-by-attribute-Knowledgemanagement', 'managed-by-attribute-KnowledgemanagementAdmin',{{ end }}
|
||||
@@ -527,10 +524,7 @@ config:
|
||||
publicClient: false
|
||||
authorizationServicesEnabled: false
|
||||
attributes:
|
||||
use.refresh.tokens: true
|
||||
backchannel.logout.session.required: true
|
||||
standard.token.exchange.enabled: true
|
||||
standard.token.exchange.enableRefreshRequestedTokenType: "SAME_SESSION"
|
||||
backchannel.logout.revoke.offline.tokens: true
|
||||
backchannel.logout.url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/backchannel-logout"
|
||||
protocolMappers:
|
||||
@@ -762,15 +756,9 @@ containerSecurityContext:
|
||||
additionalAnnotations:
|
||||
argocd.argoproj.io/hook: "Sync"
|
||||
argocd.argoproj.io/hook-delete-policy: "BeforeHookCreation"
|
||||
{{- with .Values.annotations.nubusKeycloakBootstrap.additional }}
|
||||
{{. | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
podAnnotations:
|
||||
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
||||
{{- with .Values.annotations.nubusKeycloakBootstrap.pod }}
|
||||
{{. | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -780,10 +768,6 @@ podSecurityContext:
|
||||
resources:
|
||||
{{ .Values.resources.opendeskKeycloakBootstrap | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusKeycloakBootstrap.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraVolumes:
|
||||
- name: "trusted-cert-secret-volume"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.dovecot.registry | quote }}
|
||||
@@ -8,7 +10,7 @@ image:
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
imageInitCassandra:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
|
||||
repository: {{ .Values.images.cassandra.repository | quote }}
|
||||
tag: {{ .Values.images.cassandra.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
@@ -24,39 +26,23 @@ dovecot:
|
||||
username: {{ .Values.databases.dovecotDictmap.username | quote }}
|
||||
password:
|
||||
value: {{ .Values.secrets.cassandra.dovecotDictmapUser | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.dovecot.dictmapUser.name | quote }}
|
||||
key: {{ .Values.externalSecrets.dovecot.dictmapUser.key | quote }}
|
||||
keyspace: {{ .Values.databases.dovecotDictmap.name | quote }}
|
||||
sharedMailboxes:
|
||||
enabled: true
|
||||
enabled: false
|
||||
host: {{ .Values.databases.dovecotACL.host | quote }}
|
||||
port: {{ .Values.databases.dovecotACL.port }}
|
||||
username: {{ .Values.databases.dovecotACL.username | quote }}
|
||||
password:
|
||||
value: {{ .Values.secrets.cassandra.dovecotACLUser | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.dovecot.aclUser.name | quote }}
|
||||
key: {{ .Values.externalSecrets.dovecot.aclUser.key | quote }}
|
||||
keyspace: {{ .Values.databases.dovecotACL.name | quote }}
|
||||
objectStorage:
|
||||
bucket: {{ .Values.objectstores.dovecot.bucket | quote }}
|
||||
encryption:
|
||||
privateKey:
|
||||
value: {{ requiredEnv "DOVECOT_CRYPT_PRIVATE_KEY" | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.privateKey.name | quote }}
|
||||
key: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.privateKey.key | quote }}
|
||||
value: {{ env "DOVECOT_CRYPT_PRIVATE_KEY" | quote }}
|
||||
publicKey:
|
||||
value: {{ requiredEnv "DOVECOT_CRYPT_PUBLIC_KEY" | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.publicKey.name | quote }}
|
||||
key: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.publicKey.key | quote }}
|
||||
value: {{ env "DOVECOT_CRYPT_PUBLIC_KEY" | quote }}
|
||||
fqdn: {{ .Values.objectstores.dovecot.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
username: {{ .Values.objectstores.dovecot.username | quote }}
|
||||
password:
|
||||
value: {{ .Values.objectstores.dovecot.secretKey | default .Values.secrets.minio.dovecotUser | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.objectstores.dovecotUser.name | quote }}
|
||||
key: {{ .Values.externalSecrets.objectstores.dovecotUser.key | quote }}
|
||||
value: {{ .Values.secrets.minio.dovecotUser | quote }}
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.openxchangeDovecot.common | toYaml | nindent 2 }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.dovecot.registry | quote }}
|
||||
repository: {{ .Values.images.dovecot.repository | quote }}
|
||||
@@ -21,20 +20,13 @@ imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 2 }}
|
||||
|
||||
dovecot:
|
||||
mailDomains: {{ toYaml (prepend .Values.global.additionalMailDomains (.Values.global.mailDomain | default .Values.global.domain) | uniq) | nindent 4 }}
|
||||
defaultMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
mailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
|
||||
password:
|
||||
value: {{ .Values.secrets.dovecot.doveadm | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.dovecot.doveadm.name | quote }}
|
||||
key: {{ .Values.externalSecrets.dovecot.doveadm.key | quote }}
|
||||
migration:
|
||||
enabled: {{ .Values.functional.migration.oxAppSuite.enabled }}
|
||||
masterPassword:
|
||||
value: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.oxAppSuite.migrationsMasterPassword.name | quote }}
|
||||
key: {{ .Values.externalSecrets.oxAppSuite.migrationsMasterPassword.key | quote }}
|
||||
ldap:
|
||||
enabled: true
|
||||
host: {{ .Values.ldap.host | quote }}
|
||||
@@ -43,18 +35,12 @@ dovecot:
|
||||
dn: "uid=ldapsearch_dovecot,cn=users,{{ .Values.ldap.baseDn }}"
|
||||
password:
|
||||
value: {{ .Values.secrets.nubus.ldapSearch.dovecot | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.nubus.ldapSearch.dovecot.name | quote }}
|
||||
key: {{ .Values.externalSecrets.nubus.ldapSearch.dovecot.key | quote }}
|
||||
oidc:
|
||||
enabled: true
|
||||
clientID:
|
||||
value: "opendesk-dovecot"
|
||||
clientSecret:
|
||||
value: {{ .Values.secrets.keycloak.clientSecret.dovecot | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.keycloak.clientSecret.dovecot.name | quote }}
|
||||
key: {{ .Values.externalSecrets.keycloak.clientSecret.dovecot.key | quote }}
|
||||
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"
|
||||
@@ -93,9 +79,8 @@ containerSecurityContext:
|
||||
seLinuxOptions:
|
||||
{{ .Values.seLinuxOptions.dovecot | toYaml | nindent 4 }}
|
||||
|
||||
{{- if .Values.debug.enabled }}
|
||||
debug: true
|
||||
{{- end }}
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraVolumes:
|
||||
@@ -126,26 +111,14 @@ persistence:
|
||||
- "ReadWriteOnce"
|
||||
{{- end }}
|
||||
size: {{ .Values.persistence.storages.dovecot.size | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeDovecot.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeDovecot.pod | toYaml | nindent 2 }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.dovecot | toYaml | nindent 2 }}
|
||||
|
||||
{{- if or (eq (coalesce .Values.service.type.dovecot .Values.cluster.service.type) "NodePort") (eq (coalesce .Values.service.type.dovecot .Values.cluster.service.type) "LoadBalancer") }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeDovecot.service | toYaml | nindent 4 }}
|
||||
external:
|
||||
enabled: true
|
||||
type: {{ coalesce .Values.service.type.dovecot .Values.cluster.service.type | quote }}
|
||||
{{- end }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeDovecot.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
argocd.argoproj.io/hook: "Sync"
|
||||
argocd.argoproj.io/hook-delete-policy: "HookSucceeded"
|
||||
{{- with .Values.annotations.openxchangeBootstrap.additional }}
|
||||
{{ . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
@@ -36,12 +31,7 @@ image:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeBootstrap.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
filestore:
|
||||
# identifier must match identifier in /opt/open-xchange/etc/filestore-s3.properties
|
||||
identifier: "ox-filestore-s3"
|
||||
size: {{ .Values.objectstores.openxchange.maxSize }}
|
||||
additionalAnnotations:
|
||||
argocd.argoproj.io/hook: "Sync"
|
||||
argocd.argoproj.io/hook-delete-policy: "HookSucceeded"
|
||||
...
|
||||
|
||||
@@ -1,14 +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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
appsuite:
|
||||
core-mw:
|
||||
podAnnotations:
|
||||
logging.open-xchange.com/format: "appsuite-json"
|
||||
{{- with .Values.annotations.openxchangeEnterpriseContactPicker.appsuiteCoreMwPod }}
|
||||
{{ . | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
|
||||
properties:
|
||||
# Enterprise contact picker
|
||||
com.openexchange.contacts.ldap.accounts: "opendesk,other,functional"
|
||||
@@ -30,14 +28,9 @@ appsuite:
|
||||
dn: "uid=ldapsearch_ox,cn=users,{{ .Values.ldap.baseDn }}"
|
||||
password: {{ .Values.secrets.nubus.ldapSearch.ox | quote }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeEnterpriseContactPicker.appsuiteCoreMwServiceAccount | toYaml | nindent 8 }}
|
||||
|
||||
uiSettings:
|
||||
# Enterprise contact picker
|
||||
io.ox/core//features/enterprisePicker/enabled: "true"
|
||||
io.ox/contacts//search/fields: 'email1,email2'
|
||||
|
||||
yamlFiles:
|
||||
contacts-provider-ldap.yml:
|
||||
@@ -285,7 +278,6 @@ appsuite:
|
||||
givenname: "givenName"
|
||||
surname: "sn"
|
||||
email1: "mailPrimaryAddress"
|
||||
email2: "mailAlternativeAddress"
|
||||
department: "oxDepartment,department"
|
||||
company: "oxCompany,o"
|
||||
branches: "oxBranches"
|
||||
@@ -297,6 +289,8 @@ appsuite:
|
||||
city_home: "oxCityHome"
|
||||
commercial_register: "oxCommercialRegister"
|
||||
country_home: "oxCountryHome"
|
||||
email2: "oxEmail2"
|
||||
email3: "oxEmail3"
|
||||
employeetype: "employeeType"
|
||||
fax_business: "oxFaxBusiness,facsimileTelehoneNumber"
|
||||
fax_home: "oxFaxHome"
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
appsuite:
|
||||
plugins-ui:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
@@ -30,8 +32,7 @@ nextcloud-integration-ui:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeNextcloudIntegrationUi.pod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
replicaCount: {{ .Values.replicas.openxchangeNextcloudIntegrationUI }}
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeNextcloudIntegrationUI | toYaml | nindent 4 }}
|
||||
@@ -65,8 +66,7 @@ public-sector-ui:
|
||||
{{- end }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
replicaCount: {{ .Values.replicas.openxchangePublicSectorUI }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangePublicSectorUi.pod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
resources:
|
||||
{{ .Values.resources.openxchangePublicSectorUI | toYaml | nindent 4 }}
|
||||
securityContext:
|
||||
@@ -95,8 +95,6 @@ appsuite:
|
||||
istio:
|
||||
enabled: false
|
||||
ingress:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.ingress | toYaml | nindent 6 }}
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
tls:
|
||||
@@ -106,108 +104,14 @@ appsuite:
|
||||
hosts:
|
||||
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
dav:
|
||||
enabled: {{ .Values.functional.groupware.davSupport.enabled }}
|
||||
hosts:
|
||||
- "{{ .Values.global.hosts.openxchangeDav }}.{{ .Values.global.domain }}"
|
||||
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
routes:
|
||||
appsuite-base:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.appsuitebase | toYaml | nindent 10 }}
|
||||
rootredirect:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.rootredirect | toYaml | nindent 10 }}
|
||||
trailslash:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.trailslash | toYaml | nindent 10 }}
|
||||
rest-routes-admin:
|
||||
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
|
||||
enabled: false
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesAdmin | toYaml | nindent 10 }}
|
||||
rest-routes-advertisement:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesAdvertisement | toYaml | nindent 10 }}
|
||||
rest-routes-chronos:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesChronos | toYaml | nindent 10 }}
|
||||
rest-routes-preliminary:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesPreliminary | toYaml | nindent 10 }}
|
||||
rest-routes-userfeedback:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesUserfeedback | toYaml | nindent 10 }}
|
||||
static-routes-servlet:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.staticRoutesServlet | toYaml | nindent 10 }}
|
||||
static-routes-realtime:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.staticRoutesRealtime | toYaml | nindent 10 }}
|
||||
static-routes-infostore:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.staticRoutesInfostore | toYaml | nindent 10 }}
|
||||
static-routes-webservices:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.staticRoutesWebservices | toYaml | nindent 10 }}
|
||||
drive-client-windows-ox-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.driveClientWindowsOxRoute | toYaml | nindent 10 }}
|
||||
guard-api-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.guardApiRoute | toYaml | nindent 10 }}
|
||||
guard-support-api-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.guardSupportApiRoute | toYaml | nindent 10 }}
|
||||
guard-pgp-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.guardPgpRoute | toYaml | nindent 10 }}
|
||||
http-api-routes-api:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.httpApiRoutesApi | toYaml | nindent 10 }}
|
||||
http-api-routes-ajax:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.httpApiRoutesAjax | toYaml | nindent 10 }}
|
||||
http-api-routes-appsuite-api:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.oxAppSuite }}"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.oxAppSuite }}"
|
||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.oxAppSuite }}"
|
||||
{{- with .Values.annotations.openxchangeAppsuiteIngress.httpApiRoutesAppsuiteApi }}
|
||||
{{ . | toYaml | nindent 10 }}
|
||||
{{- end }}
|
||||
http-api-routes-app-root-api:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.httpApiRoutesAppRootApi | toYaml | nindent 10 }}
|
||||
rt2-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.rt2Route | toYaml | nindent 10 }}
|
||||
documents-help-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.documentsHelpRoute | toYaml | nindent 10 }}
|
||||
drive-help-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.driveHelpRoute | toYaml | nindent 10 }}
|
||||
core-help-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.coreHelpRoute | toYaml | nindent 10 }}
|
||||
office-web-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.officeWebRoute | toYaml | nindent 10 }}
|
||||
caldav-well-known-redirect:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.caldavWellKnownRedirect | toYaml | nindent 10 }}
|
||||
carddav-well-known-redirect:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.carddavWellKnownRedirect | toYaml | nindent 10 }}
|
||||
dav-infostore-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.davInfostoreRoute | toYaml | nindent 10 }}
|
||||
dav-root-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.davRootRoute | toYaml | nindent 10 }}
|
||||
wopi-server-route:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteIngress.wopiServerRoute | toYaml | nindent 10 }}
|
||||
trailslash:
|
||||
enabled: false
|
||||
core-mw:
|
||||
@@ -217,79 +121,7 @@ appsuite:
|
||||
host: "all"
|
||||
productName: {{ .Values.theme.texts.productName | quote }}
|
||||
oidcLogin: true
|
||||
oidcPath: "/oidc/"
|
||||
defaultScaling:
|
||||
nodes:
|
||||
default:
|
||||
roles:
|
||||
- http-api
|
||||
- sync
|
||||
- admin
|
||||
- businessmobility
|
||||
- request-analyzer
|
||||
roles:
|
||||
admin:
|
||||
values:
|
||||
features:
|
||||
status:
|
||||
admin: "enabled"
|
||||
packages:
|
||||
status:
|
||||
open-xchange-admin-contextrestore: "enabled"
|
||||
open-xchange-admin-oauth-provider: "enabled"
|
||||
open-xchange-admin-soap: "enabled"
|
||||
open-xchange-admin-soap-usercopy: "enabled"
|
||||
open-xchange-admin-user-copy: "enabled"
|
||||
{{- if .Values.functional.migration.oxAppSuite.enabled }}
|
||||
migration:
|
||||
values:
|
||||
packages:
|
||||
status:
|
||||
open-xchange-oidc: "disabled"
|
||||
open-xchange-authentication-masterpassword: "enabled"
|
||||
properties:
|
||||
com.openexchange.calendar.allowOrganizerPartStatChanges: "true"
|
||||
propertiesFiles:
|
||||
/opt/open-xchange/etc/masterpassword-authentication.properties:
|
||||
com.openexchange.authentication.masterpassword.password: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
|
||||
services:
|
||||
- type: ClusterIP
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
{{- end }}
|
||||
scaling:
|
||||
nodes:
|
||||
{{- if .Values.functional.migration.oxAppSuite.enabled }}
|
||||
migration:
|
||||
replicas: 1
|
||||
roles:
|
||||
- "migration"
|
||||
{{- end }}
|
||||
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
|
||||
groupware:
|
||||
replicas: {{ .Values.replicas.openxchangeCoreMW }}
|
||||
roles:
|
||||
- "http-api"
|
||||
- "sync"
|
||||
- "businessmobility"
|
||||
- "request-analyzer"
|
||||
admin:
|
||||
replicas: 1
|
||||
roles:
|
||||
- "admin"
|
||||
{{- else }}
|
||||
groupware:
|
||||
replicas: {{ .Values.replicas.openxchangeCoreMW }}
|
||||
roles:
|
||||
- "http-api"
|
||||
- "sync"
|
||||
- "businessmobility"
|
||||
- "request-analyzer"
|
||||
- "admin"
|
||||
{{- end }}
|
||||
oidcPath: "/oidc"
|
||||
masterAdmin: "admin"
|
||||
masterPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
|
||||
hzGroupName: "hzgroup"
|
||||
@@ -299,11 +131,8 @@ appsuite:
|
||||
jolokiaLogin: "jolokia"
|
||||
jolokiaPassword: {{ .Values.secrets.oxAppSuite.jolokiaPassword | quote }}
|
||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreMw.pod | toYaml | nindent 6 }}
|
||||
podAnnotations: {}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreMw.serviceAccount | toYaml | nindent 8 }}
|
||||
create: true
|
||||
features:
|
||||
status:
|
||||
@@ -311,10 +140,6 @@ appsuite:
|
||||
# admin: enabled
|
||||
documents: "disabled"
|
||||
guard: "enabled"
|
||||
# disabling admin role breaks webmail
|
||||
# {{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
|
||||
# admin: "disabled"
|
||||
# {{- end }}
|
||||
gotenberg:
|
||||
enabled: true
|
||||
imagePullSecrets:
|
||||
@@ -326,8 +151,7 @@ appsuite:
|
||||
tag: {{ .Values.images.openxchangeGotenberg.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
replicaCount: {{ .Values.replicas.openxchangeGotenberg }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreMw.gotenbergPod | toYaml | nindent 8 }}
|
||||
podAnnotations: {}
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeGotenberg | toYaml | nindent 8 }}
|
||||
securityContext:
|
||||
@@ -354,34 +178,22 @@ appsuite:
|
||||
chown open-xchange:open-xchange /opt/open-xchange/guard-files
|
||||
packages:
|
||||
status:
|
||||
open-xchange-oidc: "enabled"
|
||||
open-xchange-authentication-masterpassword: "disabled"
|
||||
open-xchange-authentication-oauth: "disabled"
|
||||
open-xchange-authentication-database: "disabled"
|
||||
{{- if .Values.functional.migration.oxAppSuite.enabled }}
|
||||
open-xchange-authentication-masterpassword: "enabled"
|
||||
open-xchange-authentication-ldap: "disabled"
|
||||
open-xchange-authentication-oauth: "disabled"
|
||||
open-xchange-oidc: "disabled"
|
||||
{{- else }}
|
||||
open-xchange-oidc: "enabled"
|
||||
open-xchange-authentication-database: "disabled"
|
||||
open-xchange-authentication-oauth: "enabled"
|
||||
open-xchange-authentication-ldap: "disabled"
|
||||
{{- end }}
|
||||
# OX Documents (office-web) is not used in openDesk
|
||||
open-xchange-documents-backend: "disabled"
|
||||
open-xchange-documents-monitoring: "disabled"
|
||||
open-xchange-documents-templates: "disabled"
|
||||
# Required for the central contacts integration
|
||||
open-xchange-oauth-provider: "enabled"
|
||||
# Needed to set com.openexchange.hostname
|
||||
open-xchange-hostname-config-cascade: "enabled"
|
||||
# Enable s3 storage
|
||||
open-xchange-filestore-s3: "enabled"
|
||||
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
|
||||
# disabling admin feature breaks webmail, so only sub packages are disabled:
|
||||
open-xchange-admin-contextrestore: "disabled"
|
||||
open-xchange-admin-oauth-provider: "disabled"
|
||||
open-xchange-admin-soap: "disabled"
|
||||
open-xchange-admin-soap-usercopy: "disabled"
|
||||
open-xchange-admin-user-copy: "disabled"
|
||||
{{- end }}
|
||||
{{- if .Values.functional.groupware.davSupport.enabled }}
|
||||
open-xchange-authentication-application-storage-rdb: "enabled"
|
||||
{{- end }}
|
||||
properties:
|
||||
com.openexchange.hostname: {{ printf "%s.%s" .Values.global.hosts.openxchange .Values.global.domain }}
|
||||
com.openexchange.UIWebPath: "/appsuite/"
|
||||
com.openexchange.showAdmin: "false"
|
||||
# PDF Export
|
||||
@@ -411,8 +223,6 @@ appsuite:
|
||||
com.openexchange.oidc.startDefaultBackend: "true"
|
||||
com.openexchange.oidc.userLookupClaim: "opendesk_username"
|
||||
com.openexchange.oidc.userLookupNamePart: "full"
|
||||
com.openexchange.oidc.enablePasswordGrant: "true"
|
||||
com.openexchange.oidc.passwordGrantUserNamePart: "local-part"
|
||||
# OAUTH
|
||||
com.openexchange.oauth.provider.enabled: "true"
|
||||
com.openexchange.oauth.provider.allowedIssuer: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||
@@ -422,6 +232,9 @@ appsuite:
|
||||
com.openexchange.oauth.provider.mode: "expect_jwt"
|
||||
com.openexchange.oauth.provider.userLookupNamePart: "full"
|
||||
com.openexchange.oauth.provider.userLookupClaim: "opendesk_username"
|
||||
com.openexchange.authentication.oauth.clientId: "opendesk-oxappsuite"
|
||||
com.openexchange.authentication.oauth.tokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||
com.openexchange.authentication.oauth.clientSecret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
|
||||
# MAIL
|
||||
com.openexchange.mail.authType: "xoauth2"
|
||||
com.openexchange.mail.loginSource: "name"
|
||||
@@ -433,13 +246,17 @@ appsuite:
|
||||
# Mail Login Resolver
|
||||
com.openexchange.mail.login.resolver.enabled: "true"
|
||||
com.openexchange.mail.login.resolver.ldap.enabled: "true"
|
||||
com.openexchange.mail.login.resolver.ldap.clientId: "contactsLdapClient"
|
||||
com.openexchange.mail.login.resolver.ldap.mailLoginSearchFilter: "(entryUUID=[mailLogin])"
|
||||
com.openexchange.mail.login.resolver.ldap.userNameAttribute: "uid"
|
||||
com.openexchange.mail.login.resolver.ldap.contextNameAttribute: "oxContextIDNum"
|
||||
com.openexchange.mail.login.resolver.ldap.entitySearchFilter: "(&(oxContextIDNum=[cid])(uid=[uname]))"
|
||||
com.openexchange.mail.login.resolver.ldap.mailLoginAttribute: "entryUUID"
|
||||
# Requirements for OX Connector
|
||||
com.openexchange.mail.login.resolver.ldap.clientId: contactsLdapClient
|
||||
com.openexchange.mail.login.resolver.ldap.mailLoginSearchFilter: "(&(univentionObjectType=users/user)(isOxUser=OK)(mailPrimaryAddress=[mailLogin]))"
|
||||
com.openexchange.mail.login.resolver.ldap.userNameAttribute: uid
|
||||
com.openexchange.mail.login.resolver.ldap.contextIdAttribute: oxContextIDNum
|
||||
com.openexchange.mail.login.resolver.ldap.entitySearchFilter: "(&(univentionObjectType=users/user)(isOxUser=OK)(oxContextIDNum=[cid])(uid=[uname]))"
|
||||
#com.openexchange.mail.login.resolver.ldap.mailLoginAttribute: entryUUID
|
||||
# Workaround until either OX issue /appsuite/platform/core#251 is fixed
|
||||
# or entryUUIDs are replaced by a different field.
|
||||
com.openexchange.mail.login.resolver.ldap.mailLoginAttribute: departmentName
|
||||
#com.openexchange.mail.login.resolver.ldap.cacheExpire: "1"
|
||||
# Requirements for OX-Connector
|
||||
com.openexchange.user.enforceUniqueDisplayName: "false"
|
||||
com.openexchange.folderstorage.database.preferDisplayName: "false"
|
||||
# Mailfilter
|
||||
@@ -493,16 +310,7 @@ appsuite:
|
||||
# Usage (in browser console after login):
|
||||
# http = (await import('./io.ox/core/http.js')).default
|
||||
# await http.POST({ module: 'oxguard/smime', params: { action: 'test' } })
|
||||
com.openexchange.smime.test: {{ .Values.debug.enabled | quote }}
|
||||
# DAV
|
||||
{{- if .Values.functional.groupware.davSupport.enabled }}
|
||||
com.openexchange.caldav.enabled: "true"
|
||||
com.openexchange.caldav.url: {{ printf "https://%s.%s/caldav/[folderId]" .Values.global.hosts.openxchangeDav .Values.global.domain }}
|
||||
com.openexchange.carddav.enabled: "true"
|
||||
com.openexchange.carddav.url: {{ printf "https://%s.%s/carddav/[folderId]" .Values.global.hosts.openxchangeDav .Values.global.domain }}
|
||||
com.openexchange.client.onboarding.caldav.url: {{ printf "https://%s.%s/" .Values.global.hosts.openxchangeDav .Values.global.domain }}
|
||||
com.openexchange.client.onboarding.carddav.url: {{ printf "https://%s.%s/" .Values.global.hosts.openxchangeDav .Values.global.domain }}
|
||||
{{- end }}
|
||||
com.openexchange.smime.test: "true"
|
||||
# Other
|
||||
com.openexchange.secret.secretSource: "\"<user-id> + '@' + <context-id> + '/' + <random>\""
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
@@ -512,12 +320,6 @@ appsuite:
|
||||
com.openexchange.net.ssl.custom.truststore.path: "/etc/ssl/certs/truststore.jks"
|
||||
com.openexchange.net.ssl.custom.truststore.password: {{ .Values.secrets.certificates.password | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.functional.groupware.davSupport.enabled }}
|
||||
com.openexchange.authentication.application.appTypes: "caldav,carddav"
|
||||
com.openexchange.authentication.application.enabled: "true"
|
||||
com.openexchange.authentication.application.storage.rdb.loginNameSource: "mail"
|
||||
com.openexchange.authentication.application.storage.rdb.contextLookupNamePart: "full"
|
||||
{{- end }}
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraEnv:
|
||||
- name: "JAVA_OPTS_APPEND"
|
||||
@@ -541,6 +343,8 @@ appsuite:
|
||||
com.openexchange.share.cryptKey: {{ .Values.secrets.oxAppSuite.shareCryptKey | quote }}
|
||||
com.openexchange.conference.element.authToken: {{ .Values.secrets.oxAppSuite.synapseAsToken | quote }}
|
||||
propertiesFiles:
|
||||
/opt/open-xchange/etc/masterpassword-authentication.properties:
|
||||
com.openexchange.authentication.masterpassword.password: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
|
||||
/opt/open-xchange/etc/AdminDaemon.properties:
|
||||
MASTER_ACCOUNT_OVERRIDE: "true"
|
||||
/opt/open-xchange/etc/AdminUser.properties:
|
||||
@@ -566,11 +370,6 @@ appsuite:
|
||||
com.openexchange.antivirus.port: "1344"
|
||||
{{- end }}
|
||||
com.openexchange.antivirus.maxFileSize: "1024"
|
||||
/opt/open-xchange/etc/filestore-s3.properties:
|
||||
com.openexchange.filestore.s3.ox-filestore-s3.endpoint: {{ .Values.objectstores.openxchange.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||
com.openexchange.filestore.s3.ox-filestore-s3.bucketName: {{ .Values.objectstores.openxchange.bucket | quote }}
|
||||
com.openexchange.filestore.s3.ox-filestore-s3.accessKey: {{ .Values.objectstores.openxchange.username | quote }}
|
||||
com.openexchange.filestore.s3.ox-filestore-s3.secretKey: {{ .Values.objectstores.openxchange.secretKey | default .Values.secrets.minio.openxchangeUser | quote }}
|
||||
uiSettings:
|
||||
io.ox.nextcloud//server: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/fs/"
|
||||
io.ox.public-sector//ics/url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/"
|
||||
@@ -635,8 +434,6 @@ appsuite:
|
||||
# podSecurityContext: {}
|
||||
# securityContext: {}
|
||||
update:
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreMw.updatePod | toYaml | nindent 8 }}
|
||||
image:
|
||||
repository: {{ .Values.images.openxchangeCoreMW.repository | quote }}
|
||||
tag: {{ .Values.images.openxchangeCoreMW.tag | quote }}
|
||||
@@ -650,20 +447,6 @@ appsuite:
|
||||
initContainer:
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeCoreMW | toYaml | nindent 8 }}
|
||||
{{- if .Values.functional.groupware.davSupport.enabled }}
|
||||
yamlFiles:
|
||||
app-password-apps.yml:
|
||||
caldav:
|
||||
displayName_t10e: "Calendar Client (CalDAV)"
|
||||
restrictedScopes: [dav,read_caldav,write_caldav]
|
||||
requiredCapabilities: [caldav]
|
||||
sortOrder: 30
|
||||
carddav:
|
||||
displayName_t10e: "Addressbook Client (CardDAV)"
|
||||
restrictedScopes: [dav,read_carddav,write_carddav]
|
||||
requiredCapabilities: [carddav]
|
||||
sortOrder: 40
|
||||
{{- end }}
|
||||
|
||||
core-ui:
|
||||
enabled: true
|
||||
@@ -677,8 +460,7 @@ appsuite:
|
||||
tag: {{ .Values.images.openxchangeCoreUI.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreUI }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreUi.pod | toYaml | nindent 6 }}
|
||||
podAnnotations: {}
|
||||
resources:
|
||||
{{ .Values.resources.openxchangeCoreUI | toYaml | nindent 6 }}
|
||||
securityContext:
|
||||
@@ -714,8 +496,7 @@ appsuite:
|
||||
tag: {{ .Values.images.openxchangeCoreUIMiddleware.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
overrides: {}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreUiMiddleware.pod | toYaml | nindent 6 }}
|
||||
podAnnotations: {}
|
||||
redis: *redisConfiguration
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreUIMiddleware }}
|
||||
resources:
|
||||
@@ -753,19 +534,12 @@ appsuite:
|
||||
cache:
|
||||
remoteCache:
|
||||
enabled: false
|
||||
imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.openxchangeDocumentConverter.registry | quote }}
|
||||
repository: {{ .Values.images.openxchangeDocumentConverter.repository | quote }}
|
||||
tag: {{ .Values.images.openxchangeDocumentConverter.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
{{- if .Values.annotations.openxchangeAppsuiteCoreDocumentconverter.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreDocumentconverter.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
podAnnotations: {}
|
||||
redis: *redisConfiguration
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreDocumentConverter }}
|
||||
resources:
|
||||
@@ -815,8 +589,7 @@ appsuite:
|
||||
repository: {{ .Values.images.openxchangeCoreGuidedtours.repository | quote }}
|
||||
tag: {{ .Values.images.openxchangeCoreGuidedtours.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreGuidedtours.pod | toYaml | nindent 6 }}
|
||||
podAnnotations: {}
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreGuidedtours }}
|
||||
resources:
|
||||
{{- .Values.resources.openxchangeCoreGuidedtours | toYaml | nindent 6 }}
|
||||
@@ -843,10 +616,6 @@ appsuite:
|
||||
adminPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
|
||||
basicAuthLogin: "oxlogin"
|
||||
basicAuthPassword: {{ .Values.secrets.oxAppSuite.basicAuthPassword | quote }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.openxchangeImageConverter.registry | quote }}
|
||||
repository: {{ .Values.images.openxchangeImageConverter.repository | quote }}
|
||||
@@ -858,10 +627,7 @@ appsuite:
|
||||
endpoint: "."
|
||||
accessKey: "."
|
||||
secretKey: "."
|
||||
{{- if .Values.annotations.openxchangeAppsuiteCoreImageconverter.pod }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreImageconverter.pod | toYaml | nindent 6 }}
|
||||
{{- end }}
|
||||
podAnnotations: {}
|
||||
redis: *redisConfiguration
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreImageConverter }}
|
||||
resources:
|
||||
@@ -930,8 +696,7 @@ appsuite:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . | quote }}
|
||||
{{- end }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangeAppsuiteCoreUserGuide.pod | toYaml | nindent 6 }}
|
||||
podAnnotations: {}
|
||||
replicaCount: {{ .Values.replicas.openxchangeCoreUserGuide }}
|
||||
resources:
|
||||
{{- .Values.resources.openxchangeCoreUserGuide | toYaml | nindent 6 }}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
{{- if .Values.certificate.selfSigned }}
|
||||
extraVolumes:
|
||||
@@ -49,7 +51,7 @@ oxConnector:
|
||||
oxMasterAdmin: "admin"
|
||||
oxMasterPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
|
||||
oxSmtpServer: "smtp://127.0.0.1:587"
|
||||
oxSoapServer: "http://open-xchange-core-mw-admin"
|
||||
oxSoapServer: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
||||
|
||||
provisioningApi:
|
||||
connection:
|
||||
@@ -65,10 +67,9 @@ resourcesWaitForDependency:
|
||||
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.oxConnector.size | quote }}
|
||||
#storageClass: {{ coalesce .Values.persistence.storages.oxConnector.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.oxConnector.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.nubusOxConnector.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
replicaCount: {{ .Values.replicas.oxConnector }}
|
||||
|
||||
@@ -91,8 +92,6 @@ securityContext:
|
||||
{{ .Values.seLinuxOptions.oxConnector | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.nubusOxConnector.serviceAccount | toYaml | nindent 4 }}
|
||||
create: true
|
||||
|
||||
...
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
*/}}
|
||||
---
|
||||
certificate:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
@@ -46,32 +48,16 @@ postfix:
|
||||
hostname: "postfix"
|
||||
inetProtocols: "ipv4"
|
||||
milterDefaultAction: "tempfail"
|
||||
overrides:
|
||||
- fileName: "sasl_passwd.map"
|
||||
content:
|
||||
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
|
||||
{{- if .Values.apps.dkimpy.enabled }}
|
||||
dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892"
|
||||
{{- end }}
|
||||
|
||||
minTLSVersion: "TLSv1.3"
|
||||
smtpdTLSMandatoryCiphers: "high"
|
||||
|
||||
rspamdHost: ""
|
||||
{{- if .Values.smtp.host }}
|
||||
relayHost:
|
||||
enabled: true
|
||||
host: {{ .Values.smtp.host }}
|
||||
port: {{ .Values.smtp.port }}
|
||||
authentication:
|
||||
username:
|
||||
value: {{ .Values.smtp.username }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.smtp.username.name | quote }}
|
||||
key: {{ .Values.externalSecrets.smtp.username.key | quote }}
|
||||
password:
|
||||
value: {{ .Values.smtp.password }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.smtp.password.name | quote }}
|
||||
key: {{ .Values.externalSecrets.smtp.password.key | quote }}
|
||||
{{- end }}
|
||||
allowRelayNets: false
|
||||
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"
|
||||
smtpTLSSecurityLevel: "encrypt"
|
||||
@@ -95,11 +81,10 @@ postfix:
|
||||
smtpdMilters: "inet:clamav-simple:7357"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
virtualMailboxDomains: {{ toYaml (prepend .Values.global.additionalMailDomains (.Values.global.mailDomain | default .Values.global.domain) | uniq) | nindent 4 }}
|
||||
virtualMailboxDomains: {{ if .Values.global.additionalMailDomains }}{{ printf "%s,%s" (.Values.global.mailDomain | default .Values.global.domain) .Values.global.additionalMailDomains }}{{ else }}{{ .Values.global.mailDomain | default .Values.global.domain | quote }}{{ end }}
|
||||
virtualTransport: "lmtps:dovecot:24"
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openxchangePostfix.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
replicaCount: {{ .Values.replicas.postfix }}
|
||||
|
||||
@@ -108,8 +93,6 @@ resources:
|
||||
|
||||
{{- if or (eq (coalesce .Values.service.type.postfix .Values.cluster.service.type) "NodePort") (eq (coalesce .Values.service.type.postfix .Values.cluster.service.type) "LoadBalancer") }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.openxchangePostfix.service | toYaml | nindent 4 }}
|
||||
external:
|
||||
enabled: true
|
||||
type: {{ coalesce .Values.service.type.postfix .Values.cluster.service.type | quote }}
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
{{/*
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPost.additional | toYaml | nindent 2 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPost.pod | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPost.serviceAccount | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
|
||||
migrations:
|
||||
stage: "POST"
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
{{/*
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPre.additional | toYaml | nindent 2 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPre.pod | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskMigrationsPre.serviceAccount | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
|
||||
migrations:
|
||||
stage: "PRE"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -9,9 +11,6 @@ global:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.openprojectBootstrap.additional | toYaml | nindent 2 }}
|
||||
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
@@ -73,9 +72,6 @@ image:
|
||||
job:
|
||||
enabled: true
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openprojectBootstrap.pod | toYaml | nindent 2 }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 1000
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -21,9 +23,8 @@ global:
|
||||
synapseFederation: {{ .Values.global.hosts.synapseFederation }}
|
||||
whiteboard: {{ .Values.global.hosts.whiteboard }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.elementAdmin.enabled }}
|
||||
adminBot: {{ .Values.global.hosts.adminBot }}
|
||||
synapseAdmin: {{ .Values.global.hosts.synapseAdmin }}
|
||||
{{- if .Values.apps.nubus.enabled }}
|
||||
intercomService: {{ .Values.global.hosts.intercomService }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.jitsi.enabled }}
|
||||
jitsi: {{ .Values.global.hosts.jitsi }}
|
||||
@@ -35,27 +36,23 @@ global:
|
||||
{{- if .Values.apps.nextcloud.enabled }}
|
||||
nextcloud: {{ .Values.global.hosts.nextcloud }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.notes.enabled }}
|
||||
notes: {{ .Values.global.hosts.notes }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.nubus.enabled }}
|
||||
intercomService: {{ .Values.global.hosts.intercomService }}
|
||||
keycloak: {{ .Values.global.hosts.keycloak }}
|
||||
nubus: {{ .Values.global.hosts.nubus }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.openproject.enabled }}
|
||||
openproject: {{ .Values.global.hosts.openproject }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.oxAppSuite.enabled }}
|
||||
openxchange: {{ .Values.global.hosts.openxchange }}
|
||||
openxchangeDav: {{ .Values.global.hosts.openxchangeDav }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.staticFiles.enabled }}
|
||||
static: {{ .Values.global.hosts.static }}
|
||||
{{- if .Values.apps.nubus.enabled }}
|
||||
keycloak: {{ .Values.global.hosts.keycloak }}
|
||||
nubus: {{ .Values.global.hosts.nubus }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.xwiki.enabled }}
|
||||
xwiki: {{ .Values.global.hosts.xwiki }}
|
||||
{{- end }}
|
||||
{{- if .Values.apps.notes.enabled }}
|
||||
notes: {{ .Values.global.hosts.notes }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
issuerRef:
|
||||
name: {{ .Values.certificate.issuerRef.name | quote }}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.opendeskServicesHome.additional | toYaml | nindent 2 }}
|
||||
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
hosts:
|
||||
@@ -13,6 +12,4 @@ ingress:
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
tls:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskServicesHome.ingress | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.monitoring.prometheus.prometheusRules.annotations | toYaml | nindent 2 }}
|
||||
@@ -7,5 +9,44 @@ additionalLabels:
|
||||
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 2 }}
|
||||
|
||||
config:
|
||||
{{ .Values.apps | toYaml | nindent 2 }}
|
||||
collabora:
|
||||
enable: {{ .Values.apps.collabora.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.collabora.namespace | quote }}
|
||||
matrix:
|
||||
enable: {{ .Values.apps.element.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.element.namespace | quote }}
|
||||
diagrams:
|
||||
enable: {{ .Values.apps.cryptpad.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.cryptpad.namespace | quote }}
|
||||
nextcloud:
|
||||
enable: {{ .Values.apps.nextcloud.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.nextcloud.namespace | quote }}
|
||||
openXChange:
|
||||
enable: {{ .Values.apps.oxAppSuite.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.oxAppSuite.namespace | quote }}
|
||||
xwiki:
|
||||
enable: {{ .Values.apps.xwiki.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.xwiki.namespace | quote }}
|
||||
nubus:
|
||||
enable: {{ .Values.apps.nubus.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.nubus.namespace | quote }}
|
||||
openProject:
|
||||
enable: {{ .Values.apps.openproject.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.openproject.namespace | quote }}
|
||||
jitsi:
|
||||
enable: {{ .Values.apps.jitsi.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.jitsi.namespace | quote }}
|
||||
collabora:
|
||||
enable: {{ .Values.apps.collabora.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.collabora.namespace | quote }}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.monitoring.grafana.dashboards.annotations | toYaml | nindent 2 }}
|
||||
@@ -8,5 +10,45 @@ additionalLabels:
|
||||
{{ .Values.monitoring.grafana.dashboards.labels | toYaml | nindent 2 }}
|
||||
|
||||
config:
|
||||
{{ .Values.apps | toYaml | nindent 2 }}
|
||||
apps:
|
||||
collabora:
|
||||
enable: {{ .Values.apps.collabora.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.collabora.namespace | quote }}
|
||||
matrixElement:
|
||||
enable: {{ .Values.apps.element.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.element.namespace | quote }}
|
||||
diagrams:
|
||||
enable: {{ .Values.apps.cryptpad.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.cryptpad.namespace | quote }}
|
||||
nextcloud:
|
||||
enable: {{ .Values.apps.nextcloud.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.nextcloud.namespace | quote }}
|
||||
openxchange:
|
||||
enable: {{ .Values.apps.oxAppSuite.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.oxAppSuite.namespace | quote }}
|
||||
xwiki:
|
||||
enable: {{ .Values.apps.xwiki.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.xwiki.namespace | quote }}
|
||||
nubus:
|
||||
enable: {{ .Values.apps.nubus.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.nubus.namespace | quote }}
|
||||
openproject:
|
||||
enable: {{ .Values.apps.openproject.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.openproject.namespace | quote }}
|
||||
jitsi:
|
||||
enable: {{ .Values.apps.jitsi.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.jitsi.namespace | quote }}
|
||||
collabora:
|
||||
enable: {{ .Values.apps.collabora.enabled }}
|
||||
selectors:
|
||||
namespace: {{ .Values.apps.collabora.namespace | quote }}
|
||||
...
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
domain: {{ .Values.global.domain | quote }}
|
||||
@@ -8,9 +10,6 @@ global:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.opendeskServicesStaticFiles.additional | toYaml | nindent 2 }}
|
||||
|
||||
assets:
|
||||
element:
|
||||
subdomain: {{ .Values.global.hosts.element }}
|
||||
@@ -97,8 +96,6 @@ ingress:
|
||||
host: "{{ .Values.global.hosts.static }}.{{ .Values.global.domain }}"
|
||||
tls:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskServicesStaticFiles.ingress | toYaml | nindent 4 }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.opendeskStaticFiles.registry | quote }}
|
||||
@@ -106,8 +103,6 @@ image:
|
||||
tag: {{ .Values.images.opendeskStaticFiles.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.opendeskServicesStaticFiles.pod | toYaml | nindent 2 }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -121,11 +116,4 @@ resources:
|
||||
|
||||
service:
|
||||
type: "ClusterIP"
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskServicesStaticFiles.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.opendeskServicesStaticFiles.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||
# SPDX-License-Identifier: Apache-2.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 | quote }}
|
||||
hosts:
|
||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.opendeskServicesOtterize.additional | toYaml | nindent 2 }}
|
||||
|
||||
apps:
|
||||
clamavDistributed:
|
||||
enabled: {{ .Values.apps.clamavDistributed.enabled }}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
global:
|
||||
imagePullSecrets:
|
||||
@@ -129,8 +131,7 @@ memcached:
|
||||
persistence:
|
||||
enabled: false
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.openproject.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
postgresql:
|
||||
bundled: false
|
||||
@@ -178,12 +179,6 @@ openproject:
|
||||
login: "opendesk_username"
|
||||
admin: "openproject_admin"
|
||||
useTmpVolumes: true
|
||||
tmpVolumesAnnotations:
|
||||
{{ .Values.annotations.openproject.openprojectTempVolumes | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.openproject.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
ingress:
|
||||
annotations:
|
||||
@@ -193,9 +188,6 @@ ingress:
|
||||
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"
|
||||
{{- with .Values.annotations.openproject.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
host: "{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}"
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||
@@ -229,9 +221,6 @@ seederJob:
|
||||
intents.otterize.com/service-name: "openproject-seeder"
|
||||
argocd.argoproj.io/hook: "Sync"
|
||||
argocd.argoproj.io/hook-delete-policy: "HookSucceeded"
|
||||
{{- with .Values.annotations.openproject.seederJob }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{ .Values.resources.openprojectSeederJob | toYaml | nindent 4 }}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
*/}}
|
||||
---
|
||||
containerSecurityContext:
|
||||
enabled: true
|
||||
@@ -26,15 +28,11 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
|
||||
repository: {{ .Values.images.cassandra.repository | quote }}
|
||||
tag: {{ .Values.images.cassandra.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
ingress:
|
||||
annotations:
|
||||
{{ .Values.annotations.cassandra.ingress | toYaml | nindent 6 }}
|
||||
|
||||
initDB:
|
||||
initUserData.cql: >
|
||||
CREATE KEYSPACE IF NOT EXISTS {{ .Values.databases.dovecotDictmap.name | quote }} WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
|
||||
@@ -62,7 +60,7 @@ livenessProbe:
|
||||
metrics:
|
||||
enabled: false
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandraExporter.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandraExporter.registry | quote }}
|
||||
repository: {{ .Values.images.cassandraExporter.repository | quote }}
|
||||
tag: {{ .Values.images.cassandraExporter.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
@@ -72,8 +70,7 @@ persistence:
|
||||
size: {{ .Values.persistence.storages.cassandra.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.cassandra.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.cassandra.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -95,10 +92,6 @@ replicaCount: {{ .Values.replicas.cassandra }}
|
||||
resources:
|
||||
{{ .Values.resources.cassandra | toYaml | nindent 2 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.cassandra.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
startupProbe:
|
||||
enabled: false
|
||||
initialDelaySeconds: 0
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
clamd:
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.clamdCommon | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -25,8 +25,7 @@ clamd:
|
||||
repository: {{ .Values.images.clamd.repository | quote }}
|
||||
tag: {{ .Values.images.clamd.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.clamdPod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 101
|
||||
@@ -34,13 +33,6 @@ clamd:
|
||||
replicaCount: {{ .Values.replicas.clamd }}
|
||||
resources:
|
||||
{{ .Values.resources.clamd | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.clamdService | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.clamdServiceAccount | toYaml | nindent 6 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -58,8 +50,6 @@ containerSecurityContext:
|
||||
{{ .Values.seLinuxOptions.clamav | toYaml | nindent 4 }}
|
||||
|
||||
freshclam:
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.freshclamCommon | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -80,8 +70,7 @@ freshclam:
|
||||
repository: {{ .Values.images.freshclam.repository | quote }}
|
||||
tag: {{ .Values.images.freshclam.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.freshclamPod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 101
|
||||
@@ -89,9 +78,6 @@ freshclam:
|
||||
replicaCount: {{ .Values.replicas.freshclam }}
|
||||
resources:
|
||||
{{ .Values.resources.freshclam | toYaml | nindent 4 }}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.freshclamServiceAccount | toYaml | nindent 6 }}
|
||||
settings:
|
||||
database:
|
||||
auth:
|
||||
@@ -106,8 +92,6 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
icap:
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.icapCommon | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -128,8 +112,7 @@ icap:
|
||||
repository: {{ .Values.images.icap.repository | quote }}
|
||||
tag: {{ .Values.images.icap.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.icapPod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 101
|
||||
@@ -137,17 +120,8 @@ icap:
|
||||
replicaCount: {{ .Values.replicas.icap }}
|
||||
resources:
|
||||
{{ .Values.resources.icap | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.icapService | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.icapServiceAccount | toYaml | nindent 6 }}
|
||||
|
||||
milter:
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.milterCommon | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -168,8 +142,7 @@ milter:
|
||||
repository: {{ .Values.images.milter.repository | quote }}
|
||||
tag: {{ .Values.images.milter.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.milterPod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 101
|
||||
@@ -177,17 +150,8 @@ milter:
|
||||
replicaCount: {{ .Values.replicas.milter }}
|
||||
resources:
|
||||
{{ .Values.resources.milter | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.milterService | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.milterServiceAccount | toYaml | nindent 6 }}
|
||||
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.clamav.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.clamav.storageClassName .Values.persistence.storageClassNames.RWX | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavDistributed.persistence | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavSimple.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -40,11 +39,8 @@ image:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.clamav.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.clamav.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavSimple.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalClamavSimple.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -66,13 +62,4 @@ settings:
|
||||
url: {{ .Values.repositories.clamav.mirror.url | quote }}
|
||||
customURLs:
|
||||
{{ .Values.repositories.clamav.customURLs | toYaml | nindent 8 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavSimple.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalClamavSimple.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
additionalAnnotations:
|
||||
{{ .Values.annotations.servicesExternalDkimpy.additional | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: true
|
||||
capabilities: {}
|
||||
@@ -29,9 +28,6 @@ image:
|
||||
tag: {{ .Values.images.dkimpy.tag | quote }}
|
||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalDkimpy.service | toYaml | nindent 2 }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
fsGroup: 1000
|
||||
@@ -48,13 +44,4 @@ replicaCount: {{ .Values.replicas.dkimpy }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.dkimpy | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalDkimpy.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalDkimpy.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMariadb.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -74,15 +73,10 @@ mariadb:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.mariadb.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.mariadb.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMariadb.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
argocd.argoproj.io/hook: "PostSync"
|
||||
argocd.argoproj.io/hook-delete-policy: "BeforeHookCreation"
|
||||
{{- with .Values.annotations.servicesExternalMariadb.pod }}
|
||||
{{ . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -94,12 +88,4 @@ replicaCount: {{ .Values.replicas.mariadb }}
|
||||
resources:
|
||||
{{ .Values.resources.mariadb | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMariadb.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMariadb.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
architecture: {{ if gt .Values.replicas.memcached 1 }}"high-availability"{{ else }}"standalone"{{ end }}
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMemcached.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -28,26 +27,18 @@ global:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.memcached.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.memcached.registry | quote }}
|
||||
repository: {{ .Values.images.memcached.repository | quote }}
|
||||
tag: {{ .Values.images.memcached.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMemcached.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
replicaCount: {{ .Values.replicas.memcached }}
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.memcached | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMemcached.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMemcached.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
*/}}
|
||||
---
|
||||
apiIngress:
|
||||
enabled: {{ .Values.ingress.enabled }}
|
||||
@@ -13,16 +15,10 @@ apiIngress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "4G"
|
||||
nginx.org/client-max-body-size: "4G"
|
||||
{{- with .Values.annotations.servicesExternalMinio.apiIngress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
auth:
|
||||
rootPassword: {{ .Values.secrets.minio.rootPassword | quote }}
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
enabled: true
|
||||
allowPrivilegeEscalation: false
|
||||
@@ -46,7 +42,7 @@ global:
|
||||
allowInsecureImages: true
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.minio.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.minio.registry | quote }}
|
||||
repository: {{ .Values.images.minio.repository | quote }}
|
||||
tag: {{ .Values.images.minio.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
@@ -54,7 +50,7 @@ image:
|
||||
volumePermissions:
|
||||
enabled: true
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.minio.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.minio.registry | quote }}
|
||||
repository: {{ .Values.images.bitnamiOSShell.repository | quote }}
|
||||
tag: {{ .Values.images.bitnamiOSShell.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
@@ -70,9 +66,6 @@ ingress:
|
||||
secretName: "{{ .Values.ingress.tls.secretName }}"
|
||||
annotations:
|
||||
nginx.org/websocket-services: "minio"
|
||||
{{- with .Values.annotations.servicesExternalMinio.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
livenessProbe:
|
||||
@@ -99,8 +92,6 @@ podSecurityContext:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.minio.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.minio.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.persistence | toYaml | nindent 4 }}
|
||||
|
||||
provisioning:
|
||||
enabled: true
|
||||
@@ -122,9 +113,6 @@ provisioning:
|
||||
- name: {{ .Values.objectstores.openproject.bucket | quote }}
|
||||
versioning: "Suspended"
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.openxchange.bucket | quote }}
|
||||
versioning: "Suspended"
|
||||
withLock: false
|
||||
- name: {{ .Values.objectstores.nubus.bucket | quote }}
|
||||
versioning: "Suspended"
|
||||
withLock: false
|
||||
@@ -133,8 +121,6 @@ provisioning:
|
||||
versioning: "Suspended"
|
||||
withLock: false
|
||||
{{- end }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.provisioningPod | toYaml | nindent 4 }}
|
||||
policies:
|
||||
- name: "migrations-bucket-policy"
|
||||
statements:
|
||||
@@ -184,18 +170,6 @@ provisioning:
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- name: "openxchange-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
- "arn:aws:s3:::openxchange"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- resources:
|
||||
- "arn:aws:s3:::openxchange/*"
|
||||
effect: "Allow"
|
||||
actions:
|
||||
- "s3:*"
|
||||
- name: "ums-bucket-policy"
|
||||
statements:
|
||||
- resources:
|
||||
@@ -247,12 +221,6 @@ provisioning:
|
||||
policies:
|
||||
- "openproject-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.openxchange.username | quote }}
|
||||
password: {{ .Values.secrets.minio.openxchangeUser | quote }}
|
||||
disabled: false
|
||||
policies:
|
||||
- "openxchange-bucket-policy"
|
||||
setPolicies: true
|
||||
- username: {{ .Values.objectstores.nubus.username | quote }}
|
||||
password: {{ .Values.secrets.minio.umsUser | quote }}
|
||||
disabled: false
|
||||
@@ -270,8 +238,7 @@ provisioning:
|
||||
resources:
|
||||
{{ .Values.resources.minio | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.pod | toYaml | nindent 2 }}
|
||||
podAnnotations: {}
|
||||
|
||||
readinessProbe:
|
||||
enabled: true
|
||||
@@ -282,17 +249,6 @@ readinessProbe:
|
||||
resources:
|
||||
{{ .Values.resources.minio | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.serviceService | toYaml | nindent 4 }}
|
||||
headless:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.serviceHeadless | toYaml | nindent 6 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalMinio.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
startupProbe:
|
||||
enabled: true
|
||||
periodSeconds: 10
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
# SPDX-FileCopyrightText: 2024-2025 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
|
||||
{{/*
|
||||
SPDX-FileCopyrightText: 2024-2025 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
|
||||
*/}}
|
||||
---
|
||||
certificate:
|
||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||
request:
|
||||
enabled: false
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalPostfix.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: true
|
||||
capabilities: {}
|
||||
@@ -37,11 +36,6 @@ image:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.postfix.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.postfix.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostfix.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalPostfix.pod | toYaml | nindent 2 }}
|
||||
|
||||
podSecurityContext:
|
||||
enabled: true
|
||||
@@ -54,34 +48,16 @@ postfix:
|
||||
hostname: "postfix"
|
||||
inetProtocols: "ipv4"
|
||||
milterDefaultAction: "accept"
|
||||
overrides:
|
||||
- fileName: "sasl_passwd.map"
|
||||
content:
|
||||
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
|
||||
{{- if .Values.apps.dkimpy.enabled }}
|
||||
dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892"
|
||||
{{- end }}
|
||||
rspamdHost: ""
|
||||
{{- if .Values.smtp.host }}
|
||||
relayHost:
|
||||
enabled: true
|
||||
host: {{ .Values.smtp.host }}
|
||||
port: {{ .Values.smtp.port }}
|
||||
authentication:
|
||||
username:
|
||||
value: {{ .Values.smtp.username }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.smtp.username.name | quote }}
|
||||
key: {{ .Values.externalSecrets.smtp.username.key | quote }}
|
||||
password:
|
||||
value: {{ .Values.smtp.password }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.smtp.password.name | quote }}
|
||||
key: {{ .Values.externalSecrets.smtp.password.key | quote }}
|
||||
{{- end }}
|
||||
# Warning: This setting allows unauthenticated mail relay from relayNets!
|
||||
allowRelayNets: true
|
||||
relayHost: {{ if .Values.smtp.host }}{{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}{{ else }}""{{ end }}
|
||||
relayNets: {{ join " " .Values.cluster.networking.cidr | quote }}
|
||||
|
||||
minTLSVersion: "TLSv1.3"
|
||||
smtpdTLSMandatoryCiphers: "high"
|
||||
|
||||
smtpSASLAuthEnable: "yes"
|
||||
smtpSASLPasswordMaps: "lmdb:/etc/postfix/sasl_passwd.map"
|
||||
smtpTLSSecurityLevel: "encrypt"
|
||||
@@ -97,14 +73,8 @@ postfix:
|
||||
enabled: true
|
||||
username:
|
||||
value: "opendesk-system"
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.postfix.opendeskSystemUsername.name | quote }}
|
||||
key: {{ .Values.externalSecrets.postfix.opendeskSystemUsername.key | quote }}
|
||||
password:
|
||||
value: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
|
||||
existingSecret:
|
||||
name: {{ .Values.externalSecrets.postfix.opendeskSystemPassword.name | quote }}
|
||||
key: {{ .Values.externalSecrets.postfix.opendeskSystemPassword.key | quote }}
|
||||
|
||||
{{- if .Values.antivirus.milter.host }}
|
||||
smtpdMilters: "inet:{{ .Values.antivirus.milter.host }}:{{ .Values.antivirus.milter.port }}"
|
||||
@@ -117,7 +87,7 @@ postfix:
|
||||
{{- end }}
|
||||
# Only deliver mail to Dovecot, if it is available
|
||||
{{- if .Values.apps.oxAppSuite.enabled }}
|
||||
virtualMailboxDomains: {{ toYaml (prepend .Values.global.additionalMailDomains (.Values.global.mailDomain | default .Values.global.domain) | uniq) | nindent 4 }}
|
||||
virtualMailboxDomains: {{ if .Values.global.additionalMailDomains }}{{ printf "%s,%s" (.Values.global.mailDomain | default .Values.global.domain) .Values.global.additionalMailDomains }}{{ else }}{{ .Values.global.mailDomain | default .Values.global.domain | quote }}{{ end }}
|
||||
virtualTransport: "lmtps:dovecot:24"
|
||||
{{- end }}
|
||||
|
||||
@@ -129,12 +99,6 @@ resources:
|
||||
{{ .Values.resources.postfix | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostfix.service | toYaml | nindent 4 }}
|
||||
external:
|
||||
enabled: false
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostfix.serviceAccount | toYaml | nindent 4 }}
|
||||
...
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
cleanup:
|
||||
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
|
||||
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalPostgresql.common | toYaml | nindent 2 }}
|
||||
|
||||
containerSecurityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
@@ -111,15 +110,10 @@ job:
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.postgresql.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.postgresql.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostgresql.persistence | toYaml | nindent 4 }}
|
||||
|
||||
podAnnotations:
|
||||
argocd.argoproj.io/hook: "PostSync"
|
||||
argocd.argoproj.io/hook-delete-policy: "BeforeHookCreation"
|
||||
{{- with .Values.annotations.servicesExternalPostgresql.pod}}
|
||||
{{ . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
postgres:
|
||||
user: "postgres"
|
||||
@@ -127,13 +121,4 @@ postgres:
|
||||
|
||||
resources:
|
||||
{{ .Values.resources.postgresql | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostgresql.service | toYaml | nindent 4 }}
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalPostgresql.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
...
|
||||
|
||||
@@ -1,29 +1,26 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
architecture: "standalone"
|
||||
|
||||
auth:
|
||||
password: {{ .Values.secrets.redis.password | quote }}
|
||||
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.common | toYaml | nindent 2 }}
|
||||
|
||||
global:
|
||||
imagePullSecrets:
|
||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.redis.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
|
||||
image:
|
||||
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.redis.registry | quote }}
|
||||
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.redis.registry | quote }}
|
||||
repository: {{ .Values.images.redis.repository | quote }}
|
||||
tag: {{ .Values.images.redis.tag | quote }}
|
||||
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||
|
||||
master:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.masterMaster | toYaml | nindent 4 }}
|
||||
containerSecurityContext:
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
@@ -41,40 +38,13 @@ master:
|
||||
count: {{ .Values.replicas.redis }}
|
||||
persistence:
|
||||
size: {{ .Values.persistence.storages.redis.size | quote }}
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.masterPersistence | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.masterPod | toYaml | nindent 4 }}
|
||||
podAnnotations: {}
|
||||
resources:
|
||||
{{ .Values.resources.redis | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.masterService | toYaml | nindent 6 }}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.masterServiceAccount | toYaml | nindent 6 }}
|
||||
|
||||
metrics:
|
||||
enabled: false
|
||||
|
||||
replica:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.replicaReplica | toYaml | nindent 4 }}
|
||||
persistence:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.replicaPersistence | toYaml | nindent 6 }}
|
||||
podAnnotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.replicaPod | toYaml | nindent 4 }}
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.replicaService | toYaml | nindent 6 }}
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.replicaServiceAccount | toYaml | nindent 6 }}
|
||||
|
||||
secretAnnotations:
|
||||
{{ .Values.annotations.servicesExternalRedis.secret | toYaml | nindent 2 }}
|
||||
|
||||
sentinel:
|
||||
enabled: false
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# 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
|
||||
{{/*
|
||||
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
|
||||
*/}}
|
||||
---
|
||||
commonAnnotations:
|
||||
{{ .Values.annotations.xwiki.common | toYaml | nindent 2 }}
|
||||
|
||||
image:
|
||||
{{- if eq .Values.databases.xwiki.type "mariadb" }}
|
||||
name: "{{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.xwikiMariadb.registry }}/{{ .Values.images.xwikiMariadb.repository }}"
|
||||
@@ -130,9 +129,6 @@ ingress:
|
||||
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 }}"
|
||||
{{- with .Values.annotations.xwiki.ingress }}
|
||||
{{ . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
hosts:
|
||||
- host: "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
|
||||
paths:
|
||||
@@ -153,8 +149,6 @@ mysql:
|
||||
enabled: false
|
||||
|
||||
persistence:
|
||||
annotations:
|
||||
{{ .Values.annotations.xwiki.persistence | toYaml | nindent 4 }}
|
||||
size: {{ .Values.persistence.storages.xwiki.size | quote }}
|
||||
storageClass: {{ coalesce .Values.persistence.storages.xwiki.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
|
||||
|
||||
@@ -223,15 +217,9 @@ resources:
|
||||
{{ .Values.resources.xwiki | toYaml | nindent 2 }}
|
||||
|
||||
service:
|
||||
annotations:
|
||||
{{ .Values.annotations.xwiki.service | toYaml | nindent 4 }}
|
||||
externalPort: 80
|
||||
enabled: true
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
{{ .Values.annotations.xwiki.serviceAccount | toYaml | nindent 4 }}
|
||||
|
||||
volumePermissions:
|
||||
enabled: true
|
||||
|
||||
|
||||