Compare commits

..

81 Commits

Author SHA1 Message Date
Sven Andersen
6afcf9aba5 feat(element): Featuretoggle for presence propagation 2024-07-31 08:24:43 +02:00
Sven Andersen
bd0b08b4cf feat(element): Reduced presence values to one for all presence features 2024-07-30 16:09:29 +02:00
Sven Andersen
879014e068 feat(element): Default for Element status disabled 2024-07-30 15:00:25 +02:00
Sven Andersen
e734ec2e1b feat(element): Functional test for toggle element presence 2024-07-30 13:26:02 +02:00
Sven Andersen
5976684a9a feat(element): Implement toggle for userpresence within element-synapse and removed it from client 2024-07-30 12:20:57 +02:00
Sven Andersen
c3679341b0 feat(element): Use_presence into values-element 2024-07-30 11:30:48 +02:00
Sven Andersen
be5c55583c feat(element): Implement toggle for presence Status for older Element Versions 2024-07-30 09:45:27 +02:00
Sven Andersen
5b5e53ab4b fix(element): Removed latest Tag 2024-07-29 10:22:55 +02:00
Sven Andersen
1c26600ac2 fix(element): Bump element chart 2024-07-29 10:19:17 +02:00
Sven Andersen
0e99cbb834 feat(element): Changed element chart to test presence 2024-07-29 08:34:00 +02:00
Sven Andersen
2a59b836f1 fix(element): Insert presence into homeserver config 2024-07-26 15:04:12 +02:00
Sven Andersen
2fa55ec38a feat(element): Typo in Template 2024-07-26 14:27:42 +02:00
Sven Andersen
cdf01cfde9 feat(element): Disable presence with approach from Thorsten 2024-07-26 14:03:49 +02:00
Sven Andersen
30fd4229c5 feat(element): Reverted change presence 2024-07-26 10:55:57 +02:00
Sven Andersen
82c40d47b0 feat(element): Homeserver presence false 2024-07-26 09:44:23 +02:00
Sven Andersen
e7f14149a3 feat(element): Presence enabled false 2024-07-25 11:23:33 +02:00
openDesk Bot
74d444e2d6 fix(collabora): Update to 24.04.5.1.2. 2024-07-18 07:53:49 +02:00
openDesk Bot
8a2d951c3b fix(collabora): Update to 24.04.5.1.1. 2024-07-17 10:39:37 +02:00
Thorsten Roßner
46412d1a9e fix(keycloak): Support for custom OIDC Clients and ClientScopes. 2024-07-17 10:39:37 +02:00
Thorsten Roßner
26a7641a5a fix(helmfile): Streamline prefixes for customizable defaults. UPGRADES: See ./docs/migrations.md for more details. 2024-07-17 10:39:16 +02:00
Thorsten Roßner
671f57a809 fix(nextcloud): Update to 28.0.7 including latest apps for 28. 2024-07-16 08:25:55 +00:00
Thorsten Roßner
fe923bb9cd fix(jitsi): Raise memory limit for jicofo and jvb as required by upstream product. 2024-07-16 04:35:43 +00:00
Thorsten Roßner
b4570a9a87 feat(authentication): Avoid that users can open a app they do not have the appropriate LDAP group set for. Implementation is based on role based client scopes. Introducing also an openDesk migration approach with a pre and post deployment stage. 2024-07-15 17:50:35 +02:00
Thorsten Roßner
1067e725b3 fix(xwiki): Add email address mapping to LDAP sync; Fix hostname null value in notification links. 2024-07-10 16:31:04 +00:00
Thorsten Roßner
dfaf4be640 fix(openproject): Support for adding token to enable OpenProject Premium. 2024-07-10 06:27:27 +02:00
openDesk Bot
e54aaab072 fix(xwiki): Update to 16.4.1. 2024-07-08 08:27:13 +02:00
Thorsten Roßner
b806d51311 fix(xwiki): Remove .rtf and .odt export options as they are currently non functional. 2024-07-05 15:18:42 +02:00
openDesk Bot
db7f5d60bd fix(xwiki): Update to 16.4. 2024-07-05 09:21:16 +02:00
Thorsten Roßner
972020f946 fix(helmfile): Add S3 bucket for migrations. 2024-07-04 09:17:56 +02:00
Thorsten Roßner
23ef1d557b fix(nextcloud): Support templating of default quota and *_retention_obligation settings (#93). 2024-07-03 14:48:05 +02:00
Thorsten Roßner
382af1dfb9 fix(docu): Update documentation on integration uses cases (#95). 2024-07-03 09:54:43 +02:00
Thorsten Roßner
7239df2ec1 chore(release): 0.8.1 [skip ci]
## [0.8.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.8.0...v0.8.1) (2024-07-01)

### Bug Fixes

* **collabora:** Bump image to 24.04.4.1.1. ([368fe13](368fe13ddb))
* **collabora:** Bump image to 24.04.4.2.1. ([01767d3](01767d3806))
* **docs:** Add Ports section to getting started. ([c07b25c](c07b25c4b9))
* **docs:** Correction regarding the currently supported ingress controller. ([8514908](85149086ae))
* **docs:** Update regarding the currently supported ingress controller. ([064a5ad](064a5ad246))
* **element:** Provide the internal cluster domain to `synapse-web`. ([a8692d5](a8692d5506))
* **helmfile:** Add script to ease local development of platform charts. ([d8f3e05](d8f3e05e58))
* **helmfile:** Enable SMTP for XWiki and Element/Synapse; Streamline mail sender addresses within platform based on `<localpart>@<component>.<domain>` and allow configuration of `<localpart>`. ([01c5e6b](01c5e6b359))
* **helmfile:** Include all `.yaml.gotmpl` files for the envs in `environments.yaml`. ([e523434](e52343440d))
* **helmfile:** Streamline `functional.yaml`. *Upgrade notice:* If you set a non default value for `.Values.portal.enableDeploymentInformation` please change it to `.Values.admin.portal.deploymentInformation.enabled` with this version. ([e89b16a](e89b16a747))
* **jitsi:** Update PatchJVB bitnami/kubectl image to 1.30.2. ([6ef3641](6ef3641d82))
* **nubus:** Enable Keycloak's user account console. ([c03e4a5](c03e4a5340))
* **nubus:** Remove doublette ingress annotations. ([890b36e](890b36ecbb))
* **open-xchange:** Fixing YAML indentation of updater resources ([0ce346b](0ce346b162))
* **openproject:** Bump image to 14.2.0. ([1ad35f1](1ad35f1e12))
* **openproject:** Switch DBInit container image to Alpine based version to reduce footprint. ([c90f7c1](c90f7c1742))
* **openproject:** Update PostgreSQL image for DB init to 16.3. ([45e5699](45e569955d))
* **services:** Allow Postfix "relayHost" to be empty. ([7268f60](7268f607a5))
2024-07-01 19:17:48 +00:00
openDesk Bot
86a328bda1 chore(openproject): Update library/postgres sha-digest. 2024-07-01 17:23:28 +02:00
Thorsten Roßner
85149086ae fix(docs): Correction regarding the currently supported ingress controller. 2024-07-01 13:24:19 +02:00
Thorsten Roßner
01c5e6b359 fix(helmfile): Enable SMTP for XWiki and Element/Synapse; Streamline mail sender addresses within platform based on <localpart>@<component>.<domain> and allow configuration of <localpart>. 2024-07-01 12:34:51 +02:00
Johannes Bornhold
a8692d5506 fix(element): Provide the internal cluster domain to synapse-web. 2024-07-01 09:24:01 +00:00
Oliver Günther
1ad35f1e12 fix(openproject): Bump image to 14.2.0. 2024-06-24 17:30:05 +02:00
openDesk Bot
01767d3806 fix(collabora): Bump image to 24.04.4.2.1. 2024-06-24 14:40:54 +00:00
Johannes Bornhold
7268f607a5 fix(services): Allow Postfix "relayHost" to be empty. 2024-06-24 16:37:19 +02:00
Thorsten Roßner
e52343440d fix(helmfile): Include all .yaml.gotmpl files for the envs in environments.yaml. 2024-06-17 14:46:51 +02:00
Thorsten Roßner
c03e4a5340 fix(nubus): Enable Keycloak's user account console. 2024-06-17 06:25:46 +00:00
openDesk Bot
c90f7c1742 fix(openproject): Switch DBInit container image to Alpine based version to reduce footprint. 2024-06-17 06:24:35 +00:00
openDesk Bot
ceb09bee8c chore(renovate): Update collabora-online Docker tag to v1.1.17 2024-06-15 03:36:23 +00:00
Thorsten Roßner
890b36ecbb fix(nubus): Remove doublette ingress annotations. 2024-06-14 16:04:50 +02:00
openDesk Bot
6ef3641d82 fix(jitsi): Update PatchJVB bitnami/kubectl image to 1.30.2. 2024-06-14 07:32:54 +00:00
openDesk Bot
45e569955d fix(openproject): Update PostgreSQL image for DB init to 16.3. 2024-06-14 07:32:10 +00:00
Gergely Szabo
0ce346b162 fix(open-xchange): Fixing YAML indentation of updater resources 2024-06-13 17:54:54 +02:00
Thorsten Roßner
c07b25c4b9 fix(docs): Add Ports section to getting started. 2024-06-13 15:26:39 +02:00
Thorsten Roßner
e89b16a747 fix(helmfile): Streamline functional.yaml. *Upgrade notice:* If you set a non default value for .Values.portal.enableDeploymentInformation please change it to .Values.admin.portal.deploymentInformation.enabled with this version. 2024-06-12 10:42:00 +00:00
Thorsten Roßner
064a5ad246 fix(docs): Update regarding the currently supported ingress controller. 2024-06-12 12:28:52 +02:00
Thorsten Roßner
d8f3e05e58 fix(helmfile): Add script to ease local development of platform charts. 2024-06-11 10:00:36 +00:00
openDesk Bot
368fe13ddb fix(collabora): Bump image to 24.04.4.1.1. 2024-06-11 11:01:09 +02:00
Thorsten Roßner
fcf33825d5 chore(release): 0.8.0 [skip ci]
# [0.8.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.1...v0.8.0) (2024-06-10)

### Bug Fixes

* **ci:** Allow CI to be triggered by API authorized personal access token. ([b95fd11](b95fd1152a))
* **collabora:** Semi-disable update checker. ([d7a127f](d7a127fe26))
* **collabora:** Update to 24.04.3.1.1. ([5869316](58693162e6))
* **docs:** Spell check and streamline. ([4d99bf3](4d99bf3bf0))
* **element:** Bump container images (widgets, community artifacts). ([f856205](f856205afc))
* **element:** Bump to v1.11.67. ([a4ff89b](a4ff89b213))
* **element:** Update Synapse. ([9fa8ace](9fa8ace80f))
* **helmfile:** Remove unused ox-provisioning hostname. ([e31a0a2](e31a0a258e))
* **jitsi:** Update jitsi-keycloak-adapter image to Docker tag v20240314. ([6202bc4](6202bc4719))
* **nubus:** Change to new Univention upstream registry. ([d7fbc57](d7fbc572ca))
* **nubus:** Disable UDM REST API routing by default and always disable UMC local login. ([e1e8a7f](e1e8a7f121))
* **nubus:** Guardian version bump and refactoring. ([2f88752](2f88752ae6))
* **nubus:** Re-add selfservice-listener image configuration. ([af711b0](af711b0edb))
* **open-xchange:** Set Nubus LDAP attribute to render manager_name in address book. See https://forge.univention.org/bugzilla/show_bug.cgi?id=53741 for reference. ([4f92001](4f92001d68))
* **openproject:** Bump library/postgres image to v16. ([742c293](742c293243))
* **openproject:** Bump to 14.1.0, set default timezone on deployment to `Europe/Berlin` and raise default memory limit to 2Gi. ([6e49721](6e4972107e))
* **openproject:** Update Helm chart to v5.1.4. ([75cd077](75cd077351))
* **openproject:** Update to 14.1.1 and bump PostgreSQL 13 image for InitDB. ([bd2d7cf](bd2d7cf748))
* **services:** Update `opendesk-home` to v1.0.2 to fix issue with Element `.well-known` ingress collision. ([b0eb28b](b0eb28bc3f))
* **univention-management-stack:** Add functional switch to disable deployment information. ([a31c5f5](a31c5f59a6))

### Features

* **element:** Enable Matrix federation via https. ([ecb566f](ecb566f61e))
* **helmfile:** Add support for Ingress parameter configuration (proxy-body-size, proxy-read-timeout, proxy-send-timeout). ([dc39b94](dc39b94e88))
* **helmfile:** Create child helmfile for GitOps approach. ([a899699](a899699e21))
* **nubus:** Cleanup Keycloak values. ([f3d8cf0](f3d8cf08ef))
2024-06-10 11:19:55 +00:00
Dominik Kaminski
b1d0a05a0c ci(gitlab): Update opendesk-cli image 2024-06-09 23:05:29 +02:00
Dominik Kaminski
b0eb28bc3f fix(services): Update opendesk-home to v1.0.2 to fix issue with Element .well-known ingress collision. 2024-06-07 10:39:19 +00:00
Dominik Kaminski
1a811743df ci(gitlab): Update to v2.3.3 to fix conventional commits regex bug. 2024-06-07 10:39:19 +00:00
Thorsten Roßner
d7a127fe26 fix(collabora): Semi-disable update checker. 2024-06-06 19:33:11 +02:00
Thorsten Roßner
e31a0a258e fix(helmfile): Remove unused ox-provisioning hostname. 2024-06-06 19:15:18 +02:00
openDesk Bot
742c293243 fix(openproject): Bump library/postgres image to v16. 2024-06-06 14:13:14 +02:00
Thorsten Roßner
f856205afc fix(element): Bump container images (widgets, community artifacts). 2024-06-06 14:13:01 +02:00
openDesk Bot
9fa8ace80f fix(element): Update Synapse. 2024-06-06 14:12:43 +02:00
Dominik Kaminski
dc39b94e88 feat(helmfile): Add support for Ingress parameter configuration (proxy-body-size, proxy-read-timeout, proxy-send-timeout). 2024-06-06 14:12:29 +02:00
Gergely Szabo
a31c5f59a6 fix(univention-management-stack): Add functional switch to disable deployment information. 2024-06-06 14:12:20 +02:00
Gergely Szabo
a899699e21 feat(helmfile): Create child helmfile for GitOps approach. 2024-06-06 14:12:14 +02:00
openDesk Bot
bd2d7cf748 fix(openproject): Update to 14.1.1 and bump PostgreSQL 13 image for InitDB. 2024-06-06 14:12:14 +02:00
Dominik Kaminski
ecb566f61e feat(element): Enable Matrix federation via https. 2024-06-06 14:12:00 +02:00
openDesk Bot
75cd077351 fix(openproject): Update Helm chart to v5.1.4. 2024-06-04 15:08:55 +02:00
openDesk Bot
6202bc4719 fix(jitsi): Update jitsi-keycloak-adapter image to Docker tag v20240314. 2024-06-04 09:52:59 +02:00
Thorsten Roßner
e1e8a7f121 fix(nubus): Disable UDM REST API routing by default and always disable UMC local login. 2024-06-03 17:25:16 +02:00
Carlos García-Mauriño
af711b0edb fix(nubus): Re-add selfservice-listener image configuration. 2024-06-03 14:36:01 +02:00
Thorsten Roßner
4f92001d68 fix(open-xchange): Set Nubus LDAP attribute to render manager_name in address book. See https://forge.univention.org/bugzilla/show_bug.cgi?id=53741 for reference. 2024-06-03 11:27:49 +02:00
openDesk Bot
58693162e6 fix(collabora): Update to 24.04.3.1.1. 2024-06-03 07:08:27 +02:00
Thorsten Roßner
b95fd1152a fix(ci): Allow CI to be triggered by API authorized personal access token. 2024-05-31 21:58:42 +02:00
Thorsten Roßner
a4ff89b213 fix(element): Bump to v1.11.67. 2024-05-31 06:38:53 +00:00
Carlos García-Mauriño
d7fbc572ca fix(nubus): Change to new Univention upstream registry. 2024-05-31 07:28:54 +02:00
Thorsten Roßner
4d99bf3bf0 fix(docs): Spell check and streamline. 2024-05-24 18:36:13 +02:00
Oliver Günther
6e4972107e fix(openproject): Bump to 14.1.0, set default timezone on deployment to Europe/Berlin and raise default memory limit to 2Gi. 2024-05-24 07:01:33 +02:00
Jaime Conde
2f88752ae6 fix(nubus): Guardian version bump and refactoring. 2024-05-22 11:03:44 +02:00
Carlos García-Mauriño
f3d8cf08ef feat(nubus): Cleanup Keycloak values. 2024-05-22 07:49:57 +02:00
Thorsten Roßner
592e17027b chore(release): 0.7.1 [skip ci]
## [0.7.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.0...v0.7.1) (2024-05-21)

### Bug Fixes

* **ci:** Add Renovate dependency update automation. ([650c41c](650c41c3f0))
* **cryptpad:** Update Helm chart v0.0.19 and include CryptPad app in Helmfile deployment. ([931ed95](931ed95ce1))
* **docu:** Add IdP federation documentation. ([7167055](7167055303))
* **docu:** Rename SYNAPSE_DOMAIN to MATRIX_DOMAIN. If you use SYNAPSE_DOMAIN in your deployment, ensure you set the MATRIX_DOMAIN accordingly before upgrading. ([96baa6c](96baa6cc15))
* **element:** Provide certificate for alternative Synapse domain. ([88ac239](88ac2396e6))
* **helmfile:** Use Open CoDE as default registry for Univention helm chart ([#71](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/71)). ([4e56ce4](4e56ce4073))
* **jitsi:** Bump images to stable-9457-2. ([1d47fa6](1d47fa681a))
* **jitsi:** Raise Jibri memory limits to fullfil Jibri's 2Gi /dev/shm requirement and update Helm chart; To update an existing installation you need to manually delete the `jitsi-prosody` stateful set before the update e.g. `kubectl -n <your_namespace> delete --cascade=orphan statefulsets jitsi-prosody`. Ensure you use the `--cascade=orphan` part, otherwise you have to remove and reinstall the complete deployment. ([6570c13](6570c13f3a))
* **nextcloud:** Bump to 28.0.5 incl. latest app versions. ([04d9372](04d9372cfc))
* **nubus:** Bump Keycloak to 24.0.3. ([923533d](923533d7b7))
* **nubus:** Enable 2FA for group "Domain Admins" by default. ([1179669](11796699bb))
* **nubus:** Update keycloak-bootstap and keycloak-extensions. ([1c6666f](1c6666fe45))
* **open-xchange:** Support change of username. ([b2cfa8b](b2cfa8b996))
* **openproject:** Bump version to 14.0.1, update Helm chart to 4.5.0. ([e085211](e0852119e8))
2024-05-21 11:43:28 +00:00
Thorsten Roßner
6570c13f3a fix(jitsi): Raise Jibri memory limits to fullfil Jibri's 2Gi /dev/shm requirement and update Helm chart; To update an existing installation you need to manually delete the jitsi-prosody stateful set before the update e.g. kubectl -n <your_namespace> delete --cascade=orphan statefulsets jitsi-prosody. Ensure you use the --cascade=orphan part, otherwise you have to remove and reinstall the complete deployment. 2024-05-21 13:15:16 +02:00
103 changed files with 3117 additions and 1521 deletions

14
.gitignore vendored
View File

@@ -5,9 +5,19 @@
.yamllint
# Ignore changes to sample environments
helmfile/environments/dev/values.yaml.gotmpl
helmfile/environments/prod/values.yaml.gotmpl
helmfile/environments/dev/*.yaml.gotmpl
helmfile/environments/prod/*.yaml.gotmpl
# Ignore in CI generated files
.kyverno/opendesk.yaml
.kyverno/kyverno-test.yaml
# Ignore editor backup files
*~
# Ignore ./log directory and *.log files
logs
*.log
# Ignore backup files, e.g. created by the script that eases the local chart development
*.bak

View File

@@ -4,7 +4,7 @@
---
include:
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
ref: "v2.3.2"
ref: "v2.3.3"
file:
- "ci/common/automr.yml"
- "ci/common/lint.yml"
@@ -15,12 +15,16 @@ include:
ref: "main"
- local: "/.gitlab/lint/lint-opendesk.yml"
rules:
- if: "$JOB_OPENDESK_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event'"
- if: >
$JOB_OPENDESK_LINTER_ENABLED == 'false' ||
$CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|trigger|api'
when: "never"
- when: "always"
- local: "/.gitlab/lint/lint-kyverno.yml"
rules:
- if: "$JOB_KYVERNO_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|triggers'"
- if: >
$JOB_OPENDESK_LINTER_ENABLED == 'false' ||
$CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|trigger|api'
when: "never"
- when: "always"
@@ -32,9 +36,11 @@ stages:
- "env-cleanup"
- "env"
- "pre-services-deploy"
- "migrations-pre"
- "basic-services-deploy"
- "component-deploy-stage-1"
- "component-deploy-stage-2"
- "migrations-post"
- "lint"
- "tests"
- "env-stop"
@@ -73,6 +79,12 @@ variables:
options:
- "yes"
- "no"
DEPLOY_MIGRATIONS:
description: "Deploy K8s job for migrations (pre & post)."
value: "no"
options:
- "yes"
- "no"
DEPLOY_SERVICES:
description: "Enable Service deployment."
value: "no"
@@ -192,7 +204,7 @@ env-cleanup:
needs: []
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
$ENV_STOP_BEFORE != "no"
when: "on_success"
@@ -204,6 +216,7 @@ env-cleanup:
done
kubectl delete pvc --all --namespace ${NAMESPACE};
kubectl delete jobs --all --namespace ${NAMESPACE};
kubectl delete configmaps --all --namespace ${NAMESPACE};
else
helmfile destroy --namespace ${NAMESPACE};
fi
@@ -217,7 +230,7 @@ env-start:
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/
when: "on_success"
script:
@@ -238,7 +251,7 @@ policies-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_SERVICES != "no")
when: "on_success"
@@ -246,12 +259,36 @@ policies-deploy:
COMPONENT: "services"
ADDITIONAL_ARGS: "-l name=opendesk-otterize"
migrations-pre:
stage: "migrations-pre"
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_MIGRATIONS != "no")
when: "on_success"
variables:
COMPONENT: "migrations-pre"
migrations-post:
stage: "migrations-post"
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_MIGRATIONS != "no")
when: "on_success"
variables:
COMPONENT: "migrations-post"
services-deploy:
stage: "basic-services-deploy"
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_SERVICES != "no")
when: "on_success"
@@ -263,7 +300,7 @@ provisioning-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_UMS != "no" || $DEPLOY_PROVISIONING != "no")
when: "on_success"
@@ -275,7 +312,7 @@ ums-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_UMS != "no")
when: "on_success"
@@ -288,7 +325,7 @@ ox-deploy:
timeout: "30m"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_OX != "no")
when: "on_success"
@@ -300,7 +337,7 @@ ics-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_ICS != "no")
when: "on_success"
@@ -312,7 +349,7 @@ xwiki-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_XWIKI != "no")
when: "on_success"
@@ -324,7 +361,7 @@ collabora-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no" || $DEPLOY_COLLABORA != "no")
when: "on_success"
@@ -336,7 +373,7 @@ cryptpad-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no" || $DEPLOY_CRYPTPAD != "no")
when: "on_success"
@@ -348,7 +385,7 @@ nextcloud-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_NEXTCLOUD != "no")
when: "on_success"
@@ -360,7 +397,7 @@ openproject-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_OPENPROJECT != "no")
when: "on_success"
@@ -372,7 +409,7 @@ openproject-bootstrap-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || ($DEPLOY_OPENPROJECT != "no" && $DEPLOY_NEXTCLOUD != "no"))
when: "on_success"
@@ -384,7 +421,7 @@ jitsi-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_JITSI != "no")
when: "on_success"
@@ -396,7 +433,7 @@ element-deploy:
extends: ".deploy-common"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" &&
$NAMESPACE =~ /.+/ &&
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_ELEMENT != "no")
when: "on_success"
@@ -412,7 +449,7 @@ env-stop:
needs: []
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" && $NAMESPACE =~ /.+/
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" && $NAMESPACE =~ /.+/
when: "manual"
script:
- "echo 'We do not stop the env (delete the namespace) at the moment in this stage, as deleting a branches also
@@ -442,7 +479,7 @@ run-tests:
stage: "tests"
rules:
- if: >
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" && $NAMESPACE =~ /.+/ && $RUN_TESTS == "yes"
$CI_PIPELINE_SOURCE =~ "web|schedules|trigger|api" && $NAMESPACE =~ /.+/ && $RUN_TESTS == "yes"
when: "on_success"
script:
- *ums-default-password
@@ -561,14 +598,14 @@ conventional-commits-linter:
common-yaml-linter:
rules:
- if: "$JOB_COMMON_YAML_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|triggers|web|merge_request_event'"
- if: "$JOB_COMMON_YAML_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|web|merge_request_event'"
when: "never"
- when: "always"
reuse-linter:
allow_failure: false
rules:
- if: "$JOB_REUSE_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|triggers|web|merge_request_event'"
- if: "$JOB_REUSE_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|web|merge_request_event'"
when: "never"
- when: "always"

View File

@@ -2,10 +2,10 @@
# SPDX-License-Identifier: Apache-2.0
---
variables:
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.3\
@sha256:4630299fddf4248af1ad04528f0435d78f5b2694a154c99fe72b960260a7be61"
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.4\
@sha256:386e84e2c85c33537479e4bb1e1fe744c9cce5e87bcb9a3a384dcdc1727c19c0"
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.4\
@sha256:4120fe717071876f4c9ff128f26019d089fda158a4fb1912911e09af2fd3875f"
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.5\
@sha256:60870adb64b0503d4a6efd16cef4e074b91a4ca52b48811cfcea057bcccd07e4"
.common:
cache: {}

View File

@@ -21,6 +21,8 @@ repositories:
# renovate setup when looking into your feature branch or when your default branch is
# not the one you want to check on.
baseBranches: [ "develop" ]
# Set a limit for the maximum number of parallel MRs (default 10)
prConcurrentLimit: 50
# Prefix to use for all branch names created by renovate bot (default: "renovate/")
branchPrefix: "renovate/"
# Lowercase merge request and commit titles ("never" = leave titles untouched )

View File

@@ -1,7 +1,7 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: openDesk
Upstream-Contact: <git+bmi-souveraener-arbeitsplatz-cla-1339-29pr0g9pj4or9yi6wfly6pbhg-issue@opencode.de>
Source: https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/deployment/sovereign-workplace
Upstream-Name: openDesk - der Souveräne Arbeitsplatz
Upstream-Contact: <opendesk@zendis.de>
Source: https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk
Files: helmfile/environments/default/theme/*
Copyright: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
@@ -10,3 +10,7 @@ License: Apache-2.0
Files: helmfile/files/gpg-pubkeys/*
Copyright: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
License: CC0-1.0
Files: cspell.json
Copyright: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
License: Apache-2.0

View File

@@ -1,3 +1,81 @@
## [0.8.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.8.0...v0.8.1) (2024-07-01)
### Bug Fixes
* **collabora:** Bump image to 24.04.4.1.1. ([368fe13](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/368fe13ddb080f0c8f42cbd3612a29f818308708))
* **collabora:** Bump image to 24.04.4.2.1. ([01767d3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/01767d38061259853e4bd8b2eba31d3b04c4e672))
* **docs:** Add Ports section to getting started. ([c07b25c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c07b25c4b9a702e214373fe08d95827286ebd866))
* **docs:** Correction regarding the currently supported ingress controller. ([8514908](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/85149086ae70cb85a1718715747985a3da2a7b64))
* **docs:** Update regarding the currently supported ingress controller. ([064a5ad](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/064a5ad246ea7217c2fb107787228d7aca9b5028))
* **element:** Provide the internal cluster domain to `synapse-web`. ([a8692d5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a8692d5506dc65895a562423d8ddb7da9078fc3a))
* **helmfile:** Add script to ease local development of platform charts. ([d8f3e05](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d8f3e05e584116f6196d43e0ea9bb8946ab2e5ab))
* **helmfile:** Enable SMTP for XWiki and Element/Synapse; Streamline mail sender addresses within platform based on `<localpart>@<component>.<domain>` and allow configuration of `<localpart>`. ([01c5e6b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/01c5e6b359dd5eb42c98e818da301871bea79264))
* **helmfile:** Include all `.yaml.gotmpl` files for the envs in `environments.yaml`. ([e523434](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e52343440d81c0596177399058b4711cc0d5da67))
* **helmfile:** Streamline `functional.yaml`. *Upgrade notice:* If you set a non default value for `.Values.portal.enableDeploymentInformation` please change it to `.Values.admin.portal.deploymentInformation.enabled` with this version. ([e89b16a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e89b16a747f95be7661b1fd4f5c90acce638542e))
* **jitsi:** Update PatchJVB bitnami/kubectl image to 1.30.2. ([6ef3641](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6ef3641d82d88d6fed80652b239bc63115abbf2d))
* **nubus:** Enable Keycloak's user account console. ([c03e4a5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c03e4a534090dde46363a7cfab718bb307e22621))
* **nubus:** Remove doublette ingress annotations. ([890b36e](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/890b36ecbb8c9311b5048d8d6d50ee5acf00ea61))
* **open-xchange:** Fixing YAML indentation of updater resources ([0ce346b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0ce346b162feb0bc6fee7f18caee84917117abe1))
* **openproject:** Bump image to 14.2.0. ([1ad35f1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1ad35f1e12e236607e3830da6d08010eb465b501))
* **openproject:** Switch DBInit container image to Alpine based version to reduce footprint. ([c90f7c1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c90f7c1742d415d5a787ff5832959e2974b77b83))
* **openproject:** Update PostgreSQL image for DB init to 16.3. ([45e5699](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/45e569955d09c584490e6826651f7564567c1f9b))
* **services:** Allow Postfix "relayHost" to be empty. ([7268f60](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7268f607a5839c6e940ce07fa15c1ffec9610d19))
# [0.8.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.1...v0.8.0) (2024-06-10)
### Bug Fixes
* **ci:** Allow CI to be triggered by API authorized personal access token. ([b95fd11](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b95fd1152a2122de0fbc2b31cacb8a1b1c5917b7))
* **collabora:** Semi-disable update checker. ([d7a127f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d7a127fe269ddf0347adce692f138eb1a6359508))
* **collabora:** Update to 24.04.3.1.1. ([5869316](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/58693162e6c2f72ba6254dd0168dea48539b7d43))
* **docs:** Spell check and streamline. ([4d99bf3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4d99bf3bf085a6f8d4dbdef442fa969150dfff4d))
* **element:** Bump container images (widgets, community artifacts). ([f856205](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f856205afce914ea62a9e309b9400714f4c4d040))
* **element:** Bump to v1.11.67. ([a4ff89b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a4ff89b213afef9fd35dd6ab3c54bf0e8e8b20c9))
* **element:** Update Synapse. ([9fa8ace](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9fa8ace80f9af5d5c96073fe836cf606956c4f43))
* **helmfile:** Remove unused ox-provisioning hostname. ([e31a0a2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e31a0a258e274274e20aab41c4c757d891bff639))
* **jitsi:** Update jitsi-keycloak-adapter image to Docker tag v20240314. ([6202bc4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6202bc4719e96c537c67a65a9419aa183edc6d55))
* **nubus:** Change to new Univention upstream registry. ([d7fbc57](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d7fbc572ca5b3ee4eca31bf50f4e00f257a72b83))
* **nubus:** Disable UDM REST API routing by default and always disable UMC local login. ([e1e8a7f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e1e8a7f121c41c3f23db4541211d255dfb06591a))
* **nubus:** Guardian version bump and refactoring. ([2f88752](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2f88752ae6a9df7ff3cb9a3c2d158589f7defb33))
* **nubus:** Re-add selfservice-listener image configuration. ([af711b0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/af711b0edb05bb96fe2ad7e51d5862ed97043178))
* **open-xchange:** Set Nubus LDAP attribute to render manager_name in address book. See https://forge.univention.org/bugzilla/show_bug.cgi?id=53741 for reference. ([4f92001](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4f92001d688416133fcfd3415afb5f4bbceb7356))
* **openproject:** Bump library/postgres image to v16. ([742c293](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/742c293243e5c8165e065b5b53af7bac6647fad1))
* **openproject:** Bump to 14.1.0, set default timezone on deployment to `Europe/Berlin` and raise default memory limit to 2Gi. ([6e49721](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6e4972107e8eac498ace98217488f4e07fabb6b1))
* **openproject:** Update Helm chart to v5.1.4. ([75cd077](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/75cd077351c0a892afcd57c835b77206ea90da66))
* **openproject:** Update to 14.1.1 and bump PostgreSQL 13 image for InitDB. ([bd2d7cf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bd2d7cf748f8cb6b1693056c4a5fc4a60b598acd))
* **services:** Update `opendesk-home` to v1.0.2 to fix issue with Element `.well-known` ingress collision. ([b0eb28b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b0eb28bc3f577a46021444832e0cc132f6e4b0e1))
* **univention-management-stack:** Add functional switch to disable deployment information. ([a31c5f5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a31c5f59a68e90ba9e80350ebd5827e7b05d4ef5))
### Features
* **element:** Enable Matrix federation via https. ([ecb566f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ecb566f61e9818ff204501730576af360e4e90d0))
* **helmfile:** Add support for Ingress parameter configuration (proxy-body-size, proxy-read-timeout, proxy-send-timeout). ([dc39b94](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/dc39b94e8824683e54e0f2902e8b4bfe1c43442a))
* **helmfile:** Create child helmfile for GitOps approach. ([a899699](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a899699e21b1d8da9886a93a2e74442799e23e96))
* **nubus:** Cleanup Keycloak values. ([f3d8cf0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f3d8cf08efbba1b1dd5969821c3af7603202e67f))
## [0.7.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.7.0...v0.7.1) (2024-05-21)
### Bug Fixes
* **ci:** Add Renovate dependency update automation. ([650c41c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/650c41c3f04b6c7c04a1d5eca76aba7f75e14b96))
* **cryptpad:** Update Helm chart v0.0.19 and include CryptPad app in Helmfile deployment. ([931ed95](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/931ed95ce16d5be6bde7ea1c1140406f00fef060))
* **docu:** Add IdP federation documentation. ([7167055](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7167055303bdbe9ad677b16635089c0328a849ff))
* **docu:** Rename SYNAPSE_DOMAIN to MATRIX_DOMAIN. If you use SYNAPSE_DOMAIN in your deployment, ensure you set the MATRIX_DOMAIN accordingly before upgrading. ([96baa6c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/96baa6cc15bac8d3ce315132699e301093d5d6d8))
* **element:** Provide certificate for alternative Synapse domain. ([88ac239](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/88ac2396e6888e0f28a80ceebaa0f51d2ba436ee))
* **helmfile:** Use Open CoDE as default registry for Univention helm chart ([#71](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/71)). ([4e56ce4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4e56ce4073105003dffbcaa91af473c1f707cd13))
* **jitsi:** Bump images to stable-9457-2. ([1d47fa6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1d47fa681adf29e4b4ca432a9d5390972098d2e0))
* **jitsi:** Raise Jibri memory limits to fullfil Jibri's 2Gi /dev/shm requirement and update Helm chart; To update an existing installation you need to manually delete the `jitsi-prosody` stateful set before the update e.g. `kubectl -n <your_namespace> delete --cascade=orphan statefulsets jitsi-prosody`. Ensure you use the `--cascade=orphan` part, otherwise you have to remove and reinstall the complete deployment. ([6570c13](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6570c13f3a3ad5864de5afe6afb4c60483cd489f))
* **nextcloud:** Bump to 28.0.5 incl. latest app versions. ([04d9372](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/04d9372cfccc80145962faf4c2387949a43c8f2c))
* **nubus:** Bump Keycloak to 24.0.3. ([923533d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/923533d7b7527de728f73813397ed0c2a0427da5))
* **nubus:** Enable 2FA for group "Domain Admins" by default. ([1179669](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/11796699bb551f8b83badd13204654c880b65efe))
* **nubus:** Update keycloak-bootstap and keycloak-extensions. ([1c6666f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1c6666fe45fb7acd83c26b5f2b808fce3fb9e20b))
* **open-xchange:** Support change of username. ([b2cfa8b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b2cfa8b9965ce50f593295c80c363bad7ef0454e))
* **openproject:** Bump version to 14.0.1, update Helm chart to 4.5.0. ([e085211](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e0852119e8e248431f51a86e3bd5177cef0b1e93))
# [0.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.6.0...v0.7.0) (2024-05-06)

View File

@@ -28,20 +28,20 @@ openDesk is a Kubernetes based, open-source and cloud-native digital workplace s
openDesk currently features the following functional main components:
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
| -------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.59](https://github.com/element-hq/element-desktop/releases/tag/v1.11.59) | [For the most recent release](https://element.io/user-guide) |
| Diagram editor | Cryptpad ft. diagrams.net | [5.6.0](https://github.com/cryptpad/cryptpad/releases/tag/5.6.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
| File management | Nextcloud | [28.0.5](https://nextcloud.com/de/changelog/#28-0-5) | [Nextcloud 28](https://docs.nextcloud.com/) |
| Groupware | OX App Suite | [8.23](https://documentation.open-xchange.com/appsuite/releases/8.23/) | Online documentation available from within the installed application; [Additional resources](https://www.open-xchange.com/resources/oxpedia) |
| Knowledge management | XWiki | [15.10.8](https://www.xwiki.org/xwiki/bin/view/Blog/XWiki15108Released) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
| Portal & IAM | Nubus | Product Preview[^1] | [Univention's documentation website](https://docs.software-univention.de/n/en/index.html) |
| Project management | OpenProject | [14.0.1](https://www.openproject.org/docs/release-notes/14-0-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
| Videoconferencing | Jitsi | [2.0.9457](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9457) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
| Weboffice | Collabora | [23.05.10.1.1](https://www.collaboraoffice.com/collabora-online-23-05-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
| -------------------- | --------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.67](https://github.com/element-hq/element-desktop/releases/tag/v1.11.67) | [For the most recent release](https://element.io/user-guide) |
| Diagram editor | CryptPad ft. diagrams.net | [5.6.0](https://github.com/cryptpad/cryptpad/releases/tag/5.6.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
| File management | Nextcloud | [28.0.5](https://nextcloud.com/de/changelog/#28-0-5) | [Nextcloud 28](https://docs.nextcloud.com/) |
| Groupware | OX App Suite | [8.23](https://documentation.open-xchange.com/appsuite/releases/8.23/) | Online documentation available from within the installed application; [Additional resources](https://www.open-xchange.com/resources/oxpedia) |
| Knowledge management | XWiki | [16.4.1](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.4.1/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
| Portal & IAM | Nubus | Product Preview[^1] | [Univention's documentation website](https://docs.software-univention.de/n/en/index.html) |
| Project management | OpenProject | [14.2.0](https://www.openproject.org/docs/release-notes/14-2-0/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
| Videoconferencing | Jitsi | [2.0.9457](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9457) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
| Weboffice | Collabora | [24.04.5.2.1](https://www.collaboraoffice.com/code-24-04-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
While not all components are perfectly shaped for the execution inside containers, one of the project's objectives is to
align the applications with best practises regarding container design and operations.
align the applications with best practices regarding container design and operations.
This documentation aims to give you all that is needed to set up your own instance of the openDesk.
@@ -91,7 +91,7 @@ Gitlab provides an
[overview on the releases](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/releases)
of this project.
Please find a list of the artefacts related to the release either in the source code archive attached to the release or
Please find a list of the artifacts related to the release either in the source code archive attached to the release or
in the files from the release's git-tag:
- `./helmfile/environments/default/images.yaml`
- `./helmfile/environments/default/charts.yaml`
@@ -123,8 +123,7 @@ Copyright (C) 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwal
# Footnotes
[^1]: Nubus is the Cloud Portal and IAM from Univention.
It is currently integrated as a product preview within openDesk therefore,
not all resources like documentation and structured release notes are available,
while the
It is currently integrated as a product preview within openDesk therefore, not all resources like documentation
and structured release notes are available, while the
[source code can already be found on Open CoDE](https://gitlab.opencode.de/bmi/opendesk/component-code/crossfunctional/univention).
Please find updates regarding the Nubus at https://nubus.io.

80
cspell.json Normal file
View File

@@ -0,0 +1,80 @@
{
"version": "0.2",
"ignorePaths": [],
"dictionaryDefinitions": [],
"dictionaries": [],
"words": [
"openDesk",
"AppSuite",
"Collabora",
"Digitale",
"Jitsi",
"Nextcloud",
"Öffentlichen",
"OpenProject",
"Souveränität",
"Verwaltung",
"Zentrum",
"Keycloak",
"NATS",
"slapadd",
"slapcat",
"RDBMS",
"Velero",
"Univention",
"OIDC",
"kcadmin",
"DMARC",
"homeserver",
"Bundesministerium",
"Innern",
"Heimat",
"Projektgruppe",
"Aufbau",
"Filepicker",
"Weboffice",
"Xchange",
"opencode",
"seccomp",
"psql",
"databasename",
"helmfile",
"gotmpl",
"containerd",
"letsencrypt",
"CNCF",
"kubespray",
"ICAP",
"Ceph",
"Coturn",
"Minio",
"Kyverno",
"Otterize",
"IBAC",
"pubkeys",
"Grundschutz",
"Kubescape",
"Gitflow",
"hadolint",
"explorative",
"Nordeck",
"Nubus",
"Souveräne",
"Arbeitsplatz",
"commandline",
"helmfiles",
"SMTPS",
"IMAPS",
"xwiki",
"cryptpad",
"clamav",
"templating",
"localpart",
"Addressbooks",
"filestore",
"trashbin",
"bootstrap"
],
"ignoreWords": [],
"import": []
}

36
dev/README.md Normal file
View File

@@ -0,0 +1,36 @@
<!--
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
-->
<h1>Tools for local development</h1>
* [charts-local.py](#charts-localpy)
* [Commandline parameter](#commandline-parameter)
* [`--branch`](#--branch)
* [`--revert`](#--revert)
# charts-local.py
This script helps you on cloning the platform development Helm charts and referencing them directly in the openDesk
Helmfile deployment for comfortable local test and development. The charts will be cloned into a directory
parallel created next to the `opendesk` repo containing this documentation and the `charts-local.py` script.
The name of the chart directory is derived from the branch name you are working with in this `opendesk` repo.
The script will create `.bak` copies of the helmfiles that have been touched.
Run the script with `-h` to get information about the script's parameter on commandline.
## Commandline parameter
### `--branch`
Optional parameter: Defines a branch for the `opendesk` repo to work with. The script will create the branch if it
does not exist yet. Otherwise it will switch to defined branch.
If parameter is omitted the current branch of the `opendesk` repo will be used.
### `--revert`
Reverts the changes in the helmfiles pointing to the local Helm charts by copying the backup files created by the
scripts itself back to their original location.

170
dev/charts-local.py Executable file
View File

@@ -0,0 +1,170 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
import os.path
import logging
import yaml
import sys
import shutil
import re
import configargparse
from pathlib import Path
from git import Repo
p = configargparse.ArgParser()
p.add('--branch', env_var='CHART_DEV_BRANCH', help='The branch you want to work with. Will be created by the script if it does not exist yet.')
p.add('--git_hostname', env_var='GIT_HOSTNAME', default='git@gitlab.opencode.de', help='Set the hostname for the chart git checkouts.')
p.add('--revert', default=False, action='store_true', help='Set this parameter if you want to revert the referencing of the local helm chart checkout paths in the helmfiles.')
p.add('--loglevel', env_var='LOGLEVEL', default='DEBUG', help='Set the loglevel: DEBUG, INFO, WARNING, ERROR, CRITICAL-')
options = p.parse_args()
script_path = os.path.dirname(os.path.realpath(__file__))
# some static definitions
log_path = script_path+'/../logs'
charts_yaml = script_path+'/../helmfile/environments/default/charts.yaml'
base_repo_path = script_path+'/..'
base_helmfile = base_repo_path+'/helmfile_generic.yaml'
helmfile_backup_extension = '.bak'
Path(log_path).mkdir(parents=True, exist_ok=True)
logFormatter = logging.Formatter("%(asctime)s %(levelname)-5.5s %(message)s")
rootLogger = logging.getLogger()
rootLogger.setLevel(options.loglevel)
fileHandler = logging.FileHandler("{0}/{1}.log".format(log_path, os.path.basename(__file__)))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)
logging.debug(f"Working with relative paths from script location: {script_path}")
logging.debug(f"Log directory: {log_path}")
logging.debug(f"charts.yaml : {charts_yaml}")
def create_or_switch_branch_base_repo():
base_repo = Repo(path=base_repo_path)
current_branch = base_repo.active_branch.name
if not options.branch:
branch = current_branch
logging.debug(f"No branch specified on commandline, working with current branch: {current_branch}")
else:
branch = options.branch
if branch in base_repo.branches:
if branch != current_branch:
logging.debug(f"Selected {branch} already exists, switching.")
# ToDo: Graceful handle: "Please commit your changes or stash them before you switch branches."
base_repo.git.switch(branch)
else:
logging.debug(f"Already on selected brach {branch}")
else:
logging.debug(f"Creating branch {branch} and switching")
base_repo.git.branch(branch)
base_repo.git.switch(branch)
return branch
def clone_charts_locally(branch, charts):
charts_clone_path = script_path+'/../../'+branch.replace('/', '_')
charts_dict = {}
doublette_dict = {}
if os.path.isdir(charts_clone_path):
logging.warning(f"Path {charts_clone_path} already exists, will not clone any charts.")
else:
logging.debug(f"creating directory {charts_clone_path} to clone charts into")
Path(charts_clone_path).mkdir(parents=True, exist_ok=True)
for chart in charts['charts']:
if 'opendesk/components/platform-development/charts' in charts['charts'][chart]['repository']:
tag = charts['charts'][chart]['version']
logging.debug(f"Working on {chart} / tag {tag}")
repository = charts['charts'][chart]['repository']
git_url = options.git_hostname+':'+repository
chart_repo_path = charts_clone_path+'/'+charts['charts'][chart]['name']
if git_url in doublette_dict:
logging.debug(f"{chart} located at {git_url} is already checked out to {doublette_dict[git_url]}")
charts_dict[chart] = doublette_dict[git_url]
else:
if os.path.isdir(chart_repo_path):
logging.debug(f"Already exists {chart_repo_path} leaving it unmodified")
else:
logging.debug(f"Cloning into {chart_repo_path}")
Repo.clone_from(git_url, chart_repo_path)
chart_repo = Repo(path=chart_repo_path)
chart_repo.git.checkout('v'+charts['charts'][chart]['version'])
doublette_dict[git_url] = chart_repo_path
charts_dict[chart] = chart_repo_path
return charts_dict
def grep_yaml(file):
with open(file, 'r') as file:
content = ''
for line in file.readlines():
if not ': {{' in line and not '- {{' in line:
content += line
return yaml.safe_load(content)
def get_child_helmfiles():
child_helmfiles = []
root_helmfile = grep_yaml(base_helmfile)
for entry in root_helmfile['helmfiles']:
child_helmfiles.append(base_repo_path+'/'+entry['path'])
return child_helmfiles
def process_the_helmfiles(charts_dict, charts):
chart_def_prefix = ' chart: "'
child_helmfiles = get_child_helmfiles()
for child_helmfile in child_helmfiles:
child_helmfile_updated = False
output = []
with open(child_helmfile, 'r') as file:
for line in file:
if chart_def_prefix in line:
for chart_ident in charts_dict:
if '.Values.charts.'+chart_ident+'.name' in line:
logging.debug(f"found match with {chart_ident} in {line.strip()}")
line = chart_def_prefix+charts_dict[chart_ident]+'/charts/'+charts['charts'][chart_ident]['name']+'" # replaced by local-dev script'+"\n"
child_helmfile_updated = True
break
output.append(line)
if child_helmfile_updated:
child_helmfile_backup = child_helmfile+helmfile_backup_extension
if os.path.isfile(child_helmfile_backup):
logging.debug("backup {child_helmfile_backup} already exists, will not create a new one.")
else:
logging.debug(f"creating backup {child_helmfile_backup}.")
shutil.copy2(child_helmfile, child_helmfile_backup)
logging.debug(f"Updating {child_helmfile}")
with open(child_helmfile, 'w') as file:
file.writelines(output)
def revert_the_helmfiles():
child_helmfiles = get_child_helmfiles()
for child_helmfile in child_helmfiles:
child_helmfile_backup = child_helmfile+helmfile_backup_extension
if os.path.isfile(child_helmfile_backup):
logging.debug(f"Reverting {child_helmfile} from backup {child_helmfile_backup}")
os.rename(child_helmfile_backup, child_helmfile)
else:
logging.debug(f"Did not found the backup file {child_helmfile_backup}")
##
## Main program
##
if options.revert:
revert_the_helmfiles()
else:
branch = create_or_switch_branch_base_repo()
with open(charts_yaml, 'r') as file:
charts = yaml.safe_load(file)
charts_dict = clone_charts_locally(branch, charts)
process_the_helmfiles(charts_dict, charts)

6
dev/requirements.txt Normal file
View File

@@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
configargparse
pyyaml
GitPython

View File

@@ -10,15 +10,13 @@ This section covers the internal system requirements as well as external service
<!-- TOC -->
* [Overview](#overview)
* [Component integration](#component-integration)
* [Intercom Service (ICS)](#intercom-service-ics)
* [Intercom Service / Silent Login](#intercom-service--silent-login)
* [Filepicker](#filepicker)
* [Central Navigation](#central-navigation)
* [(Read \& write) Central contacts](#read--write-central-contacts)
* [OpenProject Filestore](#openproject-filestore)
* [Central Contacts](#central-contacts)
* [File Store (OpenProject -\> Nextcloud)](#file-store-openproject---nextcloud)
* [Identity data flows](#identity-data-flows)
* [Provisioning](#provisioning)
* [Component specific documentation](#component-specific-documentation)
* [Links to component docs](#links-to-component-docs)
<!-- TOC -->
# Overview
@@ -50,7 +48,7 @@ they need to be replaced in production deployments.
| PostgreSQL | Database | Eval |
| Redis | Cache Database | Eval |
| Univention Management Stack | Identity Management & Portal | Functional |
| XWiki | Knowledgebase | Functional |
| XWiki | Knowledge Management | Functional |
# Component integration
@@ -58,58 +56,91 @@ Some use cases require inter component integration.
```mermaid
flowchart TD
OXAppSuiteFrontend-->|SilentLogin, Filepicker, CentralNavigation|IntercomService
Element-->|CentralNavigation|IntercomService
IntercomService-->|SilentLogin, TokenExchange|IdP
IntercomService-->|Filepicker|Nextcloud
IntercomService-->|CentralNavigation|Portal
OXAppSuiteBackend-->|Filepicker|Nextcloud
Nextcloud-->|CentralNavigation|Portal
OpenProject-->|CentralNavigation|Portal
OpenProject-->|Filestore|Nextcloud
XWiki-->|CentralNavigation|Portal
Nextcloud-->|CentralContacts|OXAppSuiteBackend
OXAppSuiteFrontend-->|Filepicker|OXAppSuiteBackend
OX-AppSuite_Frontend-->|Silent Login, Filepicker, Central Navigation|Intercom_Service
Element-->|Silent Login, Central Navigation|Intercom_Service
Intercom_Service-->|Silent Login, Token Exchange|IdP
Intercom_Service-->|Filepicker|Nextcloud
Intercom_Service-->|Central Navigation|Portal
OX-AppSuite_Backend-->|Filepicker|Nextcloud
Nextcloud-->|Central Navigation|Portal
OpenProject-->|Central Navigation|Portal
OpenProject-->|File Store|Nextcloud
XWiki-->|Central Navigation|Portal
Nextcloud-->|Central Contacts|OX-AppSuite_Backend
OX-AppSuite_Frontend-->|Filepicker|OX-AppSuite_Backend
```
## Intercom Service (ICS)
Most details can be found in the upstream documentation that is linked in the respective sections.
The Univention Intercom Service's role is to enable cross-application integration based on browser interaction.
Handling authentication when the frontend of an application is using the API from another application is often a
## Intercom Service / Silent Login
The Intercom Service's role is to enable cross-application integration based on the user's browser interaction as handling
authentication when the frontend of an application has to call the API from another application is often a
challenge.
For more details on the ICS please refer to its own [doc](./components/intercom-service.md).
To establish a session with the Intercom Service, the application that wants to use the ICS must initiate a silent
login.
To establish a session with the Intercom Service an application can use the silent login feature within an iframe.
Currently only OX AppSuite is using the frontend-based integration, and therefore it is right now the only consumer of
the ICS API.
Currently only OX AppSuite and Element are using the frontend based integration.
**Links**
- [Intercom Service upstream documentation](https://docs.software-univention.de/intercom-service/latest/index.html).
## Filepicker
The Nextcloud filepicker which is integrated into the OX AppSuite allows you to add attachments or links to files from
and saving attachments to Nextcloud.
The Nextcloud filepicker is integrated into the OX AppSuite supporting the following use cases against the respective openDesk instance's Nextcloud:
- Attaching files from Nextcloud to emails.
- Adding links of Nextcloud files to emails.
- Saving attachments from emails into Nextcloud.
- Attaching files from Nextcloud to calendar entries.
The filepicker is using frontend and backend based integration.
Frontend-based integration means that OX AppSuite in the browser is communicating with ICS.
While using backend-based integration, OX AppSuite middleware is communicating with Nextcloud, which is especially used
when adding a file to an email or storing a file into Nextcloud.
The filepicker is using frontend and backend based integration:
- For frontend based integration the OX AppSuite frontend uses the Intercom Service.
- Backend based integration is coming from OX AppSuite middleware. The middleware is communicating directly with Nextcloud,
which is used when adding a file to an email or storing a file into Nextcloud, to avoid passing these files through the user's browser.
**Links**
- [OX AppSuite Nextcloud Integration upstream documentation](https://gitlab.open-xchange.com/extensions/nextcloud-integration/-/tree/main/documentation).
## Central Navigation
Central navigation is based on an API endpoint in the portal that provides the contents of the portal for a user to
allow components to render the menu showing all available SWP applications for the user.
Central navigation is based on an API endpoint in the Nubus portal that returns a JSON containing the contents of the portal for
a given user. The response from the API endpoint is used in the openDesk applications to render the central navigation.
## (Read & write) Central contacts
The API can be called by
- frontend services through the Intercom Service's `/navigation.json` endpoint or
- backend services directly at the portal's `/univention/portal/navigation.json` endpoint.
Open-Xchange App Suite is used to manage contacts within openDesk. There is an API in the AppSuite that is being used by
Nextcloud to lookup contacts as well as to create contacts. This is maybe done when a file is shared with a not yet
available personal contact.
The central navigation expects the API caller to present a shared secret for authentication and the username for whom the portal
contents should be returned for.
## OpenProject Filestore
A `curl` based request returning the navigation contents looks like this:
By default, Nextcloud is a configured option for storing attachments in OpenProject.
The Filestore can be enabled on a per-project level in OpenProject's project admin section.
```
curl 'https://portal.<DOMAIN>/univention/portal/navigation.json?base=https%3A//portal.<DOMAIN>&language=de-DE' -u "<USERNAME>:<SHARED_SECRET>"
```
## Central Contacts
OX App Suite is managing contacts in openDesk. Therefore Nextcloud's PHP backend is using the OX AppSuite's middleware Contacts API to
- create a new contact in the user's contacts folder when a file is shared with a yet unknown email address.
- retrieve contacts from the user's contacts folder to support search-as-you-type when starting to share a file.
**Links:**
- Currently used [OX Contacts API (deprecated)](https://documentation.open-xchange.com/components/middleware/http/8/index.html#!Contacts).
- New [OX Addressbooks API](https://documentation.open-xchange.com/components/middleware/http/8/index.html#!Addressbooks) the Central Contacts integration will switch to.
## File Store (OpenProject -> Nextcloud)
While OpenProject allows you to attach files to work packages directly, it is often preferred that the files are
stored within Nextcloud or to link an existing file from your openDesk Nextcloud to a work package.
Therefore openDesk pre-configures the trust between the openDesk instance's OpenProject and Nextcloud during the `openproject-boostrap` deployment step. As prerequisite for that openDesk's Nextcloud contains the `integration_openproject` app.
The file store still needs to be enabled on a per-project level in OpenProject's project admin section.
**Links:**
- [OpenProject's documentation on Nextcloud integration](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/)
- [OpenProject Integration Nextcloud app](https://apps.nextcloud.com/apps/integration_openproject)
# Identity data flows
@@ -157,27 +188,3 @@ deleting activities for the following objects to the OX AppSuite using the AppSu
- Groups
- Functional Mailboxes
- Resources
# Component specific documentation
We want to provide more information per component in separate, component-specific markdown file.
To establish a common view on the components, we are going to cover various aspects:
- **Component overview**: Shall provide a quick introduction including the components prerequisites and subcomponents (f.e. pods).
- **Resources**: Will contain a link to the component upstream documentation, the helm chart and image locations.
- **Operational Capabilities**
- **Install**: The components install within the SWP.
- **Restart**: Deleting and restarting pods works seamlessly.
- **Update**: Redeploying the component with a different configuration works as expected. The component makes use of the updates configuration afterwards.
- **Upgrade**: Component allows upgrading existing deployments with more current versions of itself.
- **Secrets**: The component uses K8s secrets.
- **Logging**: Only logging to STDOUT, no logs inside the container.
- **Monitoring**: Application provides based on kube-prometheus-stack CRD: ServiceMonitor and PrometheusRule. Optional: Grafana Dashboard.
- **Scale**: If supported (as we use community products) the component should be manually scalable. Optional: Autoscaling.
- **Network policies**: Deny by default, allow application related traffic.
- **Uninstall**: Documented and working complete uninstallation of the component.
- **Debugging**: Some helpful information when it comes to debugging a component, e.g. setting log level.
# Links to component docs
- [Intercom-Service](./components/intercom-service.md)

View File

@@ -1,43 +0,0 @@
<!--
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
-->
**Content / Quick navigation**
[[_TOC_]]
# Component overview
The Intercom Service (ICS) is used to address integrational use cases where the frontend of one application has to call APIs from another application.
# Resources
- External documentation: https://docs.software-univention.de/intercom-service/latest/index.html
- Helm chart: https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/components/charts/sovereign-workplace-intercom-service
- Image: not yet published on Open CoDE, image will be provided through external artifactory.
# Operational Capabilities
## Install
## Restart
## Update
## Upgrade
## Secrets
## Logging
## Monitoring
## Scale
## Network policies
## Uninstall
# Debugging
ICS does not have a debug level option yet. But please refer to the most current documentation of the component. You just want to look into the standard log output of the component.

View File

@@ -31,10 +31,10 @@ environments you may want to make use of them in a very thoughtful and selective
# Enable debugging
Set `debug.enable` to `true` in [`debug.yaml`](../helmfile/environments/default/debug.yaml) to set the
component's loglevel to debug and it get some features like:
component's log level to debug and it get some features like:
- The `/admin` console is routed for Keycloak.
- An ingress for `http://minio-console.<your_domain>` is configured.
and set the loglevel for components to "Debug".
and set the log level for components to "Debug".
**Note:** All containers should write their log output to STDOUT, if you find (valuable) logs inside a container, please let us know!
@@ -46,13 +46,13 @@ This can be a challenge the more security hardened container images are, because
Adding a container to a Pod can ease the pain.
Below you will find some wrap-up notes when it comes to debugging openDesk by adding debug containers. Of course there are a lot of more detailled resources out in the wild.
Below you will find some wrap-up notes when it comes to debugging openDesk by adding debug containers. Of course there are a lot of more detailed resources out in the wild.
## Adding a container to a pod/deployment - Dev/Test only
You can add a container by editing and updating an existing deployment, which is quite comforable with tools like [Lens](https://k8slens.dev/).
You can add a container by editing and updating an existing deployment, which is quite comfortable with tools like [Lens](https://k8slens.dev/).
- Select the container you want to make use of as debugging container, in the example below it's `registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0`.
- Select the container you want to make use of as debugging container, in the example below it's `registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:latest`.
- Ensure the `shareProcessNamespace` option is enabled for the Pod.
- Reference the selected container within the `containers` array of the deployment.
- In case you want to access another containers filesystem, ensure the user/group settings of both containers match.
@@ -64,7 +64,7 @@ The following example can e.g. be used to debug the `openDesk-Nextcloud-PHP` con
shareProcessNamespace: true
containers:
- name: debugging
image: registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
image: registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:latest
command: ["/bin/bash", "-c", "while true; do echo 'This is a temporary container for debugging'; sleep 5 ; done"]
securityContext:
capabilities:
@@ -92,8 +92,8 @@ Sometimes you do not want to add a container permanently to your existing deploy
For the commands further down this section we set some environment variables first:
- `NAMESPACE`: The namespace the Pod you want to inspects is running in.
- `DEPLOYMENT_NAME`: The name of the deployment responsible for spawning the Pod you want to inspect within the prementioned namespace.
- `POD_NAME`: The name of the Pod you want to inspect within the prementioned namespace.
- `DEPLOYMENT_NAME`: The name of the deployment responsible for spawning the Pod you want to inspect within the pre-mentioned namespace.
- `POD_NAME`: The name of the Pod you want to inspect within the pre-mentioned namespace.
- `EPH_CONTAINER_NAME`: Chose the name for the container, "debugging" seem obvious.
- `DEBUG_IMAGE`: The image you want to make use of for debugging purposes.
@@ -101,9 +101,9 @@ e.g.
```
export EPH_CONTAINER_NAME=debugging
export NAMESPACE=my_testdeployment
export NAMESPACE=my_test_deployment
export DEPLOYMENT_NAME=opendesk-nextcloud-php
export POD_NAME=opendesk-nextcloud-php-6686d47cfb-7vtmf
export POD_NAME=opendesk-nextcloud-php-6686d47cfb-7642f
export DEBUG_IMAGE=registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
```

View File

@@ -11,11 +11,12 @@ But contributions will be possible soon once the CLA process is sorted out.
* [Overview](#overview)
* [Default branch, `develop` and other branches](#default-branch-develop-and-other-branches)
* [External artefacts - `charts.yaml` and `images.yaml`](#external-artefacts---chartsyaml-and-imagesyaml)
* [External artifacts - `charts.yaml` and `images.yaml`](#external-artifacts---chartsyaml-and-imagesyaml)
* [Linting](#linting)
* [Disable linting selectively](#disable-linting-selectively)
* [Renovate](#renovate)
* [Mirroring](#mirroring)
* [Get new artefacts mirrored](#get-new-artefacts-mirrored)
* [Get new artifacts mirrored](#get-new-artifacts-mirrored)
* [Creating new charts / images](#creating-new-charts--images)
# Overview
@@ -26,21 +27,31 @@ the development of the deployment automation of openDesk.
```mermaid
flowchart TD
A[./helmfile.yaml]-->B[./helmfile/apps/*all_configured_apps*/helmfile.yaml\nReferences the relevant app Helm\ncharts using details from 'charts.yaml']
J[helmfile.yaml\nor a helmfile outside of this repository]-->A
J-->K[./helmfile/environemnts/*your_environment*/values.yaml.gotmpl\nor any an environment values file]
A[./helmfile_generic.yaml]-->B[./helmfile/apps/*all_configured_apps*/helmfile.yaml\nReferences the relevant app Helm\ncharts using details from 'charts.yaml']
B-->C[./values-*all_configured_components*.yaml.gotmpl\nValues to template the charts\nwith references to the `images.yaml`]
A-->D[./helmfile/environments/default/*\nwith just some examples below]
D-->F[charts.yaml]
D-->G[images.yaml]
D-->H[global.*]
D-->I[secrets.yaml\nreplicas.yaml\nresources.yaml\n...]
A-->|overwrite defaults with your\ndeployment/environment specific values|E[./helmfile/environments/*your_environment*/values.yaml.gotmpl]
A-->|overwrite defaults with your\ndeployment/environment specific values|E[./helmfile/environments/default/values.yaml.gotmpl]
```
The `helmfile.yaml` in the root folder is the basis for the whole deployment. It references the app specific `helmfile.yaml` files as well as some
global values files in `./environments/default`. It allows you to overwrite defaults by using one of the three predefined environments `dev`, `test`
and `prod`.
The `helmfile.yaml` file in the root folder serves as the foundation
for the entire deployment. It references the `helmfile_generic.yaml`
file, which includes app-specific `helmfile.yaml` files, as well as
global values files located in `./environments/default`.
Before you look into any app specifc configuration it is recommended to review the contents of `./environments/default` to get an understanding of what
`helmfile.yaml` also refers to three predefined environments: `dev`,
`test`, and `prod`.
The `helmfile_generic.yaml` file is designed to be referenced from
external repositories, where custom environments may be defined. An
example is demonstrated in the `helmfile.yaml` file.
Before you look into any app specific configuration it is recommended to review the contents of `./environments/default` to get an understanding of what
details are maintained in there, as they are usually referenced by the app configurations.
# Default branch, `develop` and other branches
@@ -54,17 +65,17 @@ for more details on naming conventions.
There is a CI bot that automatically creates a merge request once you initially pushed your branch to Open CoDE.
The merge request will of course target the `develop` branch, be in status `draft` and have you as assignee.
In case you do not plan to actually merge from the branch you have pushed, please close or delete the autocreated MR.
In case you do not plan to actually merge from the branch you have pushed, please close or delete the auto-created MR.
# External artefacts - `charts.yaml` and `images.yaml`
# External artifacts - `charts.yaml` and `images.yaml`
The `charts.yaml` and `images.yaml` are the central place to reference external artefacts that are used for the deployment.
The `charts.yaml` and `images.yaml` are the central place to reference external artifacts that are used for the deployment.
Beside the deployment automation itself some tools work with the contents of the files:
- **Linting**: Ensures consistency of the file contents for the other tools.
- **Renovate**: Automatically create MRs that update the components to their latest version.
- **Mirror**: Mirror artefacts to Open CoDE.
- **Mirror**: Mirror artifacts to Open CoDE.
Please find details on these tools below.
@@ -95,12 +106,22 @@ Example:
tag: "v1.91.2@sha256:1d19508db417bb2b911c8e086bd3dc3b719ee75c6f6194d58af59b4c32b11322"
```
### Disable linting selectively
If you follow the "push early, push often" paradigm to save your work to the central Git instance or you just fix a typo in the text
of an existing documentation you might want to avoid the CI with its linting to be executed, as it might not offer additional value.
GitLab offers two options to skip the CI on a commit/push:
- Add `[ci skip]` to your commit message ([details](https://docs.gitlab.com/ee/ci/pipelines/#skip-a-pipeline)).
**Note:** The string has to be removed before merging your feature branch into `develop`.
- Use the related git push option `git push -o ci.skip` ([details](https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd)).
## Renovate
Uses a regular expression to match the values of the following attributes:
- `# upstreamRegistry` *required*: Attribute's value must be prefixed with `https://` for Renovate.
- `# upstreamrepository` *required*
- `# upstreamRepository` *required*
- `tag` *required*
Checks for newer versions of the given artefact and creates a MR containing the newest version's tag (and digest).
@@ -111,19 +132,19 @@ Checks for newer versions of the given artefact and creates a MR containing the
**Note:** The mirror is scheduled to run every hour at 42 minutes past the hour.
openDesk strives to make all relevant artefacts available on Open CoDE so there is the mirroring process
configured to pull artefacts that do not originate from Open CoDE into projects called `*-Mirror` within the
openDesk strives to make all relevant artifacts available on Open CoDE so there is the mirroring process
configured to pull artifacts that do not originate from Open CoDE into projects called `*-Mirror` within the
[openDesk Components section](https://gitlab.opencode.de/bmi/opendesk/components).
The mirror script takes the information on what artefacts to mirror from the annotation inside the two yaml files:
The mirror script takes the information on what artifacts to mirror from the annotation inside the two yaml files:
- `# upstreamRegistry` *required*: To identify the source registry
- `# upstreamRepository` *required*: To identify the source repository
- `# upstreamMirrorTagFilterRegEx` *required*: If this annotation is set it activates the mirror for the component. Only tags are being mirrored that match the given regular expression. **Note:** You have to use single quotes for this attribute's value in case you use backslash leading regex notation like `\d`.
- `# upstreamMirrorStartFrom` *optional*: Array of numeric values in case you want to mirror only artefacts beginning with a specific version. You must use capturing groups
- `# upstreamMirrorStartFrom` *optional*: Array of numeric values in case you want to mirror only artifacts beginning with a specific version. You must use capturing groups
in `# upstreamMirrorTagFilterRegEx` to identify the single numeric elements of the version within the tag and use per capturing group (left to right) one numeric array
element here to define the version the mirror should start with.
### Get new artefacts mirrored
### Get new artifacts mirrored
If you want new images or charts to be mirrored that are not yet included in one of the yaml files there are two options:
@@ -134,7 +155,7 @@ You include them in your branch with all required annotations and either
# Creating new charts / images
When you create new Helm charts please check out the
[openDesk Best Practises](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-best-practises)
[openDesk Best Practices](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-best-practises)
for Helm charts.
You may also want to make use of our [standard CI](https://gitlab.opencode.de/bmi/opendesk/tooling/gitlab-config) to

View File

@@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0
# Overview
The follownig enhanced configuration use cases are described in separate documents.
The following enhanced configuration use cases are described in separate documents.
- [Separate mail & Matrix domain](enhanced-configuration/separate-mail-matrix-domain.md)
- [Federation with external identity provider](enhanced-configuration/idp-federation.md)

View File

@@ -39,7 +39,7 @@ We will provide additional documents regarding user provisioning in the future,
- If you need to create more than just a couple of test accounts you can use the [openDesk User Importer](https://gitlab.opencode.de/bmi/opendesk/tooling/user-import) that utilizes the UDM REST API for user account creation.
- Downsides: Managing groups and deleting accounts needs to be done manually.
- Automated Pre-provisioning:
- Pre-provisioning users and groups including de-provisioning (deleting) accounts is the best practise as it ensures that openDesk is in sync with your organization's IAM.
- Pre-provisioning users and groups including de-provisioning (deleting) accounts is the best practice as it ensures that openDesk is in sync with your organization's IAM.
- There are at least two ways of implementing the pre-provisioning:
- UDM REST API:
- Build a provisioning solution by yourself using the [UDM REST API](https://docs.software-univention.de/developer-reference/5.0/en/udm/rest-api.html).
@@ -90,7 +90,7 @@ For the following configuration steps login with user `kcadmin` and grab the pas
As we use the Keycloak of another openDesk instance to simulate your organization's IdP in this example, especially URL paths within the Keycloak might differ if you use different products.
Please let us know about your experiences or differences you came accross.
Please let us know about your experiences or differences you came across.
### Separate realm
@@ -146,12 +146,12 @@ The following configuration is taking place in the Keycloak realm `opendesk`.
- *Client ID*: Use the client ID you took form your organization's IdP config (`opendesk-federation-client` in this example)
- *Client Secret*: Use the secret you took form your organization's IdP config
- When completed with *Add* you get to the detailed IdP configured that also needs some updates (you may need to open the *Advanced* section to access some settings)
- *Backchannel logout*: `On`
- *Back-channel logout*: `On`
- *Disable user info*: `On`
- *First login flow override*: `auto-federate-flow`
- In case you want to forcefully redirect all users to your organizations IdP (disabling login with local openDesk accounts):
- *Authentication* > `2fa-browser`
- Click on the cogwheel next to the *Identitify Provider Redirector*
- Click on the cogwheel next to the *Identity Provider Re-director*
- *Alias*: `auto-federate-idp`
- *Default Identity Provider*: `auto-federate-idp`

View File

@@ -5,28 +5,59 @@ SPDX-License-Identifier: Apache-2.0
<h1>Matrix federation</h1>
<!-- TOC -->
* [Use case](#use-case)
* [Example configuration](#example-configuration)
* [DNS setup](#dns-setup)
* [Disable federation](#disable-federation)
* [Separate Matrix domain](#separate-matrix-domain)
<!-- TOC -->
# Use case
By default you only can chat with users that also have an account within your openDesk installation. The Element chat application and its server component Synapse are based on the Matrix protocol that supports federation with other Matrix servers to communicate with the users with accounts on these servers.
The Element chat application and its server component Synapse are based on the Matrix protocol,
that supports federation with other Matrix servers to communicate with the users with accounts on these servers.
By default, you can chat with users that have an account within your openDesk installation and federate with other
matrix-based servers.
Federation support can be disabled.
# Example configuration
The following values are used in this example documentation. Please ensure when you come across such a value even if it is part of a URL hostname or path that you adapt it where needed to your setup:
The following values are used in this example documentation.
Please ensure when you come across such a value,
even if it is part of a URL hostname or path, that you adapt it where needed to your setup:
- `opendesk.domain.tld`: the mandatory `DOMAIN` setting for your deployment resulting in `https://chat.opendesk.domain.tld` to access the Element chat.
- `my_organization.tld`: an optional alternative domain used for mail and/or Matrix. If not used it is also set to `opendesk.domain.tld`.
- `opendesk.domain.tld`: the mandatory `DOMAIN` setting for your deployment resulting in
`https://chat.opendesk.domain.tld` to access the Element chat.
- `my_organization.tld`: an optional alternative domain used for mail and/or Matrix.
If not used it is also set to `opendesk.domain.tld`.
## DNS setup
## Disable federation
If you want to federate with other Matrix instances, you need to have both SRV records:
The following setting can disable federation:
| Record name | Type | Value | Additional Information |
| ----------------------------------- | ---- | -------------------------------------- | ---------------------------------------------------------------------------------- |
| _matrix._tcp.my_organization.tld | SRV | `1 10 PORT matrix.opendesk.domain.tld` | `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service |
| matrix-fed._tcp.my_organization.tld | SRV | `1 10 PORT matrix.opendesk.domain.tld` | `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service |
```yaml
functional:
externalServices:
matrix:
federation:
enabled: false
```
*Note:* `matrix.opendesk.domain.tld` in the "Value" column can also be the IP address where synapse TLS port is listening to.
## Separate Matrix domain
If you want to federate with other Matrix instances and use a separate Matrix domain, you need to provide a JSON file on
the Matrix domain to use delegation.
This is not included inside openDesk.
Domain path: `https://my_organization.tld/.well-known/matrix/server`
Content:
```JSON
{
"m.server": "matrix-federation.opendesk.domain.tld:443"
}
```
More detailed information can be found in Matrix/Synapse documentation:
[Matrix Delegation](https://matrix-org.github.io/synapse/v1.98/delegate.html)

View File

@@ -9,7 +9,7 @@ This document will cover the additional configuration to use external services l
<!-- TOC -->
* [Database](#database)
* [Objectstore](#objectstore)
* [Object storage](#object-storage)
* [Cache](#cache)
<!-- TOC -->
@@ -72,10 +72,10 @@ service.
| | | | Username | `databases.xwiki.username` | `xwiki_user` |
| | | | Password | `databases.xwiki.password` | |
# Objectstore
# Object storage
When deploying this suite to production, you need to configure the applications to use your production grade objectstore
service.
When deploying this suite to production, you need to configure the applications to use your production grade object
storage service.
| Component | Name | Parameter | Key | Default |
|-------------|-------------|-----------------|------------------------------------------|--------------------|

View File

@@ -21,6 +21,9 @@ This documentation should enable you to create your own evaluation instance of o
* [Container runtime](#container-runtime)
* [Volumes](#volumes)
* [Connectivity](#connectivity)
* [Ports](#ports)
* [Web based user interface](#web-based-user-interface)
* [Mail clients](#mail-clients)
* [Mail/SMTP configuration](#mailsmtp-configuration)
* [TURN configuration](#turn-configuration)
* [Certificate issuer](#certificate-issuer)
@@ -29,6 +32,7 @@ This documentation should enable you to create your own evaluation instance of o
* [Install single app](#install-single-app)
* [Install single release/chart](#install-single-releasechart)
* [Access deployment](#access-deployment)
* [Using from external repository](#using-from-external-repository)
* [Uninstall](#uninstall)
<!-- TOC -->
@@ -97,7 +101,7 @@ export DOMAIN=domain.tld
All available apps and their default value can be found in `helmfile/environments/default/workplace.yaml`.
| Component | Name | Default | Description |
|-----------------------------|-------------------------------------|---------|--------------------------------|
| --------------------------- | ----------------------------------- | ------- | ------------------------------ |
| Certificates | `certificates.enabled` | `true` | TLS certificates |
| ClamAV (Distributed) | `clamavDistributed.enabled` | `false` | Antivirus engine |
| ClamAV (Simple) | `clamavSimple.enabled` | `true` | Antivirus engine |
@@ -118,7 +122,7 @@ All available apps and their default value can be found in `helmfile/environment
| PostgreSQL | `postgresql.enabled` | `true` | Database |
| Redis | `redis.enabled` | `true` | Cache Database |
| Univention Management Stack | `univentionManagementStack.enabled` | `true` | Identity Management & Portal |
| XWiki | `xwiki.enabled` | `true` | Knowledgebase |
| XWiki | `xwiki.enabled` | `true` | Knowledge management |
Exemplary, Jitsi can be disabled like:
@@ -132,7 +136,7 @@ jitsi:
By default Helm charts and container images are fetched from OCI registries. These registries can be found for most cases
in the [openDesk/component section on Open CoDE](https://gitlab.opencode.de/bmi/opendesk/components).
For untouched upstream artefacts that do not belong to a functional component's core we use upstream registries
For untouched upstream artifacts that do not belong to a functional component's core we use upstream registries
like Docker Hub.
Doing a test deployment will most likely be fine with this setup. In case you want to deploy multiple times a day
@@ -204,9 +208,11 @@ ingress:
ingressClassName: "cilium"
```
**Note:** Please check the [requirements.md](./requirements.md) for the supported Ingress controllers.
### Container runtime
Some apps require specific configuration for container runtimes. You can set your container runtime like `cri-o`,
Some apps require specific configuration for the container runtime. You can set your container runtime like `cri-o`,
`containerd` or `docker` by:
```yaml
@@ -237,9 +243,32 @@ persistence:
## Connectivity
### Ports
**Note:** If you use `NodePort` for service exposure, you need to check your deployment for the actual ports.
#### Web based user interface
To use the openDesk functionality with its web based user interface you need to publicly expose the following ports:
| Component | Description | Port | Type |
| ------------------ | ----------------------- | ----: | ---: |
| Jitsi Video Bridge | ICE Port for video data | 10000 | UDP |
#### Mail clients
To connect with mail clients like [Thunderbird](https://www.thunderbird.net/), the following ports need public exposure:
| Component | Description | Port | Type |
| ------------------ | ----------------------- | ----: | ---: |
| Dovecot | IMAPS | 993 | TCP |
| | POP3S | 995 | TCP |
| Postfix | SMTP | 25 | TCP |
| | SMTPS | 587 | TCP |
### Mail/SMTP configuration
To use the full potential of the openDesk, you need to set up an SMTP Smarthost/Relay which allows to send emails from
To use the full potential of the openDesk, you need to set up an SMTP relay which allows sending emails from
the whole subdomain.
```yaml
@@ -367,7 +396,19 @@ section provide you with the desired information to login with the two default u
| Username | Password | Description |
|-----------------|--------------------------------------------|------------------|
| `default.user` | `40615..............................e9e2f` | Application user |
| `default.admin` | `bdbbb..............................04db6` | Administrator |
| `default.admin` | `17027..............................04db6` | Administrator |
## Using from external repository
It is possible to refer to `./helmfile_generic.yaml` from an external
directory or repository. The `helmfile.yaml` that refers to
`./helmfile_generic.yaml` may define custom environments. These custom
environments may overwrite certain configuration values. These
configuration values are:
* `global.domain`
* `global.helmRegistry`
* `global.master_password`
# Uninstall

33
docs/migrations.md Normal file
View File

@@ -0,0 +1,33 @@
<!--
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
-->
<h1>Migrations</h1>
* [Disclaimer](#disclaimer)
* [From v0.8.1](#from-v081)
* [Updated customizable template attributes](#updated-customizable-template-attributes)
* [`migrations` S3 bucket](#migrations-s3-bucket)
# Disclaimer
We do not offer support for upgrades before we reach openDesk 1.0.
Though we try to ease the pain when it comes to 0.x upgrades. That is what this document is for.
# From v0.8.1
## Updated customizable template attributes
- Action: Please ensure you update you custom deployment values according with the updated default value structure.
- References:
- `functional.` prefix for `authentication.*`, `externalServices.*`, `admin.*` and `filestore.*`, see [functional.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/functional.yaml).
- `debug.` prefix for `cleanup.*`, see [debug.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/debug.yaml).
- `monitoring.` prefix for `prometheus.*` and `graphana.*`, see [monitoring.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/monitoring.yaml).
- `smtp.` prefix for `localpartNoReply`, see [smtp.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/smtp.yaml).
## `migrations` S3 bucket
- Action: For self managed/external S3/object storages, please ensure you add a bucket `migrations` to your S3.
- Reference: `objectstores.migrations` in [objectstores.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/objectstores.yaml)

View File

@@ -20,9 +20,9 @@ This section covers the internal system requirements as well as external service
# tl;dr
openDesk is a Kubernetes only solution and requires an existing Kubernetes (K8s) cluster.
- K8s cluster >= 1.24, [CNCF Certified Kubernetes Distro](https://www.cncf.io/certification/software-conformance/)
- K8s cluster >= 1.24, [CNCF Certified Kubernetes distribution](https://www.cncf.io/certification/software-conformance/)
- Domain and DNS Service
- Ingress controller (supported are nginx-ingress, HAProxy)
- Ingress controller (Ingress NGINX)
- [Helm](https://helm.sh/) >= v3.9.0
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= **v0.157.0**
- [HelmDiff](https://github.com/databus23/helm-diff) >= 3.6.0
@@ -42,7 +42,7 @@ The following minimal requirements are thought for initial evaluation deployment
# Kubernetes
Any self-hosted or managed K8s cluster >= 1.24 listed in
[CNCF Certified Kubernetes Distros](https://www.cncf.io/certification/software-conformance/) should be supported.
[CNCF Certified Kubernetes distributions](https://www.cncf.io/certification/software-conformance/) should be supported.
The deployment is tested against [kubespray](https://github.com/kubernetes-sigs/kubespray) based clusters.
@@ -53,10 +53,11 @@ The deployment is tested against [kubespray](https://github.com/kubernetes-sigs/
The deployment is intended to use only over HTTPS via a configured FQDN, therefor it is required to have a proper
configured ingress controller deployed.
**Maintained controllers:**
- [NGINX Ingress Controller](https://github.com/nginxinc/kubernetes-ingress)
**Supported controllers:**
- [Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx)
- [HAProxy Kubernetes Ingress Controller](https://github.com/haproxytech/kubernetes-ingress)
Note: The platform development team is evaluating the use of [Gateway API](https://gateway-api.sigs.k8s.io/).
If you have feedback on that topic, please share it with us.
# Volume provisioner
@@ -75,16 +76,18 @@ openDesk certificate management disabled.
# External services
Evaluation the openDesk deployment does not require any external service to start, but features may be limited.
For development and evaluation of openDesk we bundle some service to start with. Be aware that for production
deployments you need to make use of your own production grade services, see the
[external-services.md](./external-services.md) for configuration details.
| Group | Type | Version | Tested against |
|----------|---------------------|---------|-----------------------|
| Cache | Memached | `1.6.x` | Memached |
| -------- | ------------------- | ------- | --------------------- |
| Cache | Memcached | `1.6.x` | Memcached |
| | Redis | `7.x.x` | Redis |
| Database | MariaDB | `10.x` | MariaDB |
| | PostgreSQL | `15.x` | PostgreSQL |
| Mail | Mail Transfer Agent | | Postfix |
| | PKI/CI (SMIME) | | |
| | PKI/CI (S/MIME) | | |
| Security | AntiVirus/ICAP | | ClamAV |
| Storage | K8s ReadWriteOnce | | Ceph / Cloud specific |
| | K8s ReadWriteMany | | Ceph / NFS |

View File

@@ -16,7 +16,7 @@ This document should cover the abilities to scale apps.
The Replicas can be increased of almost any component, but is only effective for high-availability or load-balancing for
apps with a check-mark in `Scaling (effective)` column.
Verified positive effects are marke with a check-mark in `Scaling (verified)` column, apps which are not yet tested are
Verified positive effects are marked with a check-mark in `Scaling (verified)` column, apps which are not yet tested are
marked with a gear.

View File

@@ -170,6 +170,7 @@ This list gives you an overview of templated security settings and if they compl
| **nextcloud**/opendesk-nextcloud/apache2 | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
| **nextcloud**/opendesk-nextcloud/exporter | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
| **nextcloud**/opendesk-nextcloud/php | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
| **open-xchange**/dovecot | :x: | no | n/a | yes | n/a | n/a | n/a | yes | no ["CHOWN","DAC_OVERRIDE","KILL","NET_BIND_SERVICE","SETGID","SETUID","SYS_CHROOT"] |
| **open-xchange**/open-xchange/appsuite/core-documentconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes |
| **open-xchange**/open-xchange/appsuite/core-guidedtours | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **open-xchange**/open-xchange/appsuite/core-imageconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes |
@@ -196,31 +197,17 @@ This list gives you an overview of templated security settings and if they compl
| **services**/postgresql | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **services**/redis/master | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **univention-management-stack**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-guardian-authorization-api | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-guardian-management-api | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-guardian-management-ui | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-keycloak | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-keycloak-bootstrap | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-keycloak-extensions/handler | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-keycloak-extensions/proxy | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-ldap-notifier | :x: | no | no | no | no | 0 | 0 | yes | yes |
| **univention-management-stack**/ums-ldap-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-notifications-api | :x: | no | no | no | no | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-open-policy-agent | :x: | no | no | no | yes | 1000 | 1000 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-portal-frontend | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-portal-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-portal-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-provisioning/dispatcher | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-provisioning/events-and-consumer-api | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums-provisioning/udm-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-selfservice-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-stack-data-swp | :x: | no | no | no | no | 0 | 0 | yes | yes |
| **univention-management-stack**/ums-stack-data-ums | :x: | no | no | no | no | 0 | 0 | yes | yes |
| **univention-management-stack**/ums-stack-gateway | :x: | no | no | no | yes | 1001 | 1001 | yes | yes |
| **univention-management-stack**/ums-store-dav | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-udm-rest-api | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-umc-gateway | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums-umc-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums/keycloak | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums/keycloak-bootstrap | :x: | no | no | no | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums/keycloak-extensions/handler | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums/keycloak-extensions/proxy | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **univention-management-stack**/ums/ldap-notifier | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
| **univention-management-stack**/ums/portal-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums/selfservice-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums/stack-data-swp | :x: | no | no | no | no | 0 | 0 | yes | yes |
| **univention-management-stack**/ums/stack-gateway | :x: | no | no | no | yes | 1001 | 0 | yes | yes |
| **univention-management-stack**/ums/umc-gateway | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **univention-management-stack**/ums/umc-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] |
| **xwiki**/xwiki | :x: | no | no | no | yes | 100 | 101 | yes | yes |

View File

@@ -26,7 +26,7 @@ theme:
# Colors
The primary color and their derivates with lesser opacity be customized by:
The primary color and their derives with lesser opacity be customized by:
```yaml
theme:

View File

@@ -46,7 +46,7 @@ The following section should provide a high-level view of the involved parties i
- **Open source product suppliers**
- Focus areas
- Development of upstream products
- Development of integrational functionality relevant to openDesk and others
- Development of integrative functionality relevant to openDesk and others
- Providing source code and the artifacts required to install openDesk to Open CoDE
- Hand over to _openDesk platform development_
- Helm charts
@@ -151,7 +151,7 @@ As the way to mark the license header as a comment differs between the various f
### Disclaimer
openDesk consists only of community products, so there is no SLA to receive service updates or backports of critical security fixes. This has two consequences:
openDesk consists only of community products, so there is no SLA to receive service updates or backport of critical security fixes. This has two consequences:
- In production scenarios, you should replace the community versions of the functional components with supported, SLA-backed paid versions.
- openDesk aims to always update to the latest available releases of the community components and we therefore have rolling technical releases.
@@ -230,7 +230,7 @@ The Standard Quality Gate addresses quality assurance steps that should be execu
1. Linting
- Blocking
- Licening: [reuse](https://github.com/fsfe/reuse-tool)
- Licensing: [reuse](https://github.com/fsfe/reuse-tool)
- openDesk specific: Especially `images.yaml` and `charts.yaml`, find more details in the [development](./development.md) docu
- Non Blocking
- Security: [Kyverno policy check](../.kyverno) addressing some IT-Grundschutz requirements
@@ -249,7 +249,7 @@ The Standard Quality Gate addresses quality assurance steps that should be execu
Steps #1 to #3 from above are executed as GitLab CI and therefore documented within GitLab.
Step #4 is focussed on security and was not fully implemented yet. Its main objective is to check for regressions. That step is just the second step of a security check and monitoring chain as shown below. While some checks can be executed against the static artefacts (e.g. container images) other might require an up-and-running instance. These are especially located in the third step below which is not yet implemented.
Step #4 is focussed on security and was not fully implemented yet. Its main objective is to check for regressions. That step is just the second step of a security check and monitoring chain as shown below. While some checks can be executed against the static artifacts (e.g. container images) other might require an up-and-running instance. These are especially located in the third step below which is not yet implemented.
```mermaid
flowchart TD
@@ -258,7 +258,7 @@ flowchart TD
e.g. based on openDesk
reference implementation 'gitlab-config'.
>> Can the artefact be integrated? <<
] -->|integrate Artefacts| B[<u><b>Deployment automation</b></u> SQG
] -->|integrate artifacts| B[<u><b>Deployment automation</b></u> SQG
based on GitLab CI during
technical release process.
>> Can the platform be released? <<
@@ -311,7 +311,7 @@ This branch type requires the most activities on top of the actual development:
- This is the actual interface between the platform development workflow and the supplier work package workflow.
- The openDesk QA team validates the change, ideally based on the acceptance criteria defined in the supplier's work package definition.
- If improvements are needed QA passes on the feedback to the developer/supplier.
- If the QA was successful test cases for the testautomation of the feature are defined.
- If the QA was successful test cases for the test automation of the feature are defined.
- QA should also evaluate if there is a need for end-user documentation of the feature.
- `Develop Test`: The test cases are implemented by the openDesk platform development and added to the openDesk end-to-end test suite.
- `Documentation`: When required the documentation team has to update the end-user documentation.

View File

@@ -1,52 +1,29 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
#
# Advanced Configuration: Nested States
#
helmfiles:
# Path to the helmfile state file being processed BEFORE releases in this state file
- path: "helmfile/apps/services/helmfile.yaml"
- path: "helmfile/apps/univention-management-stack/helmfile.yaml"
- path: "helmfile/apps/intercom-service/helmfile.yaml"
- path: "helmfile/apps/open-xchange/helmfile.yaml"
- path: "helmfile/apps/nextcloud/helmfile.yaml"
- path: "helmfile/apps/collabora/helmfile.yaml"
- path: "helmfile/apps/cryptpad/helmfile.yaml"
- path: "helmfile/apps/jitsi/helmfile.yaml"
- path: "helmfile/apps/element/helmfile.yaml"
- path: "helmfile/apps/openproject/helmfile.yaml"
- path: "helmfile/apps/xwiki/helmfile.yaml"
- path: "helmfile/apps/provisioning/helmfile.yaml"
- path: "helmfile/apps/openproject-bootstrap/helmfile.yaml"
missingFileHandler: "Error"
# Environment is defined here and in helmfile/bases/environments.yaml
# This is a temporary solution to solve issue with different (relative) paths required when
# - Installing all releases from root via helmfile apply
# - Installing a single release from root via helmfile apply -f helmfile/apps/<app>/helmfile.yaml
# - Installing a single release from app directory via helmfile apply
# Issue: https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/issues/2
environments:
default:
values:
- "helmfile/environments/default/*.gotmpl"
- "helmfile/environments/default/*.yaml"
dev:
values:
- "helmfile/environments/default/*.gotmpl"
- "helmfile/environments/default/*.yaml"
- "helmfile/environments/dev/values.yaml.gotmpl"
- "helmfile/environments/dev/*.yaml.gotmpl"
test:
values:
- "helmfile/environments/default/*.gotmpl"
- "helmfile/environments/default/*.yaml"
- "helmfile/environments/test/values.yaml.gotmpl"
- "helmfile/environments/test/*.yaml.gotmpl"
prod:
values:
- "helmfile/environments/default/*.gotmpl"
- "helmfile/environments/default/*.yaml"
- "helmfile/environments/prod/values.yaml.gotmpl"
- "helmfile/environments/prod/*.yaml.gotmpl"
---
# yamllint disable
helmfiles:
- path: "./helmfile_generic.yaml"
values:
- {{ toYaml .Values | nindent 8 }}
# {{/*
#
# Use this format from a remote repository
#
# - path: "git::https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk.git@helmfile_generic.yaml?ref=v0.7.1"
# values:
# - {{ toYaml .Values | nindent 8 }}
# */}}
...

View File

@@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# Collabora Online
# Source: https://github.com/CollaboraOnline/online
- name: "collabora-online-repo"
keyring: "../../files/gpg-pubkeys/collaboraoffice-com.gpg"
verify: {{ .Values.charts.collabora.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/\
{{ .Values.charts.collabora.repository }}"
releases:
- name: "collabora-online"
chart: "collabora-online-repo/{{ .Values.charts.collabora.name }}"
version: "{{ .Values.charts.collabora.version }}"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.collabora.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "collabora"
...

View File

@@ -1,30 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# Collabora Online
# Source: https://github.com/CollaboraOnline/online
- name: "collabora-online-repo"
keyring: "../../files/gpg-pubkeys/collaboraoffice-com.gpg"
verify: {{ .Values.charts.collabora.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/\
{{ .Values.charts.collabora.repository }}"
releases:
- name: "collabora-online"
chart: "collabora-online-repo/{{ .Values.charts.collabora.name }}"
version: "{{ .Values.charts.collabora.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.collabora.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "collabora"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -7,7 +7,7 @@ autoscaling:
enabled: false
collabora:
extra_params: "--o:ssl.enable=false --o:ssl.termination=true"
extra_params: "--o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0"
username: "collabora-internal-admin"
password: {{ .Values.secrets.collabora.adminPassword | quote }}
aliasgroups:
@@ -17,11 +17,11 @@ fullnameOverride: "collabora"
grafana:
dashboards:
enabled: {{ .Values.grafana.dashboards.enabled }}
enabled: {{ .Values.monitoring.grafana.dashboards.enabled }}
labels:
{{ .Values.grafana.dashboards.labels | toYaml | nindent 6 }}
{{ .Values.monitoring.grafana.dashboards.labels | toYaml | nindent 6 }}
annotations:
{{ .Values.grafana.dashboards.annotations | toYaml | nindent 6 }}
{{ .Values.monitoring.grafana.dashboards.annotations | toYaml | nindent 6 }}
image:
repository: "{{ .Values.global.imageRegistry | default .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"
@@ -37,9 +37,9 @@ ingress:
annotations:
# Ingress NGINX
nginx.ingress.kubernetes.io/upstream-hash-by: "$arg_WOPISrc"
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.collabora }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}"
nginx.ingress.kubernetes.io/server-snippet: |
# block admin and metrics endpoint from outside by default
location /cool/getMetrics { deny all; return 403; }
@@ -48,21 +48,21 @@ ingress:
# NGINX
nginx.org/websocket-services: "collabora"
nginx.org/lb-method: "hash $arg_WOPISrc consistent"
nginx.org/proxy-read-timeout: "600"
nginx.org/proxy-send-timeout: "600"
nginx.org/client-max-body-size: "0"
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.collabora }}"
nginx.org/server-snippets: |
# block admin and metrics endpoint from outside by default
location /cool/getMetrics { deny all; return 403; }
location /cool/adminws/ { deny all; return 403; }
location /browser/dist/admin/admin.html { deny all; return 403; }
# HAProxy
haproxy.org/timeout-tunnel: "3600s"
haproxy.org/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
haproxy.org/backend-config-snippet: |
balance url_param WOPISrc check_post
hash-type consistent
# HAProxy - Community: https://haproxy-ingress.github.io/
haproxy-ingress.github.io/timeout-tunnel: "3600s"
haproxy-ingress.github.io/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
haproxy-ingress.github.io/balance-algorithm: "url_param WOPISrc check_post"
haproxy-ingress.github.io/config-backend: |
hash-type consistent
@@ -88,13 +88,13 @@ podSecurityContext:
prometheus:
servicemonitor:
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
labels:
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
rules:
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
additionalLabels:
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 6 }}
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 6 }}
replicaCount: {{ .Values.replicas.collabora }}

View File

@@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# CryptPad
# Source: https://github.com/cryptpad/helm
- name: "cryptpad-repo"
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
verify: {{ .Values.charts.cryptpad.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/\
{{ .Values.charts.cryptpad.repository }}"
releases:
- name: "cryptpad"
chart: "cryptpad-repo/{{ .Values.charts.cryptpad.name }}"
version: "{{ .Values.charts.cryptpad.version }}"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.cryptpad.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "cryptpad"
...

View File

@@ -1,30 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# CryptPad
# Source: https://github.com/cryptpad/helm
- name: "cryptpad-repo"
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
verify: {{ .Values.charts.cryptpad.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/\
{{ .Values.charts.cryptpad.repository }}"
releases:
- name: "cryptpad"
chart: "cryptpad-repo/{{ .Values.charts.cryptpad.name }}"
version: "{{ .Values.charts.cryptpad.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.cryptpad.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "cryptpad"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -0,0 +1,184 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Element
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-element
- name: "element-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.element.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/\
{{ .Values.charts.element.repository }}"
- name: "element-well-known-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.elementWellKnown.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/\
{{ .Values.charts.elementWellKnown.repository }}"
- name: "synapse-web-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapseWeb.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/\
{{ .Values.charts.synapseWeb.repository }}"
- name: "synapse-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapse.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/\
{{ .Values.charts.synapse.repository }}"
- name: "synapse-create-account-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapseCreateAccount.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/\
{{ .Values.charts.synapseCreateAccount.repository }}"
# openDesk Matrix Widgets
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
- name: "matrix-user-verification-service-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixUserVerificationService.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/\
{{ .Values.charts.matrixUserVerificationService.repository }}"
- name: "matrix-neoboard-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
{{ .Values.charts.matrixNeoboardWidget.repository }}"
- name: "matrix-neochoice-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
{{ .Values.charts.matrixNeoboardWidget.repository }}"
- name: "matrix-neodatefix-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/\
{{ .Values.charts.matrixNeodatefixWidget.repository }}"
- name: "matrix-neodatefix-bot-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/\
{{ .Values.charts.matrixNeodatefixBot.repository }}"
releases:
- name: "opendesk-element"
chart: "element-repo/{{ .Values.charts.element.name }}"
version: "{{ .Values.charts.element.version }}"
values:
- "values-element.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-well-known"
chart: "element-well-known-repo/{{ .Values.charts.elementWellKnown.name }}"
version: "{{ .Values.charts.elementWellKnown.version }}"
values:
- "values-well-known.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-synapse-web"
chart: "synapse-web-repo/{{ .Values.charts.synapseWeb.name }}"
version: "{{ .Values.charts.synapseWeb.version }}"
values:
- "values-synapse-web.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-synapse"
chart: "synapse-repo/{{ .Values.charts.synapse.name }}"
version: "{{ .Values.charts.synapse.version }}"
values:
- "values-synapse.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-matrix-user-verification-service-bootstrap"
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
version: "{{ .Values.charts.synapseCreateAccount.version }}"
values:
- "values-matrix-user-verification-service-bootstrap.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-matrix-user-verification-service"
chart: "matrix-user-verification-service-repo/{{ .Values.charts.matrixUserVerificationService.name }}"
version: "{{ .Values.charts.matrixUserVerificationService.version }}"
values:
- "values-matrix-user-verification-service.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neoboard-widget"
chart: "matrix-neoboard-widget-repo/{{ .Values.charts.matrixNeoboardWidget.name }}"
version: "{{ .Values.charts.matrixNeoboardWidget.version }}"
values:
- "values-matrix-neoboard-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neochoice-widget"
chart: "matrix-neochoice-widget-repo/{{ .Values.charts.matrixNeochoiseWidget.name }}"
version: "{{ .Values.charts.matrixNeochoiseWidget.version }}"
values:
- "values-matrix-neochoice-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-widget"
chart: "matrix-neodatefix-widget-repo/{{ .Values.charts.matrixNeodatefixWidget.name }}"
version: "{{ .Values.charts.matrixNeodatefixWidget.version }}"
values:
- "values-matrix-neodatefix-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-bot-bootstrap"
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
version: "{{ .Values.charts.synapseCreateAccount.version }}"
values:
- "values-matrix-neodatefix-bot-bootstrap.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-bot"
chart: "matrix-neodatefix-bot-repo/{{ .Values.charts.matrixNeodatefixBot.name }}"
version: "{{ .Values.charts.matrixNeodatefixBot.version }}"
values:
- "values-matrix-neodatefix-bot.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "element"
...

View File

@@ -1,187 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# openDesk Element
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-element
- name: "element-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.element.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/\
{{ .Values.charts.element.repository }}"
- name: "element-well-known-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.elementWellKnown.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/\
{{ .Values.charts.elementWellKnown.repository }}"
- name: "synapse-web-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapseWeb.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/\
{{ .Values.charts.synapseWeb.repository }}"
- name: "synapse-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapse.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/\
{{ .Values.charts.synapse.repository }}"
- name: "synapse-create-account-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.synapseCreateAccount.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/\
{{ .Values.charts.synapseCreateAccount.repository }}"
# openDesk Matrix Widgets
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
- name: "matrix-user-verification-service-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixUserVerificationService.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/\
{{ .Values.charts.matrixUserVerificationService.repository }}"
- name: "matrix-neoboard-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
{{ .Values.charts.matrixNeoboardWidget.repository }}"
- name: "matrix-neochoice-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
{{ .Values.charts.matrixNeoboardWidget.repository }}"
- name: "matrix-neodatefix-widget-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/\
{{ .Values.charts.matrixNeodatefixWidget.repository }}"
- name: "matrix-neodatefix-bot-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/\
{{ .Values.charts.matrixNeodatefixBot.repository }}"
releases:
- name: "opendesk-element"
chart: "element-repo/{{ .Values.charts.element.name }}"
version: "{{ .Values.charts.element.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-element.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-well-known"
chart: "element-well-known-repo/{{ .Values.charts.elementWellKnown.name }}"
version: "{{ .Values.charts.elementWellKnown.version }}"
values:
- "values-well-known.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-synapse-web"
chart: "synapse-web-repo/{{ .Values.charts.synapseWeb.name }}"
version: "{{ .Values.charts.synapseWeb.version }}"
values:
- "values-synapse-web.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-synapse"
chart: "synapse-repo/{{ .Values.charts.synapse.name }}"
version: "{{ .Values.charts.synapse.version }}"
values:
- "values-synapse.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-matrix-user-verification-service-bootstrap"
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
version: "{{ .Values.charts.synapseCreateAccount.version }}"
values:
- "values-matrix-user-verification-service-bootstrap.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "opendesk-matrix-user-verification-service"
chart: "matrix-user-verification-service-repo/{{ .Values.charts.matrixUserVerificationService.name }}"
version: "{{ .Values.charts.matrixUserVerificationService.version }}"
values:
- "values-matrix-user-verification-service.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neoboard-widget"
chart: "matrix-neoboard-widget-repo/{{ .Values.charts.matrixNeoboardWidget.name }}"
version: "{{ .Values.charts.matrixNeoboardWidget.version }}"
values:
- "values-matrix-neoboard-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neochoice-widget"
chart: "matrix-neochoice-widget-repo/{{ .Values.charts.matrixNeochoiseWidget.name }}"
version: "{{ .Values.charts.matrixNeochoiseWidget.version }}"
values:
- "values-matrix-neochoice-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-widget"
chart: "matrix-neodatefix-widget-repo/{{ .Values.charts.matrixNeodatefixWidget.name }}"
version: "{{ .Values.charts.matrixNeodatefixWidget.version }}"
values:
- "values-matrix-neodatefix-widget.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-bot-bootstrap"
chart: "synapse-create-account-repo/{{ .Values.charts.synapseCreateAccount.name }}"
version: "{{ .Values.charts.synapseCreateAccount.version }}"
values:
- "values-matrix-neodatefix-bot-bootstrap.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
- name: "matrix-neodatefix-bot"
chart: "matrix-neodatefix-bot-repo/{{ .Values.charts.matrixNeodatefixBot.name }}"
version: "{{ .Values.charts.matrixNeodatefixBot.version }}"
values:
- "values-matrix-neodatefix-bot.yaml.gotmpl"
installed: {{ .Values.element.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "element"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -1,3 +1,4 @@
# 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
---
@@ -14,6 +15,7 @@ configuration:
portal_logo_svg_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/icons/logos/domain.svg"
portal_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/"
custom_css_variables:
--cpd-color-bg-action-primary-rest: {{ .Values.theme.colors.primary | quote }}
--cpd-color-text-action-accent: {{ .Values.theme.colors.primary | quote }}
"net.nordeck.element_web.module.widget_lifecycle":

View File

@@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
configuration:
username: "meetings-bot"

View File

@@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
configuration:
username: "uvs"

View File

@@ -21,6 +21,7 @@ containerSecurityContext:
global:
domain: {{ .Values.global.domain | quote }}
clusterDomain: {{ .Values.cluster.networking.domain | quote }}
hosts:
{{ .Values.global.hosts | toYaml | nindent 4 }}
imagePullSecrets:
@@ -33,6 +34,13 @@ image:
tag: {{ .Values.images.synapseWeb.tag | quote }}
ingress:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.element }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}"
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.element }}"
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}s"
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.element }}s"
host: "{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}"
enabled: {{ .Values.ingress.enabled }}
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}

View File

@@ -40,11 +40,26 @@ configuration:
regex: "@.*"
url: null
sender_localpart: intercom-service
use_presence: {{ .Values.functional.dataProtection.matrixPresence.enabled }}
presence:
enabled: {{ .Values.functional.dataProtection.matrixPresence.enabled }}
smtp:
senderAddress: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}"
host: {{ .Values.smtp.host | quote }}
port: {{ .Values.smtp.port }}
username: {{ .Values.smtp.username | quote }}
password: {{ .Values.smtp.password | quote }}
oidc:
clientId: "opendesk-matrix"
clientSecret: {{ .Values.secrets.keycloak.clientSecret.matrix | quote }}
issuer: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
scopes:
- "openid"
- "opendesk-matrix-scope"
turn:
sharedSecret: {{ .Values.turn.credentials | quote }}
@@ -83,6 +98,16 @@ containerSecurityContext:
seLinuxOptions:
{{ .Values.seLinuxOptions.synapse | toYaml | nindent 4 }}
federation:
enabled: {{ .Values.functional.externalServices.matrix.federation.enabled }}
ingress:
host: "{{ .Values.global.hosts.synapseFederation }}.{{ .Values.global.domain }}"
enabled: {{ .Values.ingress.enabled }}
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
tls:
enabled: {{ .Values.ingress.tls.enabled }}
secretName: {{ .Values.ingress.tls.secretName | quote }}
global:
domain: {{ .Values.global.domain | quote }}
hosts:

View File

@@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# Intercom Service
# Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service
- name: "intercom-service-repo"
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
verify: {{ .Values.charts.intercomService.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/\
{{ .Values.charts.intercomService.repository }}"
releases:
- name: "intercom-service"
chart: "intercom-service-repo/{{ .Values.charts.intercomService.name }}"
version: "{{ .Values.charts.intercomService.version }}"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.intercom.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "intercom-service"
...

View File

@@ -1,30 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# Intercom Service
# Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service
- name: "intercom-service-repo"
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
verify: {{ .Values.charts.intercomService.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/\
{{ .Values.charts.intercomService.repository }}"
releases:
- name: "intercom-service"
chart: "intercom-service-repo/{{ .Values.charts.intercomService.name }}"
version: "{{ .Values.charts.intercomService.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.intercom.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "intercom-service"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -0,0 +1,28 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Jitsi
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-jitsi
- name: "jitsi-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.jitsi.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/\
{{ .Values.charts.jitsi.repository }}"
releases:
- name: "jitsi"
chart: "jitsi-repo/{{ .Values.charts.jitsi.name }}"
version: "{{ .Values.charts.jitsi.version }}"
values:
- "values-jitsi.yaml.gotmpl"
installed: {{ .Values.jitsi.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "jitsi"
...

View File

@@ -1,31 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# openDesk Jitsi
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-jitsi
- name: "jitsi-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.jitsi.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/\
{{ .Values.charts.jitsi.repository }}"
releases:
- name: "jitsi"
chart: "jitsi-repo/{{ .Values.charts.jitsi.name }}"
version: "{{ .Values.charts.jitsi.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-jitsi.yaml.gotmpl"
installed: {{ .Values.jitsi.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "jitsi"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -27,7 +27,7 @@ containerSecurityContext:
{{ .Values.seLinuxOptions.jitsiKeycloakAdapter | toYaml | nindent 4 }}
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
image:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}

View File

@@ -0,0 +1,31 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Migrations
# Source:
- name: "openproject-migrations-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.migrations.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/\
{{ .Values.charts.migrations.repository }}"
releases:
- name: "opendesk-migrations-post"
chart: "openproject-migrations-repo/{{ .Values.charts.migrations.name }}"
version: "{{ .Values.charts.migrations.version }}"
wait: true
waitForJobs: true
values:
- "values.yaml.gotmpl"
- "../../shared/migrations.yaml.gotmpl"
installed: {{ .Values.migrations.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-0"
component: "opendesk-migrations"
...

View File

@@ -0,0 +1,11 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
helmfiles:
- path: "./helmfile-child.yaml"
values:
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -0,0 +1,8 @@
{{/*
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
---
migrations:
stage: "POST"
...

View File

@@ -0,0 +1,31 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Migrations
# Source:
- name: "openproject-migrations-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.migrations.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/\
{{ .Values.charts.migrations.repository }}"
releases:
- name: "opendesk-migrations-pre"
chart: "openproject-migrations-repo/{{ .Values.charts.migrations.name }}"
version: "{{ .Values.charts.migrations.version }}"
wait: true
waitForJobs: true
values:
- "values.yaml.gotmpl"
- "../../shared/migrations.yaml.gotmpl"
installed: {{ .Values.migrations.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-0"
component: "opendesk-migrations"
...

View File

@@ -0,0 +1,11 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
helmfiles:
- path: "./helmfile-child.yaml"
values:
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -0,0 +1,8 @@
{{/*
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
---
migrations:
stage: "PRE"
...

View File

@@ -0,0 +1,46 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# Nextcloud
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
- name: "nextcloud-management-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.nextcloudManagement.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/\
{{ .Values.charts.nextcloudManagement.repository }}"
- name: "nextcloud-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.nextcloud.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/\
{{ .Values.charts.nextcloud.repository }}"
releases:
- name: "opendesk-nextcloud-management"
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
version: "{{ .Values.charts.nextcloudManagement.version }}"
values:
- "values-nextcloud-mgmt.yaml.gotmpl"
waitForJobs: true
wait: true
installed: {{ .Values.nextcloud.enabled }}
timeout: 900
- name: "opendesk-nextcloud"
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
version: "{{ .Values.charts.nextcloud.version }}"
values:
- "values-nextcloud.yaml.gotmpl"
needs:
- "opendesk-nextcloud-management"
installed: {{ .Values.nextcloud.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "nextcloud"
...

View File

@@ -1,49 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# Nextcloud
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-nextcloud
- name: "nextcloud-management-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.nextcloudManagement.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/\
{{ .Values.charts.nextcloudManagement.repository }}"
- name: "nextcloud-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.nextcloud.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/\
{{ .Values.charts.nextcloud.repository }}"
releases:
- name: "opendesk-nextcloud-management"
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
version: "{{ .Values.charts.nextcloudManagement.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-nextcloud-mgmt.yaml.gotmpl"
waitForJobs: true
wait: true
installed: {{ .Values.nextcloud.enabled }}
timeout: 900
- name: "opendesk-nextcloud"
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
version: "{{ .Values.charts.nextcloud.version }}"
values:
- "values-nextcloud.yaml.gotmpl"
needs:
- "opendesk-nextcloud-management"
installed: {{ .Values.nextcloud.enabled }}
commonLabels:
deploy-stage: "component-1"
component: "nextcloud"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -14,7 +14,7 @@ additionalAnnotations:
intents.otterize.com/service-name: "opendesk-nextcloud-php"
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
configuration:
administrator:
@@ -78,6 +78,14 @@ configuration:
value: {{ .Values.smtp.password | quote }}
host: {{ .Values.smtp.host | quote }}
port: {{ .Values.smtp.port | quote }}
fromAddress: {{ .Values.smtp.localpartNoReply | quote }}
mailDomain: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
quota:
default: "{{ .Values.functional.filestore.quota.default }} GB"
retentionObligation:
trashbin: {{ .Values.functional.filestore.nextcloud.retentionObligation.trashbin | quote }}
versions: {{ .Values.functional.filestore.nextcloud.retentionObligation.versions | quote }}
serverinfo:
token: {{ .Values.secrets.nextcloud.metricsToken | quote }}
@@ -98,11 +106,11 @@ containerSecurityContext:
{{ .Values.seLinuxOptions.nextcloudManagement | toYaml | nindent 4 }}
debug:
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"2"{{ end }}
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudManagement.registry | quote }}
repository: "{{ .Values.images.nextcloudManagement.repository }}"
repository: {{ .Values.images.nextcloudManagement.repository | quote }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.nextcloudManagement.tag | quote }}

View File

@@ -34,13 +34,13 @@ exporter:
tag: {{ .Values.images.nextcloudExporter.tag | quote }}
prometheus:
serviceMonitor:
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
labels:
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
prometheusRule:
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
additionalLabels:
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
replicaCount: {{ .Values.replicas.nextcloudExporter }}
resources:
{{ .Values.resources.nextcloudExporter | toYaml | nindent 4 }}
@@ -84,7 +84,7 @@ php:
cron:
successfulJobsHistoryLimit: {{ if .Values.debug.enabled }}"3"{{ else }}"0"{{ end }}
debug:
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"2"{{ end }}
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudPHP.registry | quote }}
repository: "{{ .Values.images.nextcloudPHP.repository }}"
@@ -92,13 +92,13 @@ php:
tag: {{ .Values.images.nextcloudPHP.tag | quote }}
prometheus:
serviceMonitor:
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
labels:
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
prometheusRule:
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
enabled: {{ .Values.monitoring.prometheus.prometheusRules.enabled }}
additionalLabels:
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
replicaCount: {{ .Values.replicas.nextcloudPHP }}
resources:
{{ .Values.resources.nextcloudPHP | toYaml | nindent 4 }}
@@ -124,6 +124,13 @@ apache2:
{{ .Values.seLinuxOptions.nextcloudApache2 | toYaml | nindent 6 }}
ingress:
enabled: {{ .Values.ingress.enabled }}
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.nextcloud }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}"
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.nextcloud }}"
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}s"
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.nextcloud }}s"
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
tls:

View File

@@ -0,0 +1,67 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Dovecot
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dovecot
- name: "dovecot-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.dovecot.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/\
{{ .Values.charts.dovecot.repository }}"
# Open-Xchange
- name: "open-xchange-repo"
keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg"
verify: {{ .Values.charts.openXchangeAppSuite.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/\
{{ .Values.charts.openXchangeAppSuite.repository }}"
# openDesk Open-Xchange Bootstrap
# Source:
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
- name: "open-xchange-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuiteBootstrap.registry }}/\
{{ .Values.charts.openXchangeAppSuiteBootstrap.repository }}"
releases:
- name: "dovecot"
chart: "dovecot-repo/{{ .Values.charts.dovecot.name }}"
version: "{{ .Values.charts.dovecot.version }}"
values:
- "values-dovecot.yaml.gotmpl"
installed: {{ .Values.dovecot.enabled }}
timeout: 900
- name: "open-xchange"
chart: "open-xchange-repo/{{ .Values.charts.openXchangeAppSuite.name }}"
version: "{{ .Values.charts.openXchangeAppSuite.version }}"
values:
- "values-openxchange.yaml.gotmpl"
- "values-openxchange-enterprise-contact-picker.yaml.gotmpl"
installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900
- name: "opendesk-open-xchange-bootstrap"
chart: "open-xchange-bootstrap-repo/{{ .Values.charts.openXchangeAppSuiteBootstrap.name }}"
version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}"
values:
- "values-openxchange-bootstrap.yaml.gotmpl"
installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "open-xchange"
...

View File

@@ -1,70 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# openDesk Dovecot
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dovecot
- name: "dovecot-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.dovecot.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/\
{{ .Values.charts.dovecot.repository }}"
# Open-Xchange
- name: "open-xchange-repo"
keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg"
verify: {{ .Values.charts.openXchangeAppSuite.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/\
{{ .Values.charts.openXchangeAppSuite.repository }}"
# openDesk Open-Xchange Bootstrap
# Source:
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
- name: "open-xchange-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuiteBootstrap.registry }}/\
{{ .Values.charts.openXchangeAppSuiteBootstrap.repository }}"
releases:
- name: "dovecot"
chart: "dovecot-repo/{{ .Values.charts.dovecot.name }}"
version: "{{ .Values.charts.dovecot.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-dovecot.yaml.gotmpl"
installed: {{ .Values.dovecot.enabled }}
timeout: 900
- name: "open-xchange"
chart: "open-xchange-repo/{{ .Values.charts.openXchangeAppSuite.name }}"
version: "{{ .Values.charts.openXchangeAppSuite.version }}"
values:
- "values-openxchange.yaml.gotmpl"
- "values-openxchange-enterprise-contact-picker.yaml.gotmpl"
installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900
- name: "opendesk-open-xchange-bootstrap"
chart: "open-xchange-bootstrap-repo/{{ .Values.charts.openXchangeAppSuiteBootstrap.name }}"
version: "{{ .Values.charts.openXchangeAppSuiteBootstrap.version }}"
values:
- "values-openxchange-bootstrap.yaml.gotmpl"
installed: {{ .Values.oxAppsuite.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "open-xchange"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -15,7 +15,7 @@ imagePullSecrets:
{{- end }}
dovecot:
mailDomain: {{ .Values.global.domain | quote }}
mailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
password: {{ .Values.secrets.dovecot.doveadm | quote }}
ldap:
enabled: true
@@ -38,8 +38,6 @@ dovecot:
ssl: "no"
host: "postfix:25"
certificate:
secretName: {{ .Values.ingress.tls.secretName | quote }}

View File

@@ -4,8 +4,8 @@ SPDX-License-Identifier: Apache-2.0
*/}}
---
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.cleanup.deletePodsOnSuccessTimeout }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccessTimeout: {{ .Values.debug.cleanup.deletePodsOnSuccessTimeout }}
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeBootstrap.registry | quote }}

View File

@@ -379,8 +379,12 @@ appsuite:
# The values for the for assistant- and manager name mappings are either used as-is, or get resolved
# dynamically using the DNs found
# in the mapped LDAP attribute.
assistant_name: "secretary"
manager_name: "oxManagerName,manager"
# Due to the Univention bug https://forge.univention.org/bugzilla/show_bug.cgi?id=53741
# we disable `assistant_name` contact picker attribute and use `secretary` for manager information.
# assistant_name: "secretary"
manager_name: "secretary,oxManagerName"
# Contact image, binary format is expected.
image1: "jpegPhoto"
# Special mapping where the value is evaluated using a string comparison with, or the existence of

View File

@@ -5,6 +5,10 @@ SPDX-License-Identifier: Apache-2.0
---
global:
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
appsuite:
cookieHashSalt: {{ .Values.secrets.oxAppsuite.cookieHashSalt }}
shareCryptKey: {{ .Values.secrets.oxAppsuite.shareCryptKey }}
sessiondEncryptionKey: {{ .Values.secrets.oxAppsuite.sessiondEncryptionKey }}
mysql:
host: {{ .Values.databases.oxAppsuite.host | quote }}
database: {{ .Values.databases.oxAppsuite.name | quote }}
@@ -88,6 +92,11 @@ appsuite:
hosts:
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
routes:
http-api-routes-appsuite-api:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.openXchangeAppSuite }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openXchangeAppSuite }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openXchangeAppSuite }}"
trailslash:
enabled: false
core-mw:
@@ -100,6 +109,12 @@ appsuite:
oidcPath: "/oidc"
masterAdmin: "admin"
masterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
hzGroupName: "hzgroup"
hzGroupPassword: {{ .Values.secrets.oxAppsuite.hzGroupPassword | quote }}
basicAuthLogin: "oxlogin"
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
jolokiaLogin: "jolokia"
jolokiaPassword: {{ .Values.secrets.oxAppsuite.jolokiaPassword | quote }}
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
serviceAccount:
create: true
@@ -392,9 +407,9 @@ appsuite:
ca: ""
resources:
{{ .Values.resources.openxchangeCoreUIMiddleware | toYaml | nindent 6 }}
updater:
updater:
resources:
{{ .Values.resources.openxchangeCoreUIMiddlewareUpdater | toYaml | nindent 6 }}
{{ .Values.resources.openxchangeCoreUIMiddlewareUpdater | toYaml | nindent 8 }}
securityContext:
allowPrivilegeEscalation: false
capabilities:
@@ -413,6 +428,10 @@ appsuite:
enabled: false
core-documentconverter:
adminUser: "admin"
adminPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
basicAuthLogin: "oxlogin"
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
enabled: true
documentConverter:
cache:
@@ -486,6 +505,10 @@ appsuite:
core-imageconverter:
enabled: true
adminUser: "admin"
adminPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
basicAuthLogin: "oxlogin"
basicAuthPassword: {{ .Values.secrets.oxAppsuite.basicAuthPassword | quote }}
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeImageConverter.registry | quote }}
repository: {{ .Values.images.openxchangeImageConverter.repository | quote }}

View File

@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk OpenProject Bootstrap
# Source: Set when repo is managed on Open CoDE
- name: "openproject-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.openprojectBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/\
{{ .Values.charts.openprojectBootstrap.repository }}"
releases:
- name: "opendesk-openproject-bootstrap"
chart: "openproject-bootstrap-repo/{{ .Values.charts.openprojectBootstrap.name }}"
version: "{{ .Values.charts.openprojectBootstrap.version }}"
wait: true
waitForJobs: true
values:
- "values.yaml.gotmpl"
installed: {{ .Values.openproject.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-2"
component: "opendesk-openproject-bootstrap"
...

View File

@@ -1,33 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# openDesk OpenProject Bootstrap
# Source: Set when repo is managed on Open CoDE
- name: "openproject-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.openprojectBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/\
{{ .Values.charts.openprojectBootstrap.repository }}"
releases:
- name: "opendesk-openproject-bootstrap"
chart: "openproject-bootstrap-repo/{{ .Values.charts.openprojectBootstrap.name }}"
version: "{{ .Values.charts.openprojectBootstrap.version }}"
wait: true
waitForJobs: true
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.openproject.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-2"
component: "opendesk-openproject-bootstrap"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -11,8 +11,8 @@ global:
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.cleanup.keepPVCOnDelete }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.debug.cleanup.keepPVCOnDelete }}
config:
openproject:

View File

@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# OpenProject
# Source: https://github.com/opf/helm-charts
- name: "openproject-repo"
keyring: "../../files/gpg-pubkeys/openproject-com.gpg"
verify: {{ .Values.charts.openproject.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/\
{{ .Values.charts.openproject.repository }}"
releases:
- name: "openproject"
chart: "openproject-repo/{{ .Values.charts.openproject.name }}"
version: "{{ .Values.charts.openproject.version }}"
wait: true
waitForJobs: true
values:
- "values.yaml.gotmpl"
installed: {{ .Values.openproject.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "openproject"
...

View File

@@ -1,33 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# OpenProject
# Source: https://github.com/opf/helm-charts
- name: "openproject-repo"
keyring: "../../files/gpg-pubkeys/openproject-com.gpg"
verify: {{ .Values.charts.openproject.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/\
{{ .Values.charts.openproject.repository }}"
releases:
- name: "openproject"
chart: "openproject-repo/{{ .Values.charts.openproject.name }}"
version: "{{ .Values.charts.openproject.version }}"
wait: true
waitForJobs: true
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.openproject.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "openproject"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -28,13 +28,11 @@ environment:
# https://www.openproject.org/docs/installation-and-operations/configuration/environment/
OPENPROJECT_LOG__LEVEL: {{ if .Values.debug.enabled }}"debug"{{ else }}"warn"{{ end }}
OPENPROJECT_LOGIN__REQUIRED: "true"
OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin"
OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true"
OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak"
OPENPROJECT_PER__PAGE__OPTIONS: "20, 50, 100, 200"
OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp"
OPENPROJECT_SMTP__AUTHENTICATION: "plain"
OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "peer"
OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: "desc"
# Details: https://www.openproject-edge.com/docs/installation-and-operations/configuration/#seeding-ldap-connections
OPENPROJECT_SEED_LDAP_OPENDESK_HOST: {{ .Values.ldap.host | quote }}
@@ -60,16 +58,22 @@ environment:
OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: {{ .Values.secrets.openproject.apiAdminPassword | quote }}
OPENPROJECT_SOUVAP__NAVIGATION__SECRET: {{ .Values.secrets.centralnavigation.apiKey | quote }}
OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/navigation.json?base=https%3A//{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
OPENPROJECT_SMTP__DOMAIN: {{ .Values.global.domain | quote }}
OPENPROJECT_SMTP__DOMAIN: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
OPENPROJECT_SMTP__USER__NAME: {{ .Values.smtp.username | quote }}
OPENPROJECT_SMTP__PASSWORD: {{ .Values.smtp.password | quote }}
OPENPROJECT_SMTP__PORT: {{ .Values.smtp.port | quote }}
OPENPROJECT_SMTP__SSL: "false" # (default=false)
OPENPROJECT_SMTP__ADDRESS: {{ .Values.smtp.host | quote }}
OPENPROJECT_MAIL__FROM: "do-not-reply@{{ .Values.global.domain }}"
OPENPROJECT_SMTP__AUTHENTICATION: "plain"
OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "peer"
OPENPROJECT_MAIL__FROM: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}"
OPENPROJECT_HOME__URL: {{ printf "https://%s.%s/" .Values.global.hosts.univentionManagementStack .Values.global.domain | quote }}
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/"
{{- if .Values.enterprise.openproject.token }}
OPENPROJECT_ENTERPRISE__TOKEN: {{ .Values.enterprise.openproject.token | quote }}
{{- end }}
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.openproject.registry | quote }}
@@ -128,7 +132,7 @@ openproject:
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
identifier: "opendesk-openproject"
provider: "keycloak"
scope: "[openid,opendesk]"
scope: "[openid,opendesk-openproject-scope]"
secret: {{ .Values.secrets.keycloak.clientSecret.openproject | quote }}
tokenEndpoint: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
userinfoEndpoint: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
@@ -138,6 +142,13 @@ openproject:
useTmpVolumes: true
ingress:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.openproject }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}"
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.openproject }}"
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}s"
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.openproject }}s"
host: "{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}"
enabled: {{ .Values.ingress.enabled }}
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
@@ -154,12 +165,14 @@ resources:
s3:
enabled: true
directUploads: {{ .Values.objectstores.openproject.directUploads }}
enableSignatureV4Streaming: {{ .Values.objectstores.openproject.enableSignatureV4Streaming }}
endpoint: {{ .Values.objectstores.openproject.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
host: {{ .Values.objectstores.openproject.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
pathStyle: {{ .Values.objectstores.openproject.pathStyle | quote }}
pathStyle: {{ .Values.objectstores.openproject.pathStyle }}
region: {{ .Values.objectstores.openproject.region | quote }}
bucketName: {{ .Values.objectstores.openproject.bucket | quote }}
use_iam_profile: {{ .Values.objectstores.openproject.useIAMProfile | default "false" | quote }}
useIamProfile: {{ .Values.objectstores.openproject.useIamProfile }}
auth:
accessKeyId: {{ .Values.objectstores.openproject.username | quote }}
secretAccessKey: {{ .Values.objectstores.openproject.secretKey | default .Values.secrets.minio.openprojectUser | quote }}

View File

@@ -0,0 +1,24 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# OX Connector
- name: "ox-connector-repo"
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/\
{{ .Values.charts.oxConnector.repository }}"
releases:
- name: "ox-connector"
chart: "ox-connector-repo/{{ .Values.charts.oxConnector.name }}"
version: "{{ .Values.charts.oxConnector.version }}"
values:
- "values-oxconnector.yaml.gotmpl"
installed: {{ .Values.oxConnector.enabled }}
commonLabels:
deploy-stage: "component-2"
component: "provisioning"
...

View File

@@ -1,27 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# OX Connector
- name: "ox-connector-repo"
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/\
{{ .Values.charts.oxConnector.repository }}"
releases:
- name: "ox-connector"
chart: "ox-connector-repo/{{ .Values.charts.oxConnector.name }}"
version: "{{ .Values.charts.oxConnector.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-oxconnector.yaml.gotmpl"
installed: {{ .Values.oxConnector.enabled }}
commonLabels:
deploy-stage: "component-2"
component: "provisioning"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -0,0 +1,208 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# openDesk Otterize
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-otterize
- name: "otterize-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.otterize.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/\
{{ .Values.charts.otterize.repository }}"
# openDesk Home
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-home
- name: "home-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.home.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.home.registry }}/\
{{ .Values.charts.home.repository }}"
# openDesk Certificates
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
- name: "certificates-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.certificates.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/\
{{ .Values.charts.certificates.repository }}"
# openDesk PostgreSQL
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
- name: "postgresql-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.postgresql.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/\
{{ .Values.charts.postgresql.repository }}"
# openDesk MariaDB
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
- name: "mariadb-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.mariadb.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/\
{{ .Values.charts.mariadb.repository }}"
# openDesk Postfix
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
- name: "postfix-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.postfix.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/\
{{ .Values.charts.postfix.repository }}"
# openDesk ClamAV
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
- name: "clamav-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.clamav.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/\
{{ .Values.charts.clamav.repository }}"
- name: "clamav-simple-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.clamavSimple.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/\
{{ .Values.charts.clamavSimple.repository }}"
# VMWare Bitnami
# Source: https://github.com/bitnami/charts/
- name: "memcached-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.memcached.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/\
{{ .Values.charts.memcached.repository }}"
- name: "redis-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.redis.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/\
{{ .Values.charts.redis.repository }}"
- name: "minio-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.minio.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/\
{{ .Values.charts.minio.repository }}"
releases:
- name: "opendesk-otterize"
chart: "otterize-repo/{{ .Values.charts.otterize.name }}"
version: "{{ .Values.charts.otterize.version }}"
values:
- "values-otterize.yaml.gotmpl"
installed: {{ .Values.security.otterizeIntents.enabled }}
timeout: 900
- name: "opendesk-home"
chart: "home-repo/{{ .Values.charts.home.name }}"
version: "{{ .Values.charts.home.version }}"
values:
- "values-home.yaml.gotmpl"
installed: {{ .Values.home.enabled }}
- name: "opendesk-certificates"
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
version: "{{ .Values.charts.certificates.version }}"
values:
- "values-certificates.yaml.gotmpl"
installed: {{ .Values.certificates.enabled }}
timeout: 900
- name: "redis"
chart: "redis-repo/{{ .Values.charts.redis.name }}"
version: "{{ .Values.charts.redis.version }}"
values:
- "values-redis.yaml.gotmpl"
installed: {{ .Values.redis.enabled }}
timeout: 900
- name: "memcached"
chart: "memcached-repo/{{ .Values.charts.memcached.name }}"
version: "{{ .Values.charts.memcached.version }}"
values:
- "values-memcached.yaml.gotmpl"
installed: {{ .Values.memcached.enabled }}
timeout: 900
- name: "postgresql"
chart: "postgresql-repo/{{ .Values.charts.postgresql.name }}"
version: "{{ .Values.charts.postgresql.version }}"
values:
- "values-postgresql.yaml.gotmpl"
installed: {{ .Values.postgresql.enabled }}
timeout: 900
- name: "mariadb"
chart: "mariadb-repo/{{ .Values.charts.mariadb.name }}"
version: "{{ .Values.charts.mariadb.version }}"
values:
- "values-mariadb.yaml.gotmpl"
installed: {{ .Values.mariadb.enabled }}
timeout: 900
- name: "postfix"
chart: "postfix-repo/{{ .Values.charts.postfix.name }}"
version: "{{ .Values.charts.postfix.version }}"
values:
- "values-postfix.yaml.gotmpl"
installed: {{ .Values.postfix.enabled }}
timeout: 900
- name: "clamav"
chart: "clamav-repo/{{ .Values.charts.clamav.name }}"
version: "{{ .Values.charts.clamav.version }}"
values:
- "values-clamav-distributed.yaml.gotmpl"
installed: {{ .Values.clamavDistributed.enabled }}
timeout: 900
- name: "clamav-simple"
chart: "clamav-simple-repo/{{ .Values.charts.clamavSimple.name }}"
version: "{{ .Values.charts.clamavSimple.version }}"
values:
- "values-clamav-simple.yaml.gotmpl"
installed: {{ .Values.clamavSimple.enabled }}
timeout: 900
- name: "minio"
chart: "minio-repo/{{ .Values.charts.minio.name }}"
version: "{{ .Values.charts.minio.version }}"
values:
- "values-minio.yaml.gotmpl"
installed: {{ .Values.minio.enabled }}
timeout: 900
commonLabels:
deploy-stage: "services"
component: "services"
...

View File

@@ -5,208 +5,8 @@
bases:
- "../../bases/environments.yaml"
---
repositories:
# openDesk Otterize
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-otterize
- name: "otterize-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.otterize.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/\
{{ .Values.charts.otterize.repository }}"
# openDesk Home
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-home
- name: "home-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.home.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.home.registry }}/\
{{ .Values.charts.home.repository }}"
# openDesk Certificates
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
- name: "certificates-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.certificates.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/\
{{ .Values.charts.certificates.repository }}"
# openDesk PostgreSQL
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
- name: "postgresql-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.postgresql.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/\
{{ .Values.charts.postgresql.repository }}"
# openDesk MariaDB
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
- name: "mariadb-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.mariadb.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/\
{{ .Values.charts.mariadb.repository }}"
# openDesk Postfix
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
- name: "postfix-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.postfix.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/\
{{ .Values.charts.postfix.repository }}"
# openDesk ClamAV
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
- name: "clamav-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.clamav.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/\
{{ .Values.charts.clamav.repository }}"
- name: "clamav-simple-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.clamavSimple.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/\
{{ .Values.charts.clamavSimple.repository }}"
# VMWare Bitnami
# Source: https://github.com/bitnami/charts/
- name: "memcached-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.memcached.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/\
{{ .Values.charts.memcached.repository }}"
- name: "redis-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.redis.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/\
{{ .Values.charts.redis.repository }}"
- name: "minio-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.minio.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/\
{{ .Values.charts.minio.repository }}"
releases:
- name: "opendesk-otterize"
chart: "otterize-repo/{{ .Values.charts.otterize.name }}"
version: "{{ .Values.charts.otterize.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-otterize.yaml.gotmpl"
installed: {{ .Values.security.otterizeIntents.enabled }}
timeout: 900
- name: "opendesk-home"
chart: "home-repo/{{ .Values.charts.home.name }}"
version: "{{ .Values.charts.home.version }}"
values:
- "values-home.yaml.gotmpl"
installed: {{ .Values.home.enabled }}
- name: "opendesk-certificates"
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
version: "{{ .Values.charts.certificates.version }}"
values:
- "values-certificates.yaml.gotmpl"
installed: {{ .Values.certificates.enabled }}
timeout: 900
- name: "redis"
chart: "redis-repo/{{ .Values.charts.redis.name }}"
version: "{{ .Values.charts.redis.version }}"
values:
- "values-redis.yaml.gotmpl"
installed: {{ .Values.redis.enabled }}
timeout: 900
- name: "memcached"
chart: "memcached-repo/{{ .Values.charts.memcached.name }}"
version: "{{ .Values.charts.memcached.version }}"
values:
- "values-memcached.yaml.gotmpl"
installed: {{ .Values.memcached.enabled }}
timeout: 900
- name: "postgresql"
chart: "postgresql-repo/{{ .Values.charts.postgresql.name }}"
version: "{{ .Values.charts.postgresql.version }}"
values:
- "values-postgresql.yaml.gotmpl"
installed: {{ .Values.postgresql.enabled }}
timeout: 900
- name: "mariadb"
chart: "mariadb-repo/{{ .Values.charts.mariadb.name }}"
version: "{{ .Values.charts.mariadb.version }}"
values:
- "values-mariadb.yaml.gotmpl"
installed: {{ .Values.mariadb.enabled }}
timeout: 900
- name: "postfix"
chart: "postfix-repo/{{ .Values.charts.postfix.name }}"
version: "{{ .Values.charts.postfix.version }}"
values:
- "values-postfix.yaml.gotmpl"
installed: {{ .Values.postfix.enabled }}
timeout: 900
- name: "clamav"
chart: "clamav-repo/{{ .Values.charts.clamav.name }}"
version: "{{ .Values.charts.clamav.version }}"
values:
- "values-clamav-distributed.yaml.gotmpl"
installed: {{ .Values.clamavDistributed.enabled }}
timeout: 900
- name: "clamav-simple"
chart: "clamav-simple-repo/{{ .Values.charts.clamavSimple.name }}"
version: "{{ .Values.charts.clamavSimple.version }}"
values:
- "values-clamav-simple.yaml.gotmpl"
installed: {{ .Values.clamavSimple.enabled }}
timeout: 900
- name: "minio"
chart: "minio-repo/{{ .Values.charts.minio.name }}"
version: "{{ .Values.charts.minio.version }}"
values:
- "values-minio.yaml.gotmpl"
installed: {{ .Values.minio.enabled }}
timeout: 900
commonLabels:
deploy-stage: "services"
component: "services"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -5,7 +5,6 @@ SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
synapseDomain: {{ .Values.global.matrixDomain | quote }}
hosts:
{{ .Values.global.hosts | toYaml | nindent 4 }}
@@ -13,7 +12,7 @@ issuerRef:
name: {{ .Values.certificate.issuerRef.name | quote }}
cleanup:
keepRessourceOnDelete: {{ .Values.cleanup.keepRessourceOnDelete }}
keepRessourceOnDelete: {{ .Values.debug.cleanup.keepRessourceOnDelete }}
wildcard: {{ .Values.certificate.wildcard }}
...

View File

@@ -2,7 +2,7 @@
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
containerSecurityContext:
allowPrivilegeEscalation: false

View File

@@ -67,9 +67,9 @@ mode: {{ if gt .Values.replicas.minio 1 }}"distributed"{{ else }}"standalone"{{
metrics:
serviceMonitor:
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
enabled: {{ .Values.monitoring.prometheus.serviceMonitors.enabled }}
additionalLabels:
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
{{ .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
networkPolicy:
enabled: false
@@ -89,16 +89,43 @@ provisioning:
extraCommands:
- "mc anonymous set download provisioning/ums/portal-assets"
buckets:
- name: {{ .Values.objectstores.migrations.bucket | quote }}
versioning: false
withLock: false
- name: {{ .Values.objectstores.nextcloud.bucket | quote }}
versioning: true
withLock: false
- name: {{ .Values.objectstores.openproject.bucket | quote }}
versioning: true
withLock: false
- name: {{ .Values.objectstores.univentionManagementStack.bucket | quote }}
versioning: false
withLock: false
- name: {{ .Values.objectstores.nextcloud.bucket | quote }}
versioning: true
withLock: false
policies:
- name: "migrations-bucket-policy"
statements:
- resources:
- "arn:aws:s3:::migrations"
effect: "Allow"
actions:
- "s3:*"
- resources:
- "arn:aws:s3:::migrations/*"
effect: "Allow"
actions:
- "s3:*"
- name: "nextcloud-bucket-policy"
statements:
- resources:
- "arn:aws:s3:::nextcloud"
effect: "Allow"
actions:
- "s3:*"
- resources:
- "arn:aws:s3:::nextcloud/*"
effect: "Allow"
actions:
- "s3:*"
- name: "openproject-bucket-policy"
statements:
- resources:
@@ -123,19 +150,19 @@ provisioning:
effect: "Allow"
actions:
- "s3:*"
- name: "nextcloud-bucket-policy"
statements:
- resources:
- "arn:aws:s3:::nextcloud"
effect: "Allow"
actions:
- "s3:*"
- resources:
- "arn:aws:s3:::nextcloud/*"
effect: "Allow"
actions:
- "s3:*"
users:
- username: {{ .Values.objectstores.migrations.username | quote }}
password: {{ .Values.secrets.minio.migrationsUser | quote }}
disabled: false
policies:
- "migrations-bucket-policy"
setPolicies: true
- username: {{ .Values.objectstores.nextcloud.username | quote }}
password: {{ .Values.secrets.minio.nextcloudUser | quote }}
disabled: false
policies:
- "nextcloud-bucket-policy"
setPolicies: true
- username: {{ .Values.objectstores.openproject.username | quote }}
password: {{ .Values.secrets.minio.openprojectUser | quote }}
disabled: false
@@ -148,12 +175,6 @@ provisioning:
policies:
- "ums-bucket-policy"
setPolicies: true
- username: {{ .Values.objectstores.nextcloud.username | quote }}
password: {{ .Values.secrets.minio.nextcloudUser | quote }}
disabled: false
policies:
- "nextcloud-bucket-policy"
setPolicies: true
resources:
{{ .Values.resources.minio | toYaml | nindent 4 }}

View File

@@ -41,7 +41,7 @@ podSecurityContext:
postfix:
amavisHost: ""
amavisPortIn: ""
domain: {{ .Values.global.mailDomain | default .Values.global.domain }}
domain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
hostname: "postfix"
inetProtocols: "ipv4"
milterDefaultAction: "accept"
@@ -50,7 +50,7 @@ postfix:
content:
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
rspamdHost: ""
relayHost: {{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}
relayHost: {{ if .Values.smtp.host }}{{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}{{ else }}""{{ end }}
relayNets: {{ .Values.cluster.networking.cidr | quote}}
smtpSASLAuthEnable: "yes"
smtpSASLPasswordMaps: "lmdb:/etc/postfix/sasl_passwd.map"
@@ -67,7 +67,7 @@ postfix:
{{- else if .Values.clamavSimple.enabled }}
smtpdMilters: "inet:clamav-simple:7357"
{{- end }}
virtualMailboxDomains: {{ .Values.global.mailDomain | default .Values.global.domain }}
virtualMailboxDomains: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
virtualTransport: "lmtps:dovecot:24"
replicaCount: {{ .Values.replicas.postfix }}

View File

@@ -0,0 +1,48 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# Univention Management Stack Umbrella Chart
- name: "ums"
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
verify: {{ .Values.charts.ums.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url:
"{{ .Values.global.helmRegistry | default .Values.charts.ums.registry }}/\
{{ .Values.charts.ums.repository }}"
# OpenDesk Keycloak Bootstrap Chart
- name: "opendesk-keycloak-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.opendeskKeycloakBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/\
{{ .Values.charts.opendeskKeycloakBootstrap.repository }}"
releases:
# Univention Management Stack Umbrella Chart
- name: "ums"
chart: "ums/{{ .Values.charts.ums.name }}"
version: "{{ .Values.charts.ums.version }}"
values:
- "values-umbrella.yaml.gotmpl"
installed: {{ .Values.univentionManagementStack.enabled }}
timeout: 900
# OpenDesk Keycloak Bootstrap Chart
- name: "opendesk-keycloak-bootstrap"
chart: "opendesk-keycloak-bootstrap-repo/{{ .Values.charts.opendeskKeycloakBootstrap.name }}"
version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}"
values:
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
needs:
- "ums"
installed: {{ .Values.univentionManagementStack.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "univention-management-stack"
...

View File

@@ -1,51 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# Univention Management Stack Umbrella Chart
- name: "ums"
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
verify: {{ .Values.charts.ums.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url:
"{{ .Values.global.helmRegistry | default .Values.charts.ums.registry }}/\
{{ .Values.charts.ums.repository }}"
# OpenDesk Keycloak Bootstrap Chart
- name: "opendesk-keycloak-bootstrap-repo"
keyring: "../../files/gpg-pubkeys/opencode.gpg"
verify: {{ .Values.charts.opendeskKeycloakBootstrap.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/\
{{ .Values.charts.opendeskKeycloakBootstrap.repository }}"
releases:
# Univention Management Stack Umbrella Chart
- name: "ums"
chart: "ums/{{ .Values.charts.ums.name }}"
version: "{{ .Values.charts.ums.version }}"
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values-umbrella.yaml.gotmpl"
installed: {{ .Values.univentionManagementStack.enabled }}
timeout: 900
# OpenDesk Keycloak Bootstrap Chart
- name: "opendesk-keycloak-bootstrap"
chart: "opendesk-keycloak-bootstrap-repo/{{ .Values.charts.opendeskKeycloakBootstrap.name }}"
version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}"
values:
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
needs:
- "ums"
installed: {{ .Values.univentionManagementStack.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "univention-management-stack"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -17,10 +17,15 @@ image:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.cleanup.keepPVCOnDelete }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.debug.cleanup.keepPVCOnDelete }}
config:
custom:
clientScopes:
{{ .Values.functional.authentication.oidc.clientScopes | toYaml | nindent 6 }}
clients:
{{ .Values.functional.authentication.oidc.clients | toYaml | nindent 6 }}
keycloak:
adminUser: "kcadmin"
adminPassword: {{ .Values.secrets.keycloak.adminPassword | quote }}
@@ -29,14 +34,20 @@ config:
enabled: true
internalBaseUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080"
twoFactorSettings:
additionalGroups: {{ .Values.authentication.twoFactor.groups }}
custom:
additionalGroups: {{ .Values.functional.authentication.twoFactor.groups }}
opendesk:
# We use client specific scopes as we bind them to Keycloak role membership which itself is linked
# to LDAP group membership to ensure a user cannot access an application without the required
# group membership.
# ToDo:
# - Jitsi does currently not care if it gets scopes/claims as long as the user is authenticated.
clientScopes:
- name: "read_contacts"
protocol: "openid-connect"
- name: "write_contacts"
protocol: "openid-connect"
- name: "opendesk"
- name: "opendesk-openproject-scope"
description: "Scope for the claims required by openDesk's OpenProject instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
@@ -61,6 +72,306 @@ config:
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "opendeskProjectmanagementAdmin"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "opendeskProjectmanagementAdmin"
id.token.claim: true
access.token.claim: true
claim.name: "openproject_admin"
jsonType.label: "String"
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "given name"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "firstName"
id.token.claim: true
access.token.claim: true
claim.name: "given_name"
jsonType.label: "String"
- name: "family name"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "lastName"
id.token.claim: true
access.token.claim: true
claim.name: "family_name"
jsonType.label: "String"
- name: "opendesk-jitsi-scope"
description: "Scope for the claims required by openDesk's Jitsi instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "full name"
protocol: "openid-connect"
protocolMapper: "oidc-full-name-mapper"
consentRequired: false
config:
id.token.claim: true
introspection.token.claim: true
access.token.claim: true
userinfo.token.claim: true
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "opendesk-nextcloud-scope"
description: "Scope for the claims required by openDesk's Nextcloud instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "context"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "oxContextIDNum"
id.token.claim: true
access.token.claim: true
claim.name: "context"
jsonType.label: "String"
- name: "opendesk-matrix-scope"
description: "Scope for the claims required by openDesk's Matrix instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "full name"
protocol: "openid-connect"
protocolMapper: "oidc-full-name-mapper"
consentRequired: false
config:
id.token.claim: true
introspection.token.claim: true
access.token.claim: true
userinfo.token.claim: true
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "opendesk-xwiki-scope"
description: "Scope for the claims required by openDesk's XWiki instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "full name"
protocol: "openid-connect"
protocolMapper: "oidc-full-name-mapper"
consentRequired: false
config:
id.token.claim: true
introspection.token.claim: true
access.token.claim: true
userinfo.token.claim: true
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
introspection.token.claim: true
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "opendesk-dovecot-scope"
description: "Scope for the claims required by openDesk's Dovecot instance."
protocol: "openid-connect"
protocolMappers:
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
- name: "opendesk-oxappsuite-scope"
description: "Scope for the claims required by openDesk's OX Appuite instance."
protocol: "openid-connect"
protocolMappers:
- name: "context"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "oxContextIDNum"
id.token.claim: true
access.token.claim: true
claim.name: "context"
jsonType.label: "String"
- name: "opendesk_useruuid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "entryUUID"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_useruuid"
jsonType.label: "String"
- name: "opendesk_username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "opendesk_username"
jsonType.label: "String"
clients:
- name: "opendesk-dovecot"
clientId: "opendesk-dovecot"
@@ -74,7 +385,7 @@ config:
attributes:
backchannel.logout.session.required: false
defaultClientScopes:
- "opendesk"
- "opendesk-dovecot-scope"
- name: "opendesk-intercom"
clientId: "opendesk-intercom"
protocol: "openid-connect"
@@ -128,7 +439,6 @@ config:
claim.name: "phoenixusername"
jsonType.label: "String"
defaultClientScopes:
- "opendesk"
- "offline_access"
- name: "opendesk-jitsi"
clientId: "opendesk-jitsi"
@@ -142,8 +452,7 @@ config:
fullScopeAllowed: true
authorizationServicesEnabled: false
defaultClientScopes:
- "opendesk"
- "profile"
- "opendesk-jitsi-scope"
- name: "opendesk-matrix"
clientId: "opendesk-matrix"
protocol: "openid-connect"
@@ -165,12 +474,9 @@ config:
backchannel.logout.url: "https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/_synapse/client/oidc/backchannel_logout"
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
defaultClientScopes:
- "opendesk"
optionalClientScopes:
- "email"
- "profile"
# This is a temporary OIDC client for matrix, as the OIDC logout still uses "matrix" as client ID. Unless that
# is solved and also is able to use "opendesk-matrix" we keep that dummy client that
- "opendesk-matrix-scope"
# The following is a temporary OIDC client for matrix, as the OIDC logout still uses "matrix" as client ID.
# Unless that is solved and also is able to use "opendesk-matrix" we keep that dummy client that
- name: "matrix"
clientId: "matrix"
protocol: "openid-connect"
@@ -183,6 +489,8 @@ config:
authorizationServicesEnabled: false
attributes:
post.logout.redirect.uris: "https://{{ .Values.global.hosts.element }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
defaultClientScopes: []
optionalClientScopes: []
- name: "opendesk-nextcloud"
clientId: "opendesk-nextcloud"
protocol: "openid-connect"
@@ -199,21 +507,8 @@ config:
backchannel.logout.session.required: true
backchannel.logout.url: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/index.php/apps/user_oidc/backchannel-logout/opendesk"
post.logout.redirect.uris: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
protocolMappers:
- name: "context"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "oxContextIDNum"
id.token.claim: true
access.token.claim: true
claim.name: "context"
jsonType.label: "String"
defaultClientScopes:
- "opendesk"
- "email"
- "opendesk-nextcloud-scope"
- "read_contacts"
- "write_contacts"
- name: "opendesk-openproject"
@@ -233,22 +528,8 @@ config:
backchannel.logout.session.required: true
backchannel.logout.url: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/auth/keycloak/backchannel-logout"
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openproject }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
protocolMappers:
- name: "opendeskProjectmanagementAdmin"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "opendeskProjectmanagementAdmin"
id.token.claim: true
access.token.claim: true
claim.name: "openproject_admin"
jsonType.label: "String"
defaultClientScopes:
- "opendesk"
- "email"
- "profile"
- "opendesk-openproject-scope"
- name: "opendesk-oxappsuite"
clientId: "opendesk-oxappsuite"
protocol: "openid-connect"
@@ -265,20 +546,8 @@ config:
backchannel.logout.session.required: true
backchannel.logout.url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/ajax/oidc/backchannel_logout"
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
protocolMappers:
- name: "context"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "oxContextIDNum"
id.token.claim: true
access.token.claim: true
claim.name: "context"
jsonType.label: "String"
defaultClientScopes:
- "opendesk"
- "opendesk-oxappsuite-scope"
- "read_contacts"
- "write_contacts"
- name: "opendesk-xwiki"
@@ -298,10 +567,297 @@ config:
backchannel.logout.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/oidc/authenticator/backchannel_logout"
post.logout.redirect.uris: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
defaultClientScopes:
- "opendesk"
- "address"
- "email"
- "opendesk-xwiki-scope"
- name: "guardian-management-api"
clientId: "guardian-management-api"
rootUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
baseUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
protocol: "openid-connect"
publicClient: false
clientAuthenticatorType: "client-secret"
secret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
redirectUris:
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/guardian/*"
fullScopeAllowed: true
standardFlowEnabled: true
implicitFlowEnabled: false
directAccessGrantsEnabled: false
serviceAccountsEnabled: true
protocolMappers:
- name: "Client Host"
protocol: "openid-connect"
protocolMapper: "oidc-usersessionmodel-note-mapper"
consentRequired: false
config:
user.session.note: "clientHost"
userinfo.token.claim: true
id.token.claim: true
access.token.claim: true
claim.name: "clientHost"
jsonType.label: "String"
- name: "Client ID"
protocol: "openid-connect"
protocolMapper: "oidc-usersessionmodel-note-mapper"
consentRequired: false
config:
user.session.note: "client_id"
userinfo.token.claim: true
id.token.claim: true
access.token.claim: true
claim.name: "client_id"
jsonType.label: "String"
- name: "guardian-audience"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian"
userinfo.token.claim: false
id.token.claim: false
access.token.claim: true
- name: "audiencemap"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian-cli"
userinfo.token.claim: true
id.token.claim: true
access.token.claim: true
- name: "dn"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: false
user.attribute: "LDAP_ENTRY_DN"
id.token.claim: false
access.token.claim: true
claim.name: "dn"
jsonType.label: "String"
- name: "username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "username"
id.token.claim: true
access.token.claim: true
claim.name: "preferred_username"
jsonType.label: "String"
- name: "uid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "uid"
jsonType.label: "String"
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "Client IP Address"
protocol: "openid-connect"
protocolMapper: "oidc-usersessionmodel-note-mapper"
consentRequired: false
config:
user.session.note: "clientAddress"
userinfo.token.claim: true
id.token.claim: true
access.token.claim: true
claim.name: "clientAddress"
jsonType.label: "String"
- name: "guardian-scripts"
clientId: "guardian-scripts"
description: ""
rootUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
adminUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
baseUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
surrogateAuthRequired: false
enabled: true
alwaysDisplayInConsole: false
clientAuthenticatorType: "client-secret"
redirectUris:
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/guardian/*"
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/guardian/*"
webOrigins:
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
bearerOnly: false
consentRequired: false
standardFlowEnabled: true
implicitFlowEnabled: false
directAccessGrantsEnabled: true
serviceAccountsEnabled: false
publicClient: true
frontchannelLogout: false
protocol: "openid-connect"
fullScopeAllowed: true
protocolMappers:
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "guardian-audience"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian"
id.token.claim: false
access.token.claim: true
userinfo.token.claim: false
- name: "username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "username"
id.token.claim: true
access.token.claim: true
claim.name: "preferred_username"
jsonType.label: "String"
- name: "uid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "uid"
jsonType.label: "String"
- name: "audiencemap"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian-scripts"
id.token.claim: true
access.token.claim: true
userinfo.token.claim: true
- name: "dn"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
aggregate.attrs: false
multivalued: false
userinfo.token.claim: false
user.attribute: "LDAP_ENTRY_DN"
id.token.claim: false
access.token.claim: true
claim.name: "dn"
jsonType.label: "String"
defaultClientScopes:
- "web-origins"
- "acr"
- "roles"
- "profile"
- "email"
optionalClientScopes:
- "address"
- "phone"
- "offline_access"
- "microprofile-jwt"
- name: "guardian-ui"
clientId: "guardian-ui"
rootUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
baseUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
clientAuthenticatorType: "client-secret"
redirectUris:
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/guardian/*"
standardFlowEnabled: true
publicClient: true
implicitFlowEnabled: false
directAccessGrantsEnabled: false
serviceAccountsEnabled: false
protocol: "openid-connect"
fullScopeAllowed: true
protocolMappers:
- name: "uid"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "uid"
id.token.claim: true
access.token.claim: true
claim.name: "uid"
jsonType.label: "String"
- name: "username"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "username"
id.token.claim: true
access.token.claim: true
claim.name: "preferred_username"
jsonType.label: "String"
- name: "dn"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-attribute-mapper"
consentRequired: false
config:
userinfo.token.claim: "false"
user.attribute: "LDAP_ENTRY_DN"
id.token.claim: false
access.token.claim: true
claim.name: "dn"
jsonType.label: "String"
- name: "audiencemap"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian"
id.token.claim: true
access.token.claim: true
userinfo.token.claim: true
- name: "email"
protocol: "openid-connect"
protocolMapper: "oidc-usermodel-property-mapper"
consentRequired: false
config:
userinfo.token.claim: true
user.attribute: "email"
id.token.claim: true
access.token.claim: true
claim.name: "email"
jsonType.label: "String"
- name: "guardian-audience"
protocol: "openid-connect"
protocolMapper: "oidc-audience-mapper"
consentRequired: false
config:
included.client.audience: "guardian"
id.token.claim: false
access.token.claim: true
userinfo.token.claim: false
containerSecurityContext:
allowPrivilegeEscalation: false

View File

@@ -13,7 +13,7 @@ tags:
pre-release: true
guardian:
enabled: false
enabled: true
authorizationApi:
podAnnotations:
intents.otterize.com/service-name: "ums-guardian-authorization-api"
@@ -32,8 +32,7 @@ guardian:
oauthAdapterWellKnownUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080/realms/{{ .Values.platform.realm }}/.well-known/openid-configuration"
opaAdapterUrl: "http://ums-guardian-open-policy-agent/"
udmDataAdapterUrl: "http://ums-udm-rest-api/udm/"
udmDataAdapterUsername: "cn=admin"
udmDataAdapterPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
secretRef: "ums-guardian-udm-secret"
ingress:
enabled: false
resources:
@@ -56,7 +55,8 @@ guardian:
guardianManagementLoggingStructured: false
guardianManagementAdapterAuthorizationApiUrl: "http://ums-guardian-authorization-api/guardian/authorization"
oauthAdapterWellKnownUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080/realms/{{ .Values.platform.realm }}/.well-known/openid-configuration"
secretRef: "guardian-keycloak-client-secret"
guardianManagementBaseUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
secretRef: "ums-guardian-keycloak-client-secret"
ingress:
enabled: false
resources:
@@ -76,9 +76,6 @@ guardian:
{{- end }}
config:
viteKeycloakAuthenticationAdapterClientId: "guardian-ui"
viteManagementUiAdapterAuthenticationPort: "keycloak"
viteManagementUiAdapterDataPort: "api"
viteApiDataAdapterUri: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/guardian/management"
viteKeycloakAuthenticationAdapterSsoUri: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
viteKeycloakAuthenticationAdapterRealm: {{ .Values.platform.realm | quote }}
@@ -109,7 +106,8 @@ guardian:
provisioning:
enabled: true
# Using openDesk keycloak provisioning
enabled: false
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.umsGuardianProvisioning.registry | quote }}
repository: {{ .Values.images.umsGuardianProvisioning.repository | quote }}
@@ -123,10 +121,16 @@ guardian:
nubusBaseUrl: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
keycloak:
url: "http://ums-keycloak:8080"
fqdn: "id.uv-example.gaia.open-desk.cloud"
realm: "opendesk"
fqdn: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
realm: {{ .Values.platform.realm | quote }}
admin: "kcadmin"
credentialSecretName: "guardian-keycloak-secret"
credentialSecret:
name: "ums-guardian-keycloak-secret"
key: "adminPassword"
managementApi:
credentialSecret:
name: "ums-guardian-keycloak-secret"
key: "managementApiClientSecret"
postgresql:
bundled: false
@@ -142,16 +146,6 @@ ldap-notifier:
enabled: true
podAnnotations:
intents.otterize.com/service-name: "ums-ldap-notifier"
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: statefulset.kubernetes.io/pod-name
operator: In
values:
- ums-ldap-server-primary-0
topologyKey: kubernetes.io/hostname
image:
registry: {{ .Values.global.imageRegistry | default .Values.images.umsLdapNotifier.registry | quote }}
repository: {{ .Values.images.umsLdapNotifier.repository | quote }}
@@ -171,22 +165,13 @@ ldap-notifier:
{{- .Values.seLinuxOptions.umsPortalListener | toYaml | nindent 6 }}
volumes:
claims:
shared-data: "shared-data-ums-ldap-server-primary-0"
shared-run: "shared-run-ums-ldap-server-primary-0"
shared-data: "shared-data-ums-ldap-server-0"
shared-run: "shared-run-ums-ldap-server-0"
ldap-server:
enabled: true
replicaCountPrimary: 2
replicaCountSecondary: 3
replicaCountProxy: 3
additionalAnnotations:
intents.otterize.com/service-name: "ums-ldap-server"
podAnnotationsPrimary:
intents.otterize.com/service-name: "ums-ldap-server-primary"
podAnnotationsSecondary:
intents.otterize.com/service-name: "ums-ldap-server-secondary"
podAnnotationsProxy:
intents.otterize.com/service-name: "ums-ldap-server"
replicaCount: {{ .Values.replicas.umsLdapServer }}
serviceAccount:
annotations:
@@ -246,12 +231,8 @@ ldap-server:
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
size: {{ .Values.persistence.size.univentionManagementStack.ldapServerData | quote }}
resourcesPrimary:
{{ .Values.resources.umsLdapServerPrimary | toYaml | nindent 4 }}
resourcesSecondary:
{{ .Values.resources.umsLdapServerSecondary | toYaml | nindent 4 }}
resourcesProxy:
{{ .Values.resources.umsLdapServerProxy | toYaml | nindent 4 }}
resources:
{{ .Values.resources.umsLdapServer | toYaml | nindent 4 }}
initResources:
{{ .Values.resources.umsLdapServerInit | toYaml | nindent 4 }}
@@ -366,7 +347,7 @@ portal-listener:
ucsInternalPath: "portal-data"
ldapBaseDn: {{ .Values.ldap.baseDn | quote }}
ldapHost: {{ .Values.ldap.hostPrimary | quote }}
ldapHost: {{ .Values.ldap.host | quote }}
ldapHostDn: {{ printf "%s,%s" "cn=admin" .Values.ldap.baseDn | quote }}
ldapSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
machineSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
@@ -600,7 +581,7 @@ udm-listener:
config:
debugLevel: "4"
ldapBaseDn: {{ .Values.ldap.baseDn | quote }}
ldapHost: {{ .Values.ldap.hostPrimary | quote }}
ldapHost: {{ .Values.ldap.host | quote }}
ldapHostDn: {{ printf "%s,%s" "cn=admin" .Values.ldap.baseDn | quote }}
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
ldapPort: "389"
@@ -632,10 +613,9 @@ stack-data-ums:
# The openDesk configuration brings its own UMC policies.
installUmcPolicies: false
domainname: {{ .Values.global.domain | quote }}
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }}
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
hostname: {{ .Values.global.hosts.univentionManagementStack | quote }}
ldapMasterHost: {{ .Values.ldap.hostPrimary | quote }}
ldapHost: {{ .Values.ldap.hostSecondary | quote }}
ldapHost: {{ .Values.ldap.host | quote }}
ldapBase: {{ .Values.ldap.baseDn | quote }}
ldapHostDn: {{ printf "%s,%s" "cn=admin" .Values.ldap.baseDn | quote }}
idpSamlMetadataUrl: {{ printf "http://ums-keycloak.%s.svc.%s:8080/realms/%s/protocol/saml/descriptor" .Release.Namespace .Values.cluster.networking.domain .Values.platform.realm | quote }}
@@ -674,7 +654,7 @@ stack-data-swp:
{{- end }}
externalDomainName: {{ .Values.global.domain | quote }}
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }}
externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
portalGroupwareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openxchange .Values.global.domain | quote }}
portalFileshareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.nextcloud .Values.global.domain | quote }}
@@ -694,9 +674,11 @@ stack-data-swp:
stackDataSwp:
udmApiPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
{{- if .Values.functional.admin.portal.deploymentInformation.enabled }}
systemInformation:
deployDate: "Deployed: {{ now | date "2006-01-02T15:04:05-0700" }}"
releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}"
{{- end }}
udmApiUser: "cn=admin"
udmApiUrl: "http://ums-udm-rest-api/udm/"
loadDevData: true
@@ -758,7 +740,7 @@ selfservice-listener:
selfserviceListener:
ldapBaseDn: {{ .Values.ldap.baseDn | quote }}
ldapHost: {{ .Values.ldap.hostPrimary | quote }}
ldapHost: {{ .Values.ldap.host | quote }}
ldapHostDn: {{ printf "%s,%s" "cn=admin" .Values.ldap.baseDn | quote }}
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
machineSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
@@ -1017,16 +999,6 @@ keycloak:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
config:
admin:
password: {{ .Values.secrets.keycloak.adminPassword | quote }}
database:
host: {{ .Values.databases.keycloak.host | quote }}
port: {{ .Values.databases.keycloak.port }}
user: {{ .Values.databases.keycloak.username | quote }}
database: {{ .Values.databases.keycloak.name | quote }}
existingSecret:
name: "ums-keycloak-postgresql-credentials"
key: "keycloakDatabasePassword"
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"WARN"{{ end }}
enableMetrics: true
# The availability of the admin console is already restricted through the path settings in the Keycloak Extensions
@@ -1034,6 +1006,22 @@ keycloak:
# through an own ingress.
exposeAdminConsole: false
postgresql:
connection:
host: {{ .Values.databases.keycloak.host | quote }}
port: {{ .Values.databases.keycloak.port }}
auth:
username: {{ .Values.databases.keycloak.username | quote }}
database: {{ .Values.databases.keycloak.name | quote }}
credentialSecret:
name: "ums-keycloak-postgresql-credentials"
key: "keycloakDatabasePassword"
keycloak:
auth:
username: "kcadmin"
password: {{ .Values.secrets.keycloak.adminPassword | quote }}
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
@@ -1074,8 +1062,8 @@ keycloak-bootstrap:
imagePullPolicy: {{ .Values.global.imagePullPolicy }}
cleanup:
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.cleanup.keepPVCOnDelete }}
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}
keepPVCOnDelete: {{ .Values.debug.cleanup.keepPVCOnDelete }}
keycloak:
connection:
@@ -1184,7 +1172,7 @@ keycloak-extensions:
ipProtectionEnable: true
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"WARN"{{ end }}
newDeviceLoginSubject: "New device login on your {{ .Values.theme.texts.productName }} account"
mailFrom: "noreply@{{ .Values.global.domain }}"
mailFrom: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
securityContext:
allowPrivilegeEscalation: false
capabilities:
@@ -1214,18 +1202,17 @@ keycloak-extensions:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imagePullSecrets: {{ .Values.global.imagePullSecrets }}
ingress:
annotations:
nginx.org/proxy-buffer-size: "8k"
nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"
paths:
{{- if .Values.debug.enabled }}
- pathType: "Prefix"
path: "/admin"
path: "/admin/"
{{- end }}
- pathType: "Prefix"
path: "/realms"
path: "/realms/"
- pathType: "Prefix"
path: "/resources"
path: "/js/"
- pathType: "Prefix"
path: "/resources/"
- pathType: "Prefix"
path: "/fingerprintjs"
- pathType: "Exact"
@@ -1331,6 +1318,21 @@ stack-gateway:
proxy_set_header X-Forwarded-Port $http_x_forwarded_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
{{ if .Values.functional.externalServices.nubus.udmRestApi.enabled }}
## udm-rest-api
location /univention/udm/ {
# The UDM Rest API does return on some endpoints a lot of headers
proxy_busy_buffers_size 128k;
proxy_buffers 4 128k;
proxy_buffer_size 64k;
rewrite ^/univention(/udm/.*)$ $1 break;
proxy_pass http://ums-udm-rest-api:80;
}
{{ end }}
## portal-frontend
# The frontend does not own "/univention/portal" nor
# "/univention/selfservice", only these two bits
@@ -1433,18 +1435,6 @@ stack-gateway:
}
## udm-rest-api
location /univention/udm/ {
# The UDM Rest API does return on some endpoints a lot of headers
proxy_busy_buffers_size 128k;
proxy_buffers 4 128k;
proxy_buffer_size 64k;
rewrite ^/univention(/udm/.*)$ $1 break;
proxy_pass http://ums-udm-rest-api:80;
}
## umc-gateway
location = /univention/languages.json {
proxy_pass http://ums-umc-gateway:80;
@@ -1458,7 +1448,13 @@ stack-gateway:
location /univention/js/ {
proxy_pass http://ums-umc-gateway:80;
}
location /univention/login/ {
location /univention/login/main.js {
proxy_pass http://ums-umc-gateway:80;
}
location /univention/login/LoginDialog.js {
proxy_pass http://ums-umc-gateway:80;
}
location /univention/login/i18n/ {
proxy_pass http://ums-umc-gateway:80;
}
location /univention/management/ {
@@ -1469,12 +1465,13 @@ stack-gateway:
}
## umc-server
location = /univention/auth {
rewrite ^/univention(/.*)$ $1 break;
proxy_pass http://ums-umc-server:80;
proxy_set_header X-UMC-HTTPS 'on';
}
### umc-server
## Do not support local authentication
#location = /univention/auth {
# rewrite ^/univention(/.*)$ $1 break;
# proxy_pass http://ums-umc-server:80;
# proxy_set_header X-UMC-HTTPS 'on';
#}
location /univention/logout {
rewrite ^/univention(/.*)$ $1 break;
proxy_pass http://ums-umc-server:80;
@@ -1528,15 +1525,15 @@ stack-gateway:
# }
## guardian
# location /univention/guardian/management-ui {
# proxy_pass http://ums-guardian-management-ui:80/univention/guardian/management-ui;
# }
# location /guardian/management {
# proxy_pass http://ums-guardian-management-api:80/guardian/management;
# }
# location /guardian/authorization {
# proxy_pass http://ums-guardian-authorization-api:80/guardian/authorization;
# }
location /univention/guardian/management-ui {
proxy_pass http://ums-guardian-management-ui:80/univention/guardian/management-ui;
}
location /guardian/management {
proxy_pass http://ums-guardian-management-api:80/guardian/management;
}
location /guardian/authorization {
proxy_pass http://ums-guardian-authorization-api:80/guardian/authorization;
}
## object storage (minio)
location /univention/portal/icons/entries/ {
@@ -1603,14 +1600,18 @@ extraSecrets:
stringData:
ldap.secret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
machine.secret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
- name: "ums-guardian-udm-secret"
stringData:
udmDataAdapterUsername: "cn=admin"
udmDataAdapterPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
- name: "ums-guardian-keycloak-client-secret"
stringData:
oauthAdapterM2mSecret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
- name: "ums-keycloak-postgresql-credentials"
stringData:
keycloakDatabasePassword: {{ .Values.databases.keycloak.password | default .Values.secrets.postgresql.keycloakUser | quote }}
- name: "guardian-keycloak-client-secret"
- name: "ums-guardian-keycloak-secret"
stringData:
oauthAdapterM2mSecret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
- name: "guardian-keycloak-secret"
stringData:
KEYCLOAK_ADMIN_PASSWORD: {{ .Values.secrets.keycloak.adminPassword | quote }}
GUARDIAN_MANAGEMENT_API_CLIENT_SECRET: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
adminPassword: {{ .Values.secrets.keycloak.adminPassword | quote }}
managementApiClientSecret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
...

View File

@@ -0,0 +1,29 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
repositories:
# XWiki
# Source: https://github.com/xwiki-contrib/xwiki-helm
- name: "xwiki-repo"
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
verify: {{ .Values.charts.xwiki.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/\
{{ .Values.charts.xwiki.repository }}"
releases:
- name: "xwiki"
chart: "xwiki-repo/{{ .Values.charts.xwiki.name }}"
version: "{{ .Values.charts.xwiki.version }}"
wait: true
values:
- "values.yaml.gotmpl"
installed: {{ .Values.xwiki.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "xwiki"
...

View File

@@ -1,32 +1,12 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
bases:
- "../../bases/environments.yaml"
---
repositories:
# XWiki
# Source: https://github.com/xwiki-contrib/xwiki-helm
- name: "xwiki-repo"
keyring: "../../files/gpg-pubkeys/xwiki-com.gpg"
verify: {{ .Values.charts.xwiki.verify }}
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url: "{{ .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/\
{{ .Values.charts.xwiki.repository }}"
releases:
- name: "xwiki"
chart: "xwiki-repo/{{ .Values.charts.xwiki.name }}"
version: "{{ .Values.charts.xwiki.version }}"
wait: true
helmfiles:
- path: "./helmfile-child.yaml"
values:
- "values.yaml.gotmpl"
installed: {{ .Values.xwiki.enabled }}
timeout: 900
commonLabels:
deploy-stage: "component-1"
component: "xwiki"
- {{ toYaml .Values | nindent 8 }}
...

View File

@@ -60,14 +60,19 @@ customConfigs:
xwiki.authentication.ldap.base_DN: "dc=swp-ldap,dc=internal"
## Allow short update cycles of the LDAP group cache
xwiki.authentication.ldap.groupcache_expiration: 300
## Mapping for XWiki attributes to the respective LDAP attributes
xwiki.authentication.ldap.fields_mapping: "last_name=sn,first_name=givenName,email=mailPrimaryAddress"
xwiki.properties:
wikiInitializer.initialRequest.xwiki.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/distribution/"
wikiInitializer.initialRequest.xwiki.contextPath: "/"
wikiInitializer.initialRequest.xwiki.remoteAddress: "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
oidc.clientid: "opendesk-xwiki"
oidc.endpoint.token.auth_method: "client_secret_basic"
oidc.endpoint.userinfo.method: "GET"
oidc.logoutMechanism: "rpInitiated"
oidc.provider: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/opendesk"
oidc.scope: "openid,profile,email,address,opendesk"
oidc.scope: "openid,opendesk-xwiki-scope"
oidc.secret: {{ .Values.secrets.keycloak.clientSecret.xwiki | quote }}
oidc.skipped: false
oidc.user.nameFormater: "${oidc.user.opendesk_username._clean._lowerCase}"
@@ -81,15 +86,21 @@ customConfigs:
workplaceServices.navigationEndpoint: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/portal/navigation.json"
workplaceServices.base: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
workplaceServices.portalSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
openoffice.serverType: "0"
notifications.emails.live.graceTime: "5"
ingress:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName | quote }}
annotations:
kubernetes.io/ingress.class: null
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "250m"
nginx.ingress.kubernetes.io/proxy-body-size: "{{ .Values.ingress.parameters.bodySize.xwiki }}"
nginx.ingress.kubernetes.io/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}"
nginx.ingress.kubernetes.io/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}"
nginx.org/client-max-body-size: "{{ .Values.ingress.parameters.bodySize.xwiki }}"
nginx.org/proxy-read-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}s"
nginx.org/proxy-send-timeout: "{{ .Values.ingress.parameters.bodyTimeout.xwiki }}s"
haproxy-ingress.github.io/headers: "X-Forwarded-Host {{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
hosts:
- host: "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
@@ -122,6 +133,16 @@ properties:
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg": "data:image/svg+xml;base64,{{ .Values.theme.imagery.faviconSvg | b64enc }}"
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon16PngB64 }}"
"attachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png": "data:image/png;base64,{{ .Values.theme.imagery.favicon144PngB64 }}"
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure": 1
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server": "{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
"property:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port": 443
## SMTP settings
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from": "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}"
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host": {{ .Values.smtp.host | quote }}
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port": {{ .Values.smtp.port | quote }}
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username": {{ .Values.smtp.username | quote }}
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password": {{ .Values.smtp.password | quote }}
"property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties": "mail.smtp.starttls.enable=true"
## Link LDAP users and users authenticated through OIDC
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject": 1
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer": "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
@@ -146,7 +167,7 @@ properties:
"property:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService": "oidc"
## Fields to search in when importing users from the administration UI (not completely in scope for now)
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes":
"sn,givenname,uid"
"sn,givenname,uid,mailPrimaryAddress"
## Restrict user import in the UI to global administrators
"property:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport": "globalAdmin"
## Enable group and user synchronization

View File

@@ -10,15 +10,15 @@ environments:
values:
- "../../environments/default/*.gotmpl"
- "../../environments/default/*.yaml"
- "../../environments/dev/values.yaml.gotmpl"
- "../../environments/dev/*.yaml.gotmpl"
test:
values:
- "../../environments/default/*.gotmpl"
- "../../environments/default/*.yaml"
- "../../environments/test/values.yaml.gotmpl"
- "../../environments/test/*.yaml.gotmpl"
prod:
values:
- "../../environments/default/*.gotmpl"
- "../../environments/default/*.yaml"
- "../../environments/prod/values.yaml.gotmpl"
- "../../environments/prod/*.yaml.gotmpl"
...

View File

@@ -3,8 +3,6 @@
---
ldap:
host: "ums-ldap-server"
hostPrimary: "ums-ldap-server-primary"
hostSecondary: "ums-ldap-server-secondary"
notifierHost: "ums-ldap-notifier"
baseDn: "dc=swp-ldap,dc=internal"
## Define Keycloak realmname for openDesk

View File

@@ -14,7 +14,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-certificates"
name: "opendesk-certificates"
version: "2.2.0"
version: "2.1.3"
verify: true
clamav:
# providerCategory: "Platform"
@@ -46,7 +46,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/collabora/charts-mirror"
name: "collabora-online"
version: "1.1.15"
version: "1.1.20"
verify: true
cryptpad:
# providerCategory: "Supplier"
@@ -78,7 +78,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-element"
version: "2.7.1"
version: "3.3.0"
verify: true
elementWellKnown:
# providerCategory: "Platform"
@@ -88,7 +88,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-well-known"
version: "2.7.1"
version: "3.3.0"
verify: true
home:
# providerCategory: "Platform"
@@ -98,13 +98,13 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-home"
name: "opendesk-home"
version: "1.0.1"
version: "1.0.2"
verify: true
intercomService:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/charts/intercom-service/intercom-service"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/charts/intercom-service"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["2", "0", "1"]
registry: "registry.opencode.de"
@@ -180,7 +180,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-matrix-user-verification-service"
version: "2.7.1"
version: "3.3.0"
verify: true
memcached:
# providerCategory: "Community"
@@ -192,6 +192,16 @@ charts:
name: "memcached"
version: "6.7.1"
verify: true
migrations:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
# upstreamRegistry: "https://registry.opencode.de"
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-migrations"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-migrations"
name: "opendesk-migrations"
version: "1.0.1"
verify: true
minio:
# providerCategory: "Community"
# providerResponsible: "openDesk"
@@ -210,7 +220,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
name: "opendesk-nextcloud"
version: "1.5.2"
version: "2.1.0"
verify: true
nextcloudManagement:
# providerCategory: "Platform"
@@ -220,7 +230,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
name: "opendesk-nextcloud-management"
version: "1.5.2"
version: "2.1.0"
verify: true
nginx:
# providerCategory: "Community"
@@ -240,7 +250,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap"
name: "opendesk-keycloak-bootstrap"
version: "1.1.0"
version: "2.1.0"
verify: true
openproject:
# providerCategory: "Supplier"
@@ -252,7 +262,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/openproject/charts-mirror"
name: "openproject"
version: "4.5.0"
version: "5.3.0"
verify: true
openprojectBootstrap:
# providerCategory: "Platform"
@@ -294,13 +304,13 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-otterize"
name: "opendesk-otterize"
version: "2.1.0-feat-ldap-server-scalability"
version: "2.0.1"
verify: true
oxConnector:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/charts/univention/ox-connector"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/charts/ox-connector"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "4", "2"]
registry: "registry.opencode.de"
@@ -346,7 +356,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-synapse"
version: "2.7.1"
version: "3.3.0"
verify: true
synapseCreateAccount:
# providerCategory: "Platform"
@@ -356,7 +366,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-synapse-create-account"
version: "2.7.1"
version: "3.3.0"
verify: true
synapseWeb:
# providerCategory: "Platform"
@@ -366,13 +376,13 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-element"
name: "opendesk-synapse-web"
version: "2.7.1"
version: "3.3.0"
verify: true
ums:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/charts/univention/ums"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/charts/ums"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "12", "0"]
registry: "registry.opencode.de"
@@ -383,14 +393,14 @@ charts:
umsKeycloakBootstrap:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/charts/univention-keycloak-bootstrap/ums-keycloak-bootstrap"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/charts/keycloak-bootstrap"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["1", "0", "1"]
# upstreamMirrorStartFrom: ["0", "1", "0"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
name: "ums-keycloak-bootstrap"
version: "1.0.1"
name: "keycloak-bootstrap"
version: "0.1.0"
verify: true
xwiki:
# providerCategory: "Supplier"
@@ -402,6 +412,6 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/xwiki/charts-mirror"
name: "xwiki"
version: "1.3.0"
version: "1.3.1"
verify: false
...

View File

@@ -1,16 +1,16 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
# Keep Pods/Job logs after successful run.
deletePodsOnSuccess: true
# When deletePodsOnSuccess is enabled, the pod will be deleted after configured seconds.
deletePodsOnSuccessTimeout: 60
# Keep persistence on deletion of this release.
keepPVCOnDelete: false
# Keep additional resources, like certificates on deletion of this release.
keepRessourceOnDelete: true
debug:
cleanup:
# Keep Pods/Job logs after successful run.
deletePodsOnSuccess: true
# When deletePodsOnSuccess is enabled, the pod will be deleted after configured seconds.
deletePodsOnSuccessTimeout: 60
# Keep persistence on deletion of this release.
keepPVCOnDelete: false
# Keep additional resources, like certificates on deletion of this release.
keepRessourceOnDelete: true
# should activate debug output in all components and even allow e.g. successfully executed jobs
# to stay available. This is going to be implemented on a case by case basis when we actually
# need debugging in a component.

View File

@@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
# The variables set in this file are required to upgrade components to their "Enterprise" product variant.
---
enterprise:
openproject:
# Enterprise token must match the deployment's OpenProject host name.
token: ""
...

View File

@@ -1,10 +1,55 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
authentication:
twoFactor:
# Define a list of groups to enable 2FA for.
# Note: Removing a group from the list will not disable 2FA for the removed group.
groups:
functional:
admin:
portal:
deploymentInformation:
# Disable to not provide and update openDesk release version and deployment timestamp for admins in the portal.
enabled: true
authentication:
twoFactor:
# Define a list of groups to enable 2FA for.
# Note: Removing a group from the list will not disable 2FA for the removed group.
groups:
- "Domain Admins"
oidc:
# Define additional/custom OIDC clients to be created in the 'opendesk' realm of Keycloak.
clients: ~
# Define additional/custom OIDC client scopes to be created in the 'opendesk' realm of Keycloak.
clientScopes: ~
externalServices:
nubus:
udmRestApi:
# Enable to make the UDM REST API from the Nubus stack externally available.
enabled: false
matrix:
federation:
# Disable to not support Matrix federation with your installation.
enabled: true
filestore:
quota:
# Set the default quota for all users in GB
default: 1
# Nextcloud specific configuration
nextcloud:
retentionObligation:
# yamllint disable rule:line-length
# Set Nextcloud's `trashbin_retention_obligation`
# Ref.: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#trashbin-retention-obligation
trashbin: "auto"
# Set Nextcloud's `versions_retention_obligation`
# Ref.: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#versions-retention-obligation
versions: "auto"
# yamllint enable rule:line-length
dataProtection:
matrixPresence:
# Enable to allow information about the user presence status to be shared.
# Ref.: https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#presence
enabled: false
...

View File

@@ -3,5 +3,5 @@
---
global:
systemInformation:
releaseVersion: "v0.7.0"
releaseVersion: "v0.8.1"
...

View File

@@ -23,4 +23,39 @@ global:
#
helmRegistry: {{ env "PRIVATE_HELM_REGISTRY_URL" | quote }}
imageRegistry: {{ env "PRIVATE_IMAGE_REGISTRY_URL" | quote }}
## Define ingress/virtualservice host.
#
hosts:
collabora: "collabora"
cryptpad: "cryptpad"
element: "chat"
intercomService: "ics"
jitsi: "meet"
keycloak: "id"
matrixNeoBoardWidget: "matrix-neoboard-widget"
matrixNeoChoiceWidget: "matrix-neochoice-widget"
matrixNeoDateFixBot: "matrix-neodatefix-bot"
matrixNeoDateFixWidget: "matrix-neodatefix-widget"
minioApi: "minio"
minioConsole: "minio-console"
nextcloud: "fs"
openproject: "project"
openxchange: "webmail"
synapse: "matrix"
synapseFederation: "matrix-federation"
univentionManagementStack: "portal"
whiteboard: "whiteboard"
xwiki: "wiki"
## Credentials to fetch images from private registry
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
#
imagePullSecrets:
- "external-registry"
## Define the policy to pull container images.
## Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
#
imagePullPolicy: "IfNotPresent"
...

View File

@@ -1,42 +0,0 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
## The global properties are used to configure multiple charts at once.
#
global:
## Define ingress/virtualservice host.
#
hosts:
collabora: "collabora"
cryptpad: "cryptpad"
element: "chat"
intercomService: "ics"
jitsi: "meet"
keycloak: "id"
matrixNeoBoardWidget: "matrix-neoboard-widget"
matrixNeoChoiceWidget: "matrix-neochoice-widget"
matrixNeoDateFixBot: "matrix-neodatefix-bot"
matrixNeoDateFixWidget: "matrix-neodatefix-widget"
minioApi: "minio"
minioConsole: "minio-console"
nextcloud: "fs"
openproject: "project"
openxchange: "webmail"
openxchangeProvisioning: "ox-provisioning"
synapse: "matrix"
univentionManagementStack: "portal"
whiteboard: "whiteboard"
xwiki: "wiki"
## Credentials to fetch images from private registry
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
#
imagePullSecrets:
- "external-registry"
## Define the policy to pull container images.
## Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
#
imagePullPolicy: "IfNotPresent"
...

View File

@@ -20,7 +20,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk"
tag: "23.05.10.1.1@sha256:022fe6dc680ce7168a54c0a4c525ac5dddce3373e740ccb85b8e342dc0320f39"
tag: "24.04.5.2.1@sha256:583f3764661fdce99c5a97019b732db1bed9f9b333d70640ac99a6953c493666"
cryptpad:
# providerCategory: "Supplier"
# providerResponsible: "XWiki"
@@ -47,7 +47,7 @@ images:
# upstreamMirrorStartFrom: ["1", "8", "0"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/nordeck/images/opendesk-element-web"
tag: "1.11.0@sha256:633cc31a4c312cdb072136247ac382463ddbc458a5c57e139241394acee9baaf"
tag: "1.11.1@sha256:6ed72fccd302fc5891f31157bcffd14358e1f90f8b60d649fd261ba0f5d5fb91"
freshclam:
# providerCategory: "Community"
# providerResponsible: "openDesk"
@@ -113,7 +113,7 @@ images:
# upstreamMirrorStartFrom: ["2023", "12", "14"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter"
tag: "v20231214@sha256:2fa11007b387512aae1ce30c7b86c2d10a47889a717f13ab43d33b768df877d1"
tag: "v20240314@sha256:8abe8209a59c2d646fa3e7136f6a6ea15f3f692106bba92c0e777f8d383edc12"
jitsiPatchJVB:
# providerCategory: "Community"
# providerResponsible: "Nordeck"
@@ -121,7 +121,7 @@ images:
# upstreamRepository: "bitnami/kubectl"
registry: "registry-1.docker.io"
repository: "bitnami/kubectl"
tag: "1.26.8@sha256:c6902a1fdce0a24c9f93ac8d1f317039b206a4b307d8fc76cab4a92911345757"
tag: "1.30.2@sha256:3ec696e5ce1b79f78eb0eac1fed4ef20fa6584662cdf3c7ad933b0b03b9ce3f6"
jvb:
# providerCategory: "Supplier"
# providerResponsible: "Nordeck"
@@ -149,7 +149,7 @@ images:
# upstreamMirrorStartFrom: ["1", "4", "0"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget"
tag: "1.14.0@sha256:1a00f33ed5f560e55b06011b2f81696fd8230820f6980edb826768af0e0b41d9"
tag: "1.17.0@sha256:f4e711473ba99159c878177f0f9e750fd6d9555b7d8c266ac7040f053be19513"
matrixNeoChoiceWidget:
# providerCategory: "Supplier"
# providerResponsible: "Nordeck"
@@ -198,6 +198,14 @@ images:
registry: "registry-1.docker.io"
repository: "bitnami/memcached"
tag: "1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d"
migrations:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
# upstreamRegistry: "https://registry.opencode.de"
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-migrations"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-migrations"
tag: "1.0.2@sha256:fbe21b4e2a276d2c5d052c1bb52158debfcc146188e654661001d4ff45b1b453"
milter:
# providerCategory: "Community"
# providerResponsible: "openDesk"
@@ -221,7 +229,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-apache2"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-apache2"
tag: "1.1.21@sha256:ec63d564eb11d7ed213a5ef8719f2b3380e552f1ffb1251470b84c0c8937b7b8"
tag: "1.1.22@sha256:8bfa92fcfdcb2fee1b3560a623ffb319fcfcc7e5fbcc20d631df747427e88f84"
nextcloudExporter:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
@@ -237,7 +245,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-management"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-management"
tag: "1.3.12@sha256:54bb5a90ebe49b33b053e8a7df2fa8d8cb992b17f68a04d08357961c3aded0b0"
tag: "1.4.2@sha256:a4c12a624c76b44c8305a768ced33e2b9af9497ff9cfa639045df846d89fbda4"
nextcloudPHP:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
@@ -245,7 +253,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-php"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud-php"
tag: "1.8.11@sha256:85b3bbf027c9e6a2ccf411b8e2b3752f6a58a3a14f00fb92ecefd9e7ca0c6954"
tag: "1.10.1@sha256:8eb5ac95eaea69e0928e48aa5a121cbf10f359be4679040da8464810e9d799ff"
opendeskKeycloakBootstrap:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
@@ -253,7 +261,7 @@ images:
# upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap"
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap"
tag: "1.0.5@sha256:76ccd9a74ae2c2dabb6beaa0192c15b9c06763abbd632cd0f8db68e5d8d5883c"
tag: "1.2.0@sha256:3b364c60bedb9ae001c39cbf84e4b4b326b9559078f21bfc993cf0e601196e6f"
openproject:
# providerCategory: "Supplier"
# providerResponsible: "OpenProject"
@@ -263,7 +271,7 @@ images:
# upstreamMirrorStartFrom: ["13", "1", "1"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/openproject/images-mirror/open_desk"
tag: "14.0.1@sha256:664f5131dbca43084dd3fb0be22d8520b3de4148f5511b25751f6bb8eb4e76c0"
tag: "14.2.0@sha256:b4ea55b925de4fc8760ccf30268f0a2d472c4204bd4fc512720e8757489335d6"
openprojectBootstrap:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
@@ -279,7 +287,7 @@ images:
# upstreamRepository: "library/postgres"
registry: "registry-1.docker.io"
repository: "library/postgres"
tag: "13@sha256:ba6ef1f07410f29e9ccf0946c3fe17eb7a1466f826c46a30e7629c4f2e29b1d3"
tag: "16.3-alpine3.20@sha256:de3d7b6e4b5b3fe899e997579d6dfe95a99539d154abe03f0b6839133ed05065"
openxchangeBootstrap:
# providerCategory: "Community"
# providerResponsible: "openDesk"
@@ -401,8 +409,8 @@ images:
oxConnector:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/ox-connector-standalone"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/ox-connector-standalone"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "4", "2"]
registry: "registry.opencode.de"
@@ -452,7 +460,7 @@ images:
# upstreamMirrorStartFrom: ["1", "91", "2"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/element/images-mirror/synapse"
tag: "v1.91.2@sha256:1d19508db417bb2b911c8e086bd3dc3b719ee75c6f6194d58af59b4c32b11322"
tag: "v1.108.0@sha256:0754a5c372f4cfb5f69f58ad4b70d05bc2e380354f1b0c9101611e9157082712"
synapseCreateUser:
# providerCategory: "Community"
# providerResponsible: "Nordeck"
@@ -460,7 +468,7 @@ images:
# upstreamRepository: "alpine/k8s"
registry: "registry-1.docker.io"
repository: "alpine/k8s"
tag: "1.26.8@sha256:acde24d2a8ebaafda76f464591a5ddc7d0acd08bb38b12560961c1b1c4fc85ec"
tag: "1.30.0@sha256:d7a11b7032550e992667fd7725b039dcd639270fbceec368d7e66e3d9e41ee15"
synapseGuestModule:
# providerCategory: "Supplier"
# providerResponsible: "Nordeck"
@@ -478,12 +486,12 @@ images:
# upstreamRepository: "rapidfort/haproxy-official"
registry: "registry-1.docker.io"
repository: "rapidfort/haproxy-official"
tag: "2.6.6-bullseye@sha256:bf22cfb1301aae433213f5f8c687bc5d9ecc6b86daf1084be5f7a339bd27cadd"
tag: "2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c"
umsDataLoader:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/data-loader"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/data-loader"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "41", "5"]
registry: "registry.opencode.de"
@@ -520,15 +528,15 @@ images:
repository: "bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui"
tag: "2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf"
umsGuardianProvisioning:
# providerCategory: 'Supplier'
# providerResponsible: 'Univention'
# upstreamRegistry: 'registry.souvap-univention.de'
# upstreamRepository: 'souvap/tooling/images/univention/guardian-init'
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/guardian-init"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ['0', '3', '0']
# upstreamMirrorStartFrom: ["0", "3", "0"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/univention/images-mirror/guardian-init"
tag: "0.3.0@sha256:6ce026307cace794b33dddc616e37025974707b5c94fc52cff100b769cba722b"
tag: "0.4.0@sha256:390e20ad73a91ae2ecc33d91d1f21872a46e6af4d4d09095d1ce18a6d4a3635e"
umsKeycloak:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
@@ -552,8 +560,8 @@ images:
umsKeycloakExtensionHandler:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/keycloak-handler"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/keycloak-handler"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "0", "3"]
registry: "registry.opencode.de"
@@ -562,8 +570,8 @@ images:
umsKeycloakExtensionProxy:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/keycloak-proxy"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/keycloak-proxy"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "0", "3"]
registry: "registry.opencode.de"
@@ -572,8 +580,8 @@ images:
umsLdapNotifier:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/ldap-notifier"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/ldap-notifier"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "8", "2"]
registry: "registry.opencode.de"
@@ -582,8 +590,8 @@ images:
umsLdapServer:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/ldap-server"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/ldap-server"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "8", "2"]
registry: "registry.opencode.de"
@@ -616,8 +624,8 @@ images:
umsNotificationsApi:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/notifications-api"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/notifications-api"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "9", "4"]
registry: "registry.opencode.de"
@@ -636,8 +644,8 @@ images:
umsPortalFrontend:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/portal-frontend"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/portal-frontend"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "9", "4"]
registry: "registry.opencode.de"
@@ -646,8 +654,8 @@ images:
umsPortalListener:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/portal-listener"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/portal-listener"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "9", "4"]
registry: "registry.opencode.de"
@@ -656,8 +664,8 @@ images:
umsPortalServer:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/portal-server"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/portal-server"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "9", "4"]
registry: "registry.opencode.de"
@@ -666,8 +674,8 @@ images:
umsProvisioningDispatcher:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/provisioning-dispatcher"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/provisioning-dispatcher"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "14", "0"]
registry: "registry.opencode.de"
@@ -676,8 +684,8 @@ images:
umsProvisioningEventsAndConsumerApi:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/provisioning-events-and-consumer-api"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/provisioning-events-and-consumer-api"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "14", "0"]
registry: "registry.opencode.de"
@@ -686,8 +694,8 @@ images:
umsProvisioningPrefill:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/provisioning-prefill"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/provisioning-prefill"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "14", "0"]
registry: "registry.opencode.de"
@@ -696,8 +704,8 @@ images:
umsProvisioningUdmListener:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/provisioning-udm-listener"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/provisioning-udm-listener"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "14", "0"]
registry: "registry.opencode.de"
@@ -706,8 +714,8 @@ images:
umsSelfserviceInvitation:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/selfservice-invitation"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/selfservice-invitation"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "3", "2"]
registry: "registry.opencode.de"
@@ -716,8 +724,8 @@ images:
umsSelfserviceListener:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/selfservice-listener"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/selfservice-listener"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "3", "2"]
registry: "registry.opencode.de"
@@ -744,8 +752,8 @@ images:
umsUmcGateway:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/umc-gateway"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/umc-gateway"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "7", "3"]
registry: "registry.opencode.de"
@@ -754,8 +762,8 @@ images:
umsUmcServer:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/umc-server"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/umc-server"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "7", "3"]
registry: "registry.opencode.de"
@@ -764,8 +772,8 @@ images:
umsWaitForDependency:
# providerCategory: "Supplier"
# providerResponsible: "Univention"
# upstreamRegistry: "https://registry.souvap-univention.de"
# upstreamRepository: "souvap/tooling/images/univention/wait-for-dependency"
# upstreamRegistry: "https://artifacts.software-univention.de"
# upstreamRepository: "nubus/images/wait-for-dependency"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["0", "9", "4"]
registry: "registry.opencode.de"
@@ -778,7 +786,7 @@ images:
# upstreamRepository: "library/nginx"
registry: "registry-1.docker.io"
repository: "library/nginx"
tag: "1.25.2-bookworm@sha256:9504f3f64a3f16f0eaf9adca3542ff8b2a6880e6abfb13e478cca23f6380080a"
tag: "1.27.0-bookworm@sha256:1445eb9c6dc5e9619346c836ef6fbd6a95092e4663f27dcfce116f051cdbd232"
xwiki:
# providerCategory: "Supplier"
# providerResponsible: "XWiki"
@@ -788,5 +796,5 @@ images:
# upstreamMirrorStartFrom: ["0", "12"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki"
tag: "0.17-mariadb-jetty-alpine@sha256:9eb67520774c3022aa4485ce348be477f358263b716e647cacd057da3aca9739"
tag: "0.19-mariadb-jetty-alpine@sha256:8590ee815bceb7764df681b9239b4606adc5b3750e4eff2d928b62dcd046a623"
...

View File

@@ -7,4 +7,19 @@ ingress:
tls:
enabled: true
secretName: "opendesk-certificates-tls"
parameters:
bodySize:
collabora: "100M"
element: "100M"
nextcloud: "100M"
openproject: "100M"
openXchangeAppSuite: "100M"
xwiki: "100M"
bodyTimeout:
collabora: 600
element: 60
nextcloud: 600
openproject: 60
openXchangeAppSuite: 60
xwiki: 60
...

View File

@@ -1,25 +1,25 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
prometheus:
serviceMonitors:
enabled: false
labels:
release: "kube-prometheus-stack"
podMonitors:
enabled: false
labels:
release: "kube-prometheus-stack"
prometheusRules:
enabled: false
labels:
release: "kube-prometheus-stack"
monitoring:
prometheus:
serviceMonitors:
enabled: false
labels:
release: "kube-prometheus-stack"
podMonitors:
enabled: false
labels:
release: "kube-prometheus-stack"
prometheusRules:
enabled: false
labels:
release: "kube-prometheus-stack"
grafana:
dashboards:
enabled: false
labels:
grafana_dashboard: "1"
annotations:
grafana:
dashboards:
enabled: false
labels:
grafana_dashboard: "1"
annotations:
...

View File

@@ -1,31 +0,0 @@
{{/*
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
---
objectstores:
nextcloud:
bucket: "nextcloud"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "nextcloud_user"
storageClass: "STANDARD"
useSSL: true
pathStyle: true
port: 443
openproject:
bucket: "openproject"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "openproject_user"
pathStyle: true
useIAMProfile: ""
univentionManagementStack:
bucket: "ums"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "ums_user"
...

View File

@@ -0,0 +1,42 @@
# 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
---
objectstores:
migrations:
bucket: "migrations"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "migration_user"
storageClass: "STANDARD"
useSSL: true
pathStyle: true
port: 443
nextcloud:
bucket: "nextcloud"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "nextcloud_user"
storageClass: "STANDARD"
useSSL: true
pathStyle: true
port: 443
openproject:
bucket: "openproject"
directUploads: true
enableSignatureV4Streaming: true
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "openproject_user"
pathStyle: true
useIamProfile: false
univentionManagementStack:
bucket: "ums"
endpoint: ""
region: "eu-west-1"
secretKey: ""
username: "ums_user"
...

View File

@@ -0,0 +1,76 @@
# 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
#
# Note: Currently only single namespace deployments are supported.
---
certificates:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
clamavDistributed:
enabled: false
namespace: {{ env "NAMESPACE" | quote }}
clamavSimple:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
collabora:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
cryptpad:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
dovecot:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
element:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
home:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
intercom:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
jitsi:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
mariadb:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
memcached:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
migrations:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
minio:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
nextcloud:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
openproject:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
oxAppsuite:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
oxConnector:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
postfix:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
postgresql:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
redis:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
univentionManagementStack:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
xwiki:
enabled: true
namespace: {{ env "NAMESPACE" | quote }}
...

View File

@@ -69,10 +69,11 @@ resources:
requests:
cpu: 0.1
memory: "384Mi"
# The jifico and jvb containers require 3GB memory for the Java process, so we limit it to 3.5Gi overall consumption.
jicofo:
limits:
cpu: 99
memory: "512Mi"
memory: "3584Mi"
requests:
cpu: 0.1
memory: "256Mi"
@@ -90,10 +91,11 @@ resources:
requests:
cpu: "10m"
memory: "48Mi"
# The jifico and jvb containers require 3GB memory for the Java process, so we limit it to 3.5Gi overall consumption.
jvb:
limits:
cpu: 99
memory: "768Mi"
memory: "3584Mi"
requests:
cpu: 0.1
memory: "384Mi"
@@ -219,7 +221,7 @@ resources:
openproject:
limits:
cpu: 99
memory: "1Gi"
memory: "2Gi"
requests:
cpu: 0.1
memory: "768Mi"
@@ -391,21 +393,7 @@ resources:
requests:
cpu: 0.1
memory: "256Mi"
umsLdapServerPrimary:
limits:
cpu: 99
memory: "1Gi"
requests:
cpu: 0.1
memory: "256Mi"
umsLdapServerSecondary:
limits:
cpu: 99
memory: "1Gi"
requests:
cpu: 0.1
memory: "256Mi"
umsLdapServerProxy:
umsLdapServer:
limits:
cpu: 99
memory: "1Gi"

View File

@@ -10,8 +10,14 @@ secrets:
cookieHashSalt: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "cookie_hash_salt" | sha1sum | quote }}
sessiondEncryptionKey: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "sessiond_encryptionkey" | sha1sum | quote }}
shareCryptKey: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "share_cryptkey" | sha1sum | quote }}
oxguardMC: {{ printf "MC%s" (randAlphaNum 20 | b64enc) | quote }}
oxguardRC: {{ printf "RC%s" (randAlphaNum 20 | b64enc) | quote }}
oxguardMC: {{ printf "MC%s" (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "oxguardMC" | sha1sum | trunc 20 | b64enc) | quote }}
oxguardRC: {{ printf "RC%s" (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "oxguardRC" | sha1sum | trunc 20 | b64enc) | quote }}
hzGroupPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "hz_group_password" | sha1sum | quote }}
basicAuthPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "basic_auth_password" | sha1sum | quote }}
jolokiaPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "jolokia_password" | sha1sum | quote }}
cookieHashSalt: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "cookie_hash_salt" | sha1sum | quote }}
shareCryptKey: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "share_crypt_key" | sha1sum | quote }}
sessiondEncryptionKey: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "ox_appsuite" "sessiond_encryption_key" | sha1sum | quote }}
univentionManagementStack:
ldapSecret: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "cn=admin" "ldap" | sha1sum | quote }}
ldapSearch:
@@ -42,9 +48,10 @@ secrets:
dispatcherUdmPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "cn=admin" "udm" | sha1sum | quote }}
udmListenerNatsPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "udmlistener" "nats" | sha1sum | quote }}
udmPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "cn=admin" "udm" | sha1sum | quote }}
guardian:
udmPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "cn=admin" "udm" | sha1sum | quote }}
nats:
natsAdminPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "admin" "nats" | sha1sum | quote }}
postgresql:
postgresUser: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "postgres" "postgres_user" | sha1sum | quote }}
keycloakUser: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "postgres" "keycloak_user" | sha1sum | quote }}
@@ -61,10 +68,10 @@ secrets:
nextcloudUser: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "mariadb" "nextcloud_user" | sha1sum | quote }}
minio:
rootPassword: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "root_password" | sha1sum | quote) }}
openprojectUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "openproject_user" | sha1sum | quote) }}
openxchangeUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "openxchange_user" | sha1sum | quote) }}
umsUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "ums_user" | sha1sum | quote) }}
migrationsUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "migrations_user" | sha1sum | quote) }}
nextcloudUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "nextcloud_user" | sha1sum | quote) }}
openprojectUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "openproject_user" | sha1sum | quote) }}
umsUser: {{ (derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "minio" "ums_user" | sha1sum | quote) }}
keycloak:
adminPassword: {{ derivePassword 1 "long" (env "MASTER_PASSWORD" | default "sovereign-workplace") "keycloak" "adminPassword" | sha1sum | quote }}
clientSecret:

View File

@@ -30,6 +30,7 @@ seLinuxOptions:
matrixNeoDateFixWidget: ~
matrixUserVerificationService: ~
memcached: ~
migrations: ~
milter: ~
minio: ~
nextcloudApache2: ~

View File

@@ -8,4 +8,5 @@ smtp:
port: 587
username: ""
password: {{ env "SMTP_PASSWORD" | quote }}
localpartNoReply: "no-reply"
...

Some files were not shown because too many files have changed in this diff Show More