mirror of
https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk.git
synced 2025-12-06 15:31:38 +01:00
Compare commits
1 Commits
v0.7.0
...
feat/mon-j
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99ad9d16db |
116
.gitlab-ci.yml
116
.gitlab-ci.yml
@@ -1,10 +1,9 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# 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
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
include:
|
include:
|
||||||
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
|
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
|
||||||
ref: "v2.3.2"
|
ref: "main"
|
||||||
file:
|
file:
|
||||||
- "ci/common/automr.yml"
|
- "ci/common/automr.yml"
|
||||||
- "ci/common/lint.yml"
|
- "ci/common/lint.yml"
|
||||||
@@ -12,7 +11,8 @@ include:
|
|||||||
- local: "/.gitlab/generate/generate-docs.yml"
|
- local: "/.gitlab/generate/generate-docs.yml"
|
||||||
- project: "${PROJECT_PATH_CUSTOM_ENVIRONMENT_CONFIG}"
|
- project: "${PROJECT_PATH_CUSTOM_ENVIRONMENT_CONFIG}"
|
||||||
file: "gitlab/environments.yaml"
|
file: "gitlab/environments.yaml"
|
||||||
ref: "main"
|
rules:
|
||||||
|
- if: "$INCLUDE_ENVIRONMENTS_ENABLED != 'false'"
|
||||||
- local: "/.gitlab/lint/lint-opendesk.yml"
|
- local: "/.gitlab/lint/lint-opendesk.yml"
|
||||||
rules:
|
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'"
|
||||||
@@ -20,7 +20,7 @@ include:
|
|||||||
- when: "always"
|
- when: "always"
|
||||||
- local: "/.gitlab/lint/lint-kyverno.yml"
|
- local: "/.gitlab/lint/lint-kyverno.yml"
|
||||||
rules:
|
rules:
|
||||||
- if: "$JOB_KYVERNO_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event|web|triggers'"
|
- if: "$JOB_KYVERNO_LINTER_ENABLED == 'false' || $CI_PIPELINE_SOURCE =~ 'tags|merge_request_event'"
|
||||||
when: "never"
|
when: "never"
|
||||||
- when: "always"
|
- when: "always"
|
||||||
|
|
||||||
@@ -28,15 +28,15 @@ stages:
|
|||||||
- ".pre"
|
- ".pre"
|
||||||
- "scan"
|
- "scan"
|
||||||
- "automr"
|
- "automr"
|
||||||
|
- "lint"
|
||||||
- "env-cleanup"
|
- "env-cleanup"
|
||||||
- "env"
|
- "env"
|
||||||
- "pre-services-deploy"
|
|
||||||
- "basic-services-deploy"
|
- "basic-services-deploy"
|
||||||
- "component-deploy-stage-1"
|
- "component-deploy-stage-1"
|
||||||
- "component-deploy-stage-2"
|
- "component-deploy-stage-2"
|
||||||
- "lint"
|
|
||||||
- "tests"
|
- "tests"
|
||||||
- "env-stop"
|
- "env-stop"
|
||||||
|
- "generate-release-assets"
|
||||||
- ".post"
|
- ".post"
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
@@ -44,23 +44,14 @@ variables:
|
|||||||
description: "The name of namespaces to deploy to."
|
description: "The name of namespaces to deploy to."
|
||||||
value: ""
|
value: ""
|
||||||
CLUSTER:
|
CLUSTER:
|
||||||
description: "Which cluster to use. Cluster must be defined in `gitlab/environments.yaml` of the
|
description: "Define which cluster to use. Cluster must be defined in gitlab/environments.yaml of
|
||||||
repo that is included above using the env var `PROJECT_PATH_CUSTOM_ENVIRONMENT_CONFIG`:
|
sovereign-workplace-env included above."
|
||||||
${PROJECT_PATH_CUSTOM_ENVIRONMENT_CONFIG}"
|
|
||||||
value: "dev"
|
value: "dev"
|
||||||
MASTER_PASSWORD_WEB_VAR:
|
MASTER_PASSWORD_WEB_VAR:
|
||||||
description: >
|
description: "Optional: Provide a passphrase to be used for password generation."
|
||||||
Optional: Provide a seed to be used for generation of all internal secrets.
|
|
||||||
Same seed will result in same secrets.
|
|
||||||
value: ""
|
value: ""
|
||||||
ENV_STOP_BEFORE:
|
ENV_STOP_BEFORE:
|
||||||
description: "Stop environment/delete namespace for the deployment."
|
description: "Stop environment/delete namespace for the deployment"
|
||||||
value: "no"
|
|
||||||
options:
|
|
||||||
- "yes"
|
|
||||||
- "no"
|
|
||||||
DEBUG_ENABLED:
|
|
||||||
description: "Allows to set `debug.enabled` to true for a deployment, needs to be supported by stage specific configuration containting: `debug.enabled: {{ env \"DEBUG_ENABLED\" | default false }}`"
|
|
||||||
value: "no"
|
value: "no"
|
||||||
options:
|
options:
|
||||||
- "yes"
|
- "yes"
|
||||||
@@ -168,7 +159,7 @@ variables:
|
|||||||
fi;
|
fi;
|
||||||
- >
|
- >
|
||||||
echo "Installing ${COMPONENT} into ${NAMESPACE} namespace as ${HELMFILE_ENVIRONMENT} environment on ${CLUSTER}"
|
echo "Installing ${COMPONENT} into ${NAMESPACE} namespace as ${HELMFILE_ENVIRONMENT} environment on ${CLUSTER}"
|
||||||
- "helmfile --namespace ${NAMESPACE} apply --suppress-diff ${ADDITIONAL_ARGS}"
|
- "helmfile --namespace ${NAMESPACE} apply --suppress-diff"
|
||||||
tags:
|
tags:
|
||||||
- "docker"
|
- "docker"
|
||||||
- "kubernetes"
|
- "kubernetes"
|
||||||
@@ -206,7 +197,7 @@ env-start:
|
|||||||
name: "${NAMESPACE}"
|
name: "${NAMESPACE}"
|
||||||
on_stop: "env-stop"
|
on_stop: "env-stop"
|
||||||
extends: ".deploy-common"
|
extends: ".deploy-common"
|
||||||
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
|
image: "${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: >
|
||||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
||||||
@@ -225,19 +216,6 @@ env-start:
|
|||||||
--dry-run=client -o yaml | kubectl apply -f -
|
--dry-run=client -o yaml | kubectl apply -f -
|
||||||
stage: "env"
|
stage: "env"
|
||||||
|
|
||||||
policies-deploy:
|
|
||||||
stage: "pre-services-deploy"
|
|
||||||
extends: ".deploy-common"
|
|
||||||
rules:
|
|
||||||
- if: >
|
|
||||||
$CI_PIPELINE_SOURCE =~ "web|schedules|triggers" &&
|
|
||||||
$NAMESPACE =~ /.+/ &&
|
|
||||||
($DEPLOY_ALL_COMPONENTS != "no" || $DEPLOY_SERVICES != "no")
|
|
||||||
when: "on_success"
|
|
||||||
variables:
|
|
||||||
COMPONENT: "services"
|
|
||||||
ADDITIONAL_ARGS: "-l name=opendesk-otterize"
|
|
||||||
|
|
||||||
services-deploy:
|
services-deploy:
|
||||||
stage: "basic-services-deploy"
|
stage: "basic-services-deploy"
|
||||||
extends: ".deploy-common"
|
extends: ".deploy-common"
|
||||||
@@ -400,7 +378,7 @@ env-stop:
|
|||||||
environment:
|
environment:
|
||||||
name: "${NAMESPACE}"
|
name: "${NAMESPACE}"
|
||||||
action: "stop"
|
action: "stop"
|
||||||
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
|
image: "${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine/k8s:1.25.6"
|
||||||
needs: []
|
needs: []
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: >
|
||||||
@@ -470,13 +448,10 @@ run-tests:
|
|||||||
avscan-prepare:
|
avscan-prepare:
|
||||||
stage: ".pre"
|
stage: ".pre"
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: "$JOB_AVSCAN_ENABLED != 'false' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
||||||
$JOB_AVSCAN_ENABLED != 'false' &&
|
|
||||||
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH &&
|
|
||||||
$CI_PIPELINE_SOURCE =~ "push|merge_request_event"
|
|
||||||
when: "always"
|
when: "always"
|
||||||
- when: "never"
|
- when: "never"
|
||||||
image: "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/mikefarah/yq"
|
image: "external-registry.souvap-univention.de/docker-remote/mikefarah/yq"
|
||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
cat << 'EOF' > dynamic-scans.yml
|
cat << 'EOF' > dynamic-scans.yml
|
||||||
@@ -506,8 +481,7 @@ avscan-prepare:
|
|||||||
yq '.images
|
yq '.images
|
||||||
| with_entries(.key |= "scan-" + .)
|
| with_entries(.key |= "scan-" + .)
|
||||||
| .[].extends=".container-clamav"
|
| .[].extends=".container-clamav"
|
||||||
| with(.[]; .variables.CONTAINER_IMAGE = .repository
|
| with(.[]; .variables.CONTAINER_IMAGE = .repository | .variables.CONTAINER_TAG = .tag | .variables.CONTAINER_REGISTRY = .registry)
|
||||||
| .variables.CONTAINER_TAG = .tag | .variables.CONTAINER_REGISTRY = .registry)
|
|
||||||
| del(.[].repository)
|
| del(.[].repository)
|
||||||
| del(.[].tag)
|
| del(.[].tag)
|
||||||
| del(.[].registry)'
|
| del(.[].registry)'
|
||||||
@@ -520,10 +494,7 @@ avscan-prepare:
|
|||||||
avscan-start:
|
avscan-start:
|
||||||
stage: "scan"
|
stage: "scan"
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: "$JOB_AVSCAN_ENABLED != 'false' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
||||||
$JOB_AVSCAN_ENABLED != 'false' &&
|
|
||||||
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH &&
|
|
||||||
$CI_PIPELINE_SOURCE =~ "push|merge_request_event"
|
|
||||||
when: "always"
|
when: "always"
|
||||||
- when: "never"
|
- when: "never"
|
||||||
trigger:
|
trigger:
|
||||||
@@ -532,7 +503,32 @@ avscan-start:
|
|||||||
job: "avscan-prepare"
|
job: "avscan-prepare"
|
||||||
strategy: "depend"
|
strategy: "depend"
|
||||||
|
|
||||||
# Declare .environments which is in environments repository. In case it is not available
|
generate-release-assets:
|
||||||
|
stage: "generate-release-assets"
|
||||||
|
image: "registry.souvap-univention.de/souvap/tooling/images/ansible:4.10.0"
|
||||||
|
rules:
|
||||||
|
- if: "$JOB_RELEASE_ENABLED != 'false' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
||||||
|
when: "on_success"
|
||||||
|
- when: "never"
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/${ASSET_GENERATOR_REPO_PATH}
|
||||||
|
cd opendesk-asset-generator
|
||||||
|
export OPENDESK_DEPLOYMENT_AUTOMATION_PATH=${CI_PROJECT_DIR}
|
||||||
|
./opendesk_asset_generator.py
|
||||||
|
mv ./build_artefacts ${CI_PROJECT_DIR}
|
||||||
|
cd ..
|
||||||
|
rm -rf opendesk-asset-generator
|
||||||
|
ls -l ./build_artefacts
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- "./build_artefacts/chart-index.json"
|
||||||
|
- "./build_artefacts/image-index.json"
|
||||||
|
tags: []
|
||||||
|
variables:
|
||||||
|
ASSET_GENERATOR_REPO_PATH: "bmi/opendesk/tooling/opendesk-asset-generator"
|
||||||
|
|
||||||
|
# Declare .environments which is in environments repository and only loaded when INCLUDE_ENVIRONMENTS_ENABLED not false.
|
||||||
# 'cache' is used because job must contain at least one key, so cache is just a dummy key.
|
# 'cache' is used because job must contain at least one key, so cache is just a dummy key.
|
||||||
.environments:
|
.environments:
|
||||||
cache: {}
|
cache: {}
|
||||||
@@ -563,18 +559,14 @@ reuse-linter:
|
|||||||
|
|
||||||
generate-release-version:
|
generate-release-version:
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: "$JOB_RELEASE_ENABLED != 'false'"
|
||||||
$JOB_RELEASE_ENABLED != 'false' &&
|
|
||||||
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH &&
|
|
||||||
$CI_PIPELINE_SOURCE =~ "push|merge_request_event"
|
|
||||||
when: "on_success"
|
when: "on_success"
|
||||||
|
|
||||||
release:
|
release:
|
||||||
|
dependencies:
|
||||||
|
- "generate-release-assets"
|
||||||
rules:
|
rules:
|
||||||
- if: >
|
- if: "$JOB_RELEASE_ENABLED != 'false' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
||||||
$JOB_AVSCAN_ENABLED != 'false' &&
|
|
||||||
$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH &&
|
|
||||||
$CI_PIPELINE_SOURCE =~ "push|merge_request_event"
|
|
||||||
when: "on_success"
|
when: "on_success"
|
||||||
script:
|
script:
|
||||||
- >
|
- >
|
||||||
@@ -590,7 +582,7 @@ release:
|
|||||||
- |
|
- |
|
||||||
echo -e "\n[INFO] Writing data to helm value file..."
|
echo -e "\n[INFO] Writing data to helm value file..."
|
||||||
cat <<EOF >helmfile/environments/default/global.generated.yaml
|
cat <<EOF >helmfile/environments/default/global.generated.yaml
|
||||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
global:
|
global:
|
||||||
@@ -603,7 +595,16 @@ release:
|
|||||||
{
|
{
|
||||||
"branches": ["main"],
|
"branches": ["main"],
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"@semantic-release/gitlab",
|
["@semantic-release/gitlab",
|
||||||
|
{
|
||||||
|
"assets": [
|
||||||
|
{ "path": "./build_artefacts/chart-index.json",
|
||||||
|
"label": "Chart Index JSON" },
|
||||||
|
{ "path": "./build_artefacts/image-index.json",
|
||||||
|
"label": "Image Index JSON" },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"@semantic-release/release-notes-generator",
|
"@semantic-release/release-notes-generator",
|
||||||
"@semantic-release/changelog",
|
"@semantic-release/changelog",
|
||||||
["@semantic-release/git", {
|
["@semantic-release/git", {
|
||||||
@@ -622,5 +623,6 @@ release:
|
|||||||
EOF
|
EOF
|
||||||
- "semantic-release"
|
- "semantic-release"
|
||||||
needs:
|
needs:
|
||||||
|
- "generate-release-assets"
|
||||||
- "generate-docs"
|
- "generate-docs"
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -2,13 +2,14 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
variables:
|
variables:
|
||||||
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.3\
|
OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.4.2\
|
||||||
@sha256:4630299fddf4248af1ad04528f0435d78f5b2694a154c99fe72b960260a7be61"
|
@sha256:7a866a34b82dddea8867862afaaccb1d1e385854ce344fc71be492800a5b16a6"
|
||||||
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.4\
|
OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.3\
|
||||||
@sha256:386e84e2c85c33537479e4bb1e1fe744c9cce5e87bcb9a3a384dcdc1727c19c0"
|
@sha256:096e649b985dd8e46e9dadff5f7e9c7a8772bf5a1b3df1bb2b4a887716c2ca85"
|
||||||
|
|
||||||
.common:
|
.common:
|
||||||
cache: {}
|
cache: {}
|
||||||
needs: []
|
needs: []
|
||||||
tags: []
|
tags:
|
||||||
|
- "docker"
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -27,14 +27,7 @@ lint-kyverno:
|
|||||||
script:
|
script:
|
||||||
- "cd ${CI_PROJECT_DIR}/helmfile/apps/${APP}"
|
- "cd ${CI_PROJECT_DIR}/helmfile/apps/${APP}"
|
||||||
- "helmfile template -e test --include-needs > ${CI_PROJECT_DIR}/.kyverno/opendesk.yaml"
|
- "helmfile template -e test --include-needs > ${CI_PROJECT_DIR}/.kyverno/opendesk.yaml"
|
||||||
- >
|
- "node /app/opendesk-ci-cli/src/index.js generate-kyverno-tests -d ${CI_PROJECT_DIR}/.kyverno -t required -s manifest -f opendesk.yaml --skip-tests true ${APP}"
|
||||||
node /app/opendesk-ci-cli/src/index.js generate-kyverno-tests
|
|
||||||
-d ${CI_PROJECT_DIR}/.kyverno
|
|
||||||
-t required
|
|
||||||
-s manifest
|
|
||||||
-f opendesk.yaml
|
|
||||||
--skip-tests true
|
|
||||||
${APP}
|
|
||||||
- "node /app/opendesk-ci-cli/src/index.js filter-for-kinds -f ${CI_PROJECT_DIR}/.kyverno/opendesk.yaml"
|
- "node /app/opendesk-ci-cli/src/index.js filter-for-kinds -f ${CI_PROJECT_DIR}/.kyverno/opendesk.yaml"
|
||||||
- "cd ${CI_PROJECT_DIR}/.kyverno"
|
- "cd ${CI_PROJECT_DIR}/.kyverno"
|
||||||
- "kyverno test ."
|
- "kyverno test ."
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
pod:
|
pod:
|
||||||
@@ -12,7 +12,7 @@ pod:
|
|||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "disallow-default-serviceaccount"
|
- name: "disallow-default-serviceaccount"
|
||||||
rule: "disallow-default-serviceAccountName"
|
rule: "require-sa"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -20,8 +20,8 @@ pod:
|
|||||||
- "Job"
|
- "Job"
|
||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "template-imagepullsecrets"
|
- name: "require-imagepullsecrets"
|
||||||
rule: "template-imagePullSecrets"
|
rule: "require-imagepullsecrets"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -30,7 +30,7 @@ pod:
|
|||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "disallow-latest-tag"
|
- name: "disallow-latest-tag"
|
||||||
rule: "disallow-latest-tag"
|
rule: "validate-image-tag"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -38,17 +38,8 @@ pod:
|
|||||||
- "Job"
|
- "Job"
|
||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "disallow-latest-tag"
|
- name: "require-imagepullpolicy-always"
|
||||||
rule: "require-image-tag-or-digest"
|
rule: "require-imagepullpolicy-always"
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "require-imagepullpolicy"
|
|
||||||
rule: "require-imagePullPolicy"
|
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -64,23 +55,23 @@ pod:
|
|||||||
- "Deployment"
|
- "Deployment"
|
||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "template-storage"
|
- name: "require-storage"
|
||||||
rule: "template-storageClassName-pod"
|
rule: "require-storageclass-pvc"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "PersistentVolumeClaim"
|
- "PersistentVolumeClaim"
|
||||||
- name: "template-storage"
|
- name: "require-storage"
|
||||||
rule: "template-storageClassName-pvc"
|
rule: "require-storageclass-pod"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
- name: "template-storage"
|
- name: "require-storage"
|
||||||
rule: "template-requests-storage-pod"
|
rule: "require-storage-size-pvc"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "PersistentVolumeClaim"
|
- "PersistentVolumeClaim"
|
||||||
- name: "template-storage"
|
- name: "require-storage"
|
||||||
rule: "template-requests-storage-pvc"
|
rule: "require-storage-size-pod"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -93,8 +84,8 @@ pod:
|
|||||||
- "Job"
|
- "Job"
|
||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "template-image-registries"
|
- name: "restrict-image-registries"
|
||||||
rule: "template-image-registries"
|
rule: "validate-registries"
|
||||||
type: "required"
|
type: "required"
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
@@ -174,119 +165,4 @@ pod:
|
|||||||
- "Job"
|
- "Job"
|
||||||
- "Pod"
|
- "Pod"
|
||||||
- "DaemonSet"
|
- "DaemonSet"
|
||||||
- name: "require-containersecuritycontext"
|
|
||||||
rule: "require-empty-seLinuxOptions"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "require-containersecuritycontext"
|
|
||||||
rule: "require-default-procMount"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "require-containersecuritycontext"
|
|
||||||
rule: "restrict-sysctls"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-container-sock-mounts"
|
|
||||||
rule: "validate-docker-sock-mount"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-container-sock-mounts"
|
|
||||||
rule: "validate-containerd-sock-mount"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-container-sock-mounts"
|
|
||||||
rule: "validate-crio-sock-mount"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-container-sock-mounts"
|
|
||||||
rule: "validate-dockerd-sock-mount"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-host-namespaces"
|
|
||||||
rule: "disallow-host-namespaces"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-host-path"
|
|
||||||
rule: "disallow-host-path"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-host-ports"
|
|
||||||
rule: "disallow-host-ports"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "disallow-host-process"
|
|
||||||
rule: "disallow-host-process"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
- "Job"
|
|
||||||
- "Pod"
|
|
||||||
- "DaemonSet"
|
|
||||||
- name: "template-ingress"
|
|
||||||
rule: "template-ingressClassName"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "Ingress"
|
|
||||||
- name: "template-ingress"
|
|
||||||
rule: "template-tls-secretName"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "Ingress"
|
|
||||||
- name: "template-replicas"
|
|
||||||
rule: "template-replicas"
|
|
||||||
type: "required"
|
|
||||||
kinds:
|
|
||||||
- "StatefulSet"
|
|
||||||
- "Deployment"
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "disallow-container-sock-mounts"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow CRI socket mounts"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Container daemon socket bind mounts allow access to the container engine on the node.
|
|
||||||
This access can be used for privilege escalation and to manage containers outside of Kubernetes, and hence should
|
|
||||||
not be allowed.
|
|
||||||
This policy validates that the sockets used for CRI engines Docker, Containerd, and CRI-O are not used.
|
|
||||||
In addition to or replacement of this policy, preventing users from mounting the parent directories
|
|
||||||
(/var/run and /var) may be necessary to completely prevent socket bind mounts.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- name: "validate-docker-sock-mount"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: "Use of the Docker Unix socket is not allowed."
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- =(hostPath):
|
|
||||||
path: "!/var/run/docker.sock"
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- name: "validate-containerd-sock-mount"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: "Use of the Containerd Unix socket is not allowed."
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- =(hostPath):
|
|
||||||
path: "!/var/run/containerd/containerd.sock"
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- name: "validate-crio-sock-mount"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: "Use of the CRI-O Unix socket is not allowed."
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- =(hostPath):
|
|
||||||
path: "!/var/run/crio/crio.sock"
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- name: "validate-dockerd-sock-mount"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: "Use of the Docker CRI socket is not allowed."
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- =(hostPath):
|
|
||||||
path: "!/var/run/cri-dockerd.sock"
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
@@ -1,20 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "disallow-default-serviceaccount"
|
name: "disallow-default-serviceaccount"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Prevent default ServiceAccount privilege escalation"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Kubernetes automatically creates a ServiceAccount object named default for every namespace in your cluster.
|
|
||||||
These default service accounts get no permissions by default.
|
|
||||||
Accidental or intended assignment of permissions on the default service account results in elevated permissions
|
|
||||||
for all pods with default service account assigned.
|
|
||||||
This risk can be mitigated by creating a custom ServiceAccount for each application or reduce the risk by disable
|
|
||||||
auto mounting the default service account into the pod.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -22,15 +12,11 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "Pod"
|
- "Pod"
|
||||||
name: "disallow-default-serviceAccountName"
|
name: "require-sa"
|
||||||
validate:
|
validate:
|
||||||
message: >-
|
message: "serviceAccountName must be set to anything other than 'default'."
|
||||||
Field serviceAccountName must be set to anything other than 'default'.
|
pattern:
|
||||||
When serviceAccountName is 'default' then automountServiceAccountToken must set to 'false' .
|
spec:
|
||||||
anyPattern:
|
serviceAccountName: "!default"
|
||||||
- spec:
|
|
||||||
serviceAccountName: "!default"
|
|
||||||
- spec:
|
|
||||||
automountServiceAccountToken: "false"
|
|
||||||
validationFailureAction: "audit"
|
validationFailureAction: "audit"
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "disallow-host-namespaces"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow Host Namespaces"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Host namespaces (Process ID namespace, Inter-Process Communication namespace, and network namespace) allow access
|
|
||||||
to shared information and can be used to elevate privileges.
|
|
||||||
Pods should not be allowed access to host namespaces.
|
|
||||||
This policy ensures fields which make use of these host namespaces are unset or set to `false`.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- name: "disallow-host-namespaces"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
Sharing the host namespaces is disallowed. The fields spec.hostNetwork,
|
|
||||||
spec.hostIPC, and spec.hostPID must be unset or set to `false`.
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(hostPID): "false"
|
|
||||||
=(hostIPC): "false"
|
|
||||||
=(hostNetwork): "false"
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "disallow-host-path"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow hostPath"
|
|
||||||
policies.kyverno.io/subject: "Pod,Volume"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
HostPath volumes let Pods use host directories and volumes in containers.
|
|
||||||
Using host resources can be used to access shared data or escalate privileges and should not be allowed.
|
|
||||||
This policy ensures no hostPath volumes are in use.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- name: "disallow-host-path"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
HostPath volumes are forbidden. The field spec.volumes[*].hostPath must be unset.
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
- X(hostPath): "null"
|
|
||||||
- spec:
|
|
||||||
=(volumes):
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "disallow-host-ports"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow hostPorts"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Access to host ports allows potential snooping of network traffic and should not be allowed, or at minimum
|
|
||||||
restricted to a known list. This policy ensures the `hostPort` field is unset or set to `0`.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- name: "disallow-host-ports"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
Use of host ports is disallowed. The fields spec.containers[*].ports[*].hostPort
|
|
||||||
, spec.initContainers[*].ports[*].hostPort, and spec.ephemeralContainers[*].ports[*].hostPort
|
|
||||||
must either be unset or set to `0`.
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- =(ports):
|
|
||||||
- =(hostPort): 0
|
|
||||||
=(initContainers):
|
|
||||||
- =(ports):
|
|
||||||
- =(hostPort): 0
|
|
||||||
containers:
|
|
||||||
- =(ports):
|
|
||||||
- =(hostPort): 0
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "disallow-host-process"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow hostProcess"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Windows pods offer the ability to run HostProcess containers which enables privileged access to the Windows node.
|
|
||||||
Privileged access to the host is disallowed in the baseline policy.
|
|
||||||
HostProcess pods are an alpha feature as of Kubernetes v1.22.
|
|
||||||
This policy ensures the `hostProcess` field, if present, is set to `false`.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- name: "disallow-host-process"
|
|
||||||
match:
|
|
||||||
any:
|
|
||||||
- resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
HostProcess containers are disallowed. The fields spec.securityContext.windowsOptions.hostProcess,
|
|
||||||
spec.containers[*].securityContext.windowsOptions.hostProcess,
|
|
||||||
spec.initContainers[*].securityContext.windowsOptions.hostProcess, and
|
|
||||||
spec.ephemeralContainers[*].securityContext.windowsOptions.hostProcess must either be undefined or set to
|
|
||||||
`false`.
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- =(securityContext):
|
|
||||||
=(windowsOptions):
|
|
||||||
=(hostProcess): "false"
|
|
||||||
=(initContainers):
|
|
||||||
- =(securityContext):
|
|
||||||
=(windowsOptions):
|
|
||||||
=(hostProcess): "false"
|
|
||||||
containers:
|
|
||||||
- =(securityContext):
|
|
||||||
=(windowsOptions):
|
|
||||||
=(hostProcess): "false"
|
|
||||||
@@ -1,18 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "disallow-latest-tag"
|
name: "disallow-latest-tag"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow usage of latest tag"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
The ':latest' tag is mutable and can lead to unexpected errors if the image changes.
|
|
||||||
A best practice is to use an immutable tag that maps to a specific version of an application Pod.
|
|
||||||
This policy validates that the image specifies a tag and that it is not called `latest`.
|
|
||||||
Defining no image tag or digest result in the container engine retrieving the latest tag.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -20,7 +12,7 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "Pod"
|
- "Pod"
|
||||||
name: "disallow-latest-tag"
|
name: "validate-image-tag"
|
||||||
validate:
|
validate:
|
||||||
message: "Using a mutable image tag e.g. 'latest' is not allowed."
|
message: "Using a mutable image tag e.g. 'latest' is not allowed."
|
||||||
pattern:
|
pattern:
|
||||||
@@ -31,27 +23,5 @@ spec:
|
|||||||
- image: "!*:latest"
|
- image: "!*:latest"
|
||||||
containers:
|
containers:
|
||||||
- image: "!*:latest"
|
- image: "!*:latest"
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
name: "require-image-tag-or-digest"
|
|
||||||
validate:
|
|
||||||
message: "A image tag or a digest is required, otherwise latest tag is chosen."
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- image: "*:*"
|
|
||||||
=(initContainers):
|
|
||||||
- image: "*:*"
|
|
||||||
containers:
|
|
||||||
- image: "*:*"
|
|
||||||
- spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- image: "*@*"
|
|
||||||
=(initContainers):
|
|
||||||
- image: "*@*"
|
|
||||||
containers:
|
|
||||||
- image: "*@*"
|
|
||||||
validationFailureAction: "audit"
|
validationFailureAction: "audit"
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -1,16 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "require-containersecuritycontext"
|
name: "require-containersecuritycontext"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "ContainerSecurityContext best practices are set."
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
The containerSecurityContext is the most important security-related section because it has the highest precedence
|
|
||||||
and restricts the container to its minimal privileges.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -175,70 +169,5 @@ spec:
|
|||||||
- securityContext:
|
- securityContext:
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
|
|
||||||
- name: "require-empty-seLinuxOptions"
|
|
||||||
match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: "SELinux options have to be unset."
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- securityContext:
|
|
||||||
seLinuxOptions:
|
|
||||||
=(initContainers):
|
|
||||||
- securityContext:
|
|
||||||
seLinuxOptions:
|
|
||||||
containers:
|
|
||||||
- securityContext:
|
|
||||||
seLinuxOptions:
|
|
||||||
|
|
||||||
- name: "require-default-procMount"
|
|
||||||
match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
Changing the proc mount from the default is not allowed. The fields
|
|
||||||
spec.containers[*].securityContext.procMount, spec.initContainers[*].securityContext.procMount,
|
|
||||||
and spec.ephemeralContainers[*].securityContext.procMount must be unset or
|
|
||||||
set to `Default`.
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- =(securityContext):
|
|
||||||
=(procMount): "Default"
|
|
||||||
=(initContainers):
|
|
||||||
- =(securityContext):
|
|
||||||
=(procMount): "Default"
|
|
||||||
containers:
|
|
||||||
- =(securityContext):
|
|
||||||
=(procMount): "Default"
|
|
||||||
|
|
||||||
- name: "restrict-sysctls"
|
|
||||||
match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
Setting additional sysctls above the allowed type is not allowed.
|
|
||||||
The field spec.securityContext.sysctls must be unset or not use any other names
|
|
||||||
than kernel.shm_rmid_forced, net.ipv4.ip_local_port_range,
|
|
||||||
net.ipv4.ip_unprivileged_port_start, net.ipv4.tcp_syncookies and
|
|
||||||
net.ipv4.ping_group_range.
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
=(securityContext):
|
|
||||||
=(sysctls):
|
|
||||||
- =(name): >-
|
|
||||||
kernel.shm_rmid_forced |
|
|
||||||
net.ipv4.ip_local_port_range |
|
|
||||||
net.ipv4.ip_unprivileged_port_start |
|
|
||||||
net.ipv4.tcp_syncookies |
|
|
||||||
net.ipv4.ping_group_range
|
|
||||||
|
|
||||||
validationFailureAction: "audit"
|
validationFailureAction: "audit"
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -1,20 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "require-health-and-liveness-check"
|
name: "require-health-and-liveness-check"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow usage of latest tag"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
Liveness and readiness probes need to be configured to correctly manage a Pod's lifecycle during deployments,
|
|
||||||
restarts, and upgrades.
|
|
||||||
For each Pod, a periodic `livenessProbe` is performed by the kubelet to determine if the Pod's containers are
|
|
||||||
running or need to be restarted.
|
|
||||||
A `readinessProbe` is used by Services and Pods to determine if the Pod is ready to receive network traffic.
|
|
||||||
This policy validates that all containers have livenessProbe and readinessProbe defined.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -24,9 +14,8 @@ spec:
|
|||||||
- "Pod"
|
- "Pod"
|
||||||
name: "require-health-and-liveness-check"
|
name: "require-health-and-liveness-check"
|
||||||
validate:
|
validate:
|
||||||
message: >-
|
message: "Liveness and readiness probes are required. spec.containers[*].livenessProbe.periodSeconds
|
||||||
Liveness and readiness probes are required. spec.containers[*].livenessProbe.periodSeconds must be set to a
|
must be set to a value greater than 0."
|
||||||
value greater than 0.
|
|
||||||
pattern:
|
pattern:
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
|
|||||||
40
.kyverno/policies/require-imagepullpolicy-always.yaml
Normal file
40
.kyverno/policies/require-imagepullpolicy-always.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
apiVersion: "kyverno.io/v1"
|
||||||
|
kind: "ClusterPolicy"
|
||||||
|
metadata:
|
||||||
|
name: "require-imagepullpolicy-always"
|
||||||
|
spec:
|
||||||
|
background: true
|
||||||
|
rules:
|
||||||
|
- match:
|
||||||
|
resources:
|
||||||
|
kinds:
|
||||||
|
- "Pod"
|
||||||
|
name: "require-imagepullpolicy-always"
|
||||||
|
validate:
|
||||||
|
message: "The imagePullPolicy must be set to `Always` when the tag `latest` is used."
|
||||||
|
anyPattern:
|
||||||
|
- spec:
|
||||||
|
=(ephemeralContainers):
|
||||||
|
- (image): "*:latest"
|
||||||
|
imagePullPolicy: "Always"
|
||||||
|
=(initContainers):
|
||||||
|
- (image): "*:latest"
|
||||||
|
imagePullPolicy: "Always"
|
||||||
|
containers:
|
||||||
|
- (image): "*:latest"
|
||||||
|
imagePullPolicy: "Always"
|
||||||
|
- spec:
|
||||||
|
=(ephemeralContainers):
|
||||||
|
- (image): "!*:latest"
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
=(initContainers):
|
||||||
|
- (image): "!*:latest"
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
containers:
|
||||||
|
- (image): "!*:latest"
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
validationFailureAction: "audit"
|
||||||
|
...
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "require-imagepullpolicy"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Disallow usage of latest tag"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
If the `latest` tag is allowed for images, it is a good idea to have the imagePullPolicy field set to `Always` to
|
|
||||||
ensure later pulls get an updated image in case the latest tag gets updated.
|
|
||||||
This policy validates the imagePullPolicy is set to `Always` when the `latest` tag is specified explicitly or
|
|
||||||
where a tag is not defined at all.
|
|
||||||
Additionally this policy checks if the variable `.Values.global.imagePullPolicy` is used in templates.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
name: "require-imagePullPolicy"
|
|
||||||
validate:
|
|
||||||
message: >-
|
|
||||||
The imagePullPolicy must be set to `Always` when the `latest` tag is used, otherwise the value from
|
|
||||||
`.Values.global.imagePullPolicy` has to be used.
|
|
||||||
anyPattern:
|
|
||||||
- spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- (image): "*:latest | !*:*"
|
|
||||||
imagePullPolicy: "Always"
|
|
||||||
=(initContainers):
|
|
||||||
- (image): "*:latest | !*:*"
|
|
||||||
imagePullPolicy: "Always"
|
|
||||||
containers:
|
|
||||||
- (image): "*:latest | !*:*"
|
|
||||||
imagePullPolicy: "Always"
|
|
||||||
- spec:
|
|
||||||
=(ephemeralContainers):
|
|
||||||
- (image): "!*:latest"
|
|
||||||
imagePullPolicy: "kyverno"
|
|
||||||
=(initContainers):
|
|
||||||
- (image): "!*:latest"
|
|
||||||
imagePullPolicy: "kyverno"
|
|
||||||
containers:
|
|
||||||
- (image): "!*:latest"
|
|
||||||
imagePullPolicy: "kyverno"
|
|
||||||
validationFailureAction: "audit"
|
|
||||||
...
|
|
||||||
23
.kyverno/policies/require-imagepullsecets.yaml
Normal file
23
.kyverno/policies/require-imagepullsecets.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
apiVersion: "kyverno.io/v1"
|
||||||
|
kind: "ClusterPolicy"
|
||||||
|
metadata:
|
||||||
|
name: "require-imagepullsecrets"
|
||||||
|
spec:
|
||||||
|
background: true
|
||||||
|
rules:
|
||||||
|
- match:
|
||||||
|
resources:
|
||||||
|
kinds:
|
||||||
|
- "Pod"
|
||||||
|
name: "require-imagepullsecrets"
|
||||||
|
validate:
|
||||||
|
message: "ImagePullSecrets are required."
|
||||||
|
pattern:
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: "*"
|
||||||
|
validationFailureAction: "audit"
|
||||||
|
...
|
||||||
@@ -1,20 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "require-requests-limits"
|
name: "require-requests-limits"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Require resources cpu/memory request and limits."
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
As application workloads share cluster resources, it is important to limit resources requested and consumed by
|
|
||||||
each Pod.
|
|
||||||
It is recommended to require resource requests and limits per Pod, especially for memory and CPU.
|
|
||||||
If a Namespace level request or limit is specified, defaults will automatically be applied to each Pod based on
|
|
||||||
the LimitRange configuration.
|
|
||||||
This policy validates that all containers have specified requests for memory and CPU and a limit for memory.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -4,13 +4,7 @@
|
|||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "template-storage"
|
name: "require-storage"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Validate storageClass and size templates."
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
This policy validates if `.Values.persistence.storageClassNames` variables are used in templates and if the size
|
|
||||||
of volumes can be customized by `.Values.persistence.size` variable.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -18,9 +12,9 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
name: "template-storageClassName-pod"
|
name: "require-storageclass-pod"
|
||||||
validate:
|
validate:
|
||||||
message: "VolumeClaims inside pods needs to have storageClass set when templated."
|
message: "VolumeClaims inside pods need to have storageClass set when templated."
|
||||||
pattern:
|
pattern:
|
||||||
spec:
|
spec:
|
||||||
(volumeClaimTemplates):
|
(volumeClaimTemplates):
|
||||||
@@ -30,9 +24,9 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "PersistentVolumeClaim"
|
- "PersistentVolumeClaim"
|
||||||
name: "template-storageClassName-pvc"
|
name: "require-storageclass-pvc"
|
||||||
validate:
|
validate:
|
||||||
message: "PersistentVolumeClaim needs to have storageClassName set when templated."
|
message: "Persistent Volume Claim need to have storageClassName set when templated."
|
||||||
pattern:
|
pattern:
|
||||||
spec:
|
spec:
|
||||||
storageClassName: "kyverno-test"
|
storageClassName: "kyverno-test"
|
||||||
@@ -41,9 +35,9 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "StatefulSet"
|
- "StatefulSet"
|
||||||
name: "template-requests-storage-pod"
|
name: "require-storage-size-pod"
|
||||||
validate:
|
validate:
|
||||||
message: "VolumeClaims inside pods needs to have storageClass set when templated."
|
message: "VolumeClaims inside pods need to have storageClass set when templated."
|
||||||
pattern:
|
pattern:
|
||||||
spec:
|
spec:
|
||||||
(volumeClaimTemplates):
|
(volumeClaimTemplates):
|
||||||
@@ -55,9 +49,9 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "PersistentVolumeClaim"
|
- "PersistentVolumeClaim"
|
||||||
name: "template-requests-storage-pvc"
|
name: "require-storage-size-pvc"
|
||||||
validate:
|
validate:
|
||||||
message: "PersistentVolumeClaim needs to have storageClassName set when templated."
|
message: "Persistent Volume Claim need to have storageClassName set when templated."
|
||||||
pattern:
|
pattern:
|
||||||
spec:
|
spec:
|
||||||
resources:
|
resources:
|
||||||
@@ -1,18 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "require-tag-and-digest"
|
name: "require-tag-and-digest"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Require tag and digest for image."
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
To ensure that containers are not compromised in container registry by pushing malicious code to the same tag, it
|
|
||||||
is required to reference images by setting a sha256 hashed digest.
|
|
||||||
Setting only the digest is complicated for humans to compare software versions, therefore in openDesk it is
|
|
||||||
required to reference container images by tag and digest.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
|
|||||||
@@ -1,16 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
apiVersion: "kyverno.io/v1"
|
apiVersion: "kyverno.io/v1"
|
||||||
kind: "ClusterPolicy"
|
kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "template-image-registries"
|
name: "restrict-image-registries"
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Check image registry template"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
This policy verifies that a custom external registry can be template to allow downloads from a private registry or
|
|
||||||
cache.
|
|
||||||
spec:
|
spec:
|
||||||
background: true
|
background: true
|
||||||
rules:
|
rules:
|
||||||
@@ -18,7 +12,7 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
kinds:
|
kinds:
|
||||||
- "Pod"
|
- "Pod"
|
||||||
name: "template-image-registries"
|
name: "validate-registries"
|
||||||
validate:
|
validate:
|
||||||
message: "Unknown image registry."
|
message: "Unknown image registry."
|
||||||
pattern:
|
pattern:
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "template-ingress"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Validate openDesk Ingress templating"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
This policy verifies that ingress variables are templated.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Ingress"
|
|
||||||
name: "template-ingressClassName"
|
|
||||||
validate:
|
|
||||||
message: "Verifies that ingressClassName can be customized by `.Values.ingress.ingressClassName` variable."
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
ingressClassName: "kyverno"
|
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Ingress"
|
|
||||||
name: "template-tls-secretName"
|
|
||||||
validate:
|
|
||||||
message: "Verifies that tls.secretName can be customized by `.Values.ingress.tls.secretName` variable."
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- secretName: "kyverno-tls"
|
|
||||||
validationFailureAction: "audit"
|
|
||||||
...
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "template-replicas"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "Validate openDesk Pod replicas templating"
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
This policy verifies that `.Values.replicas.<app>` variables are templated.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Deployment"
|
|
||||||
- "StatefulSet"
|
|
||||||
name: "template-replicas"
|
|
||||||
validate:
|
|
||||||
message: "Verifies that replica count can be customized by `.Values.replicas.<app>` variable."
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
replicas: 42
|
|
||||||
|
|
||||||
validationFailureAction: "audit"
|
|
||||||
...
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
---
|
|
||||||
apiVersion: "kyverno.io/v1"
|
|
||||||
kind: "ClusterPolicy"
|
|
||||||
metadata:
|
|
||||||
name: "template-imagepullsecrets"
|
|
||||||
annotations:
|
|
||||||
policies.kyverno.io/title: "ImagePullSecrets template variable have to be implemented."
|
|
||||||
policies.kyverno.io/subject: "Pod"
|
|
||||||
policies.kyverno.io/description: >-
|
|
||||||
It is recommended to cache images to ensure continuous image availability during network partitions, rate limiting
|
|
||||||
or registry outages.
|
|
||||||
These caches as well as a company proxy may require authentication which will be provided as ImagePullSecrets.
|
|
||||||
This is a openDesk test to ensure that environment variables are templated in Helmfile deployment.
|
|
||||||
spec:
|
|
||||||
background: true
|
|
||||||
rules:
|
|
||||||
- match:
|
|
||||||
resources:
|
|
||||||
kinds:
|
|
||||||
- "Pod"
|
|
||||||
name: "template-imagePullSecrets"
|
|
||||||
validate:
|
|
||||||
message: "ImagePullSecrets are required."
|
|
||||||
pattern:
|
|
||||||
spec:
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: "kyverno-test"
|
|
||||||
validationFailureAction: "audit"
|
|
||||||
...
|
|
||||||
101
CHANGELOG.md
101
CHANGELOG.md
@@ -1,104 +1,3 @@
|
|||||||
# [0.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.6.0...v0.7.0) (2024-05-06)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **ci:** Add debug option. Has to be supported by stage specific configuration containing: `debug.enabled: {{ env "DEBUG_ENABLED" | default false }}` ([3dc6484](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3dc648421b80d4e170a11792604be127a3960c0e))
|
|
||||||
* **element:** Provide the internal cluster domain to synapse web ([b9ac5ec](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b9ac5ecf2def57bba0070f1c2f4a01449808f106))
|
|
||||||
* **univention-management-stack:** Add the image configuration for NATS ([e9ec2f3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e9ec2f3a6e51975ccdbd6d3575b5fc6a909502aa))
|
|
||||||
* **univention-management-stack:** Fix [#55](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/55), [#35](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/35) by updating chart "ums" to 0.11.2 and image "portal-listener" to 0.20.6; To update an existing installation you need to manually delete the `ums-portal-listener` stateful set before the update: `kubectl -n <your_namespace> delete statefulsets ums-portal-listener` ([2ad0270](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2ad027082f4cb958d68d7728d8db05f786dba0f0))
|
|
||||||
* **univention-management-stack:** Migrate UDM-REST-API image to new Univention registry ([9be3b78](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9be3b78761610db0274572d5a7c526aa34d0615f))
|
|
||||||
* **univention-management-stack:** Objectstore credentials ([d1bd43f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d1bd43fa957accdb70f0cda69983e0490ac6cfa0))
|
|
||||||
* **univention-management-stack:** Update Helm chart to 0.12.0 including required changes to openDesk Helmfile deployment. ([fefd2f6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/fefd2f6cae3617ba1f00ef0c5fa3a80cde1d6ba1))
|
|
||||||
* **univention-management-stack:** Use the NATS related image configuration ([cd22570](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/cd225703ebe67bc78faa878080639dd7cc1845a9))
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **element:** Add support for Matrix federation ([36139b4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/36139b42f1df9785b8414059bf70dc3e37616e8a))
|
|
||||||
* **helmfile:** Introduce additional variables for mailDomain and synapseDomain ([e6fe2a7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e6fe2a7c18581f637d6bd4d0553d558f753dadd2))
|
|
||||||
* **services:** Add opendesk-home service, which redirects on domain to portal ([c7e2172](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c7e217208c4cb812cc23f9aa5ea42fcb77ea7c3a))
|
|
||||||
|
|
||||||
# [0.6.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.81...v0.6.0) (2024-04-11)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **helmfile:** Improve support for external Objectstore, and fix issue with DoveCot storageClassName ([1b748b6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1b748b6bf63d75fc5232c90407a3fa885c2dd3c8)), closes [#57](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/57) [#60](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/60) [#56](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/56)
|
|
||||||
* **nextcloud:** Bump to 28.0.4 ([cb33a92](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/cb33a929ef7c13a9a578e56a631951292d14d0e4))
|
|
||||||
* **univention-management-stack:** add Guardian provisioning job image ([79c52d0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/79c52d014cec188d010a2827bb63b2635abafb2c))
|
|
||||||
* **univention-management-stack:** Update UMC to 0.11.8 ([5e3f4fa](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5e3f4faade2ea02e51f260d1d614296a6a484848))
|
|
||||||
* **univention-management-stack:** Use umbrella helm chart ([10ecb44](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/10ecb44aa675d2f139aaec6fe8d4246fa1d3dd40))
|
|
||||||
* **xwiki:** Bump to 15.10.8 and enable OIDC backchannel logout ([c395d35](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c395d35dd77bbec5e6b7d01768533f87af843560))
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* **open-xchange:** Bump to 8.23 and remove Istio prerequisite ([3be3564](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3be3564ec7168a1a2d72b58f11da84e89e81911d))
|
|
||||||
|
|
||||||
## [0.5.81](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.80...v0.5.81) (2024-03-28)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **docs:** Various updates ([50e2638](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/50e263866be8b51ef295ebf8025c3117821a2b6c))
|
|
||||||
* **element:** Update Element Web to v1.11.59 with widget sync fix and NeoBoard v1.14.0 ([0fd4a26](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0fd4a26c711fb345b79cdff1c775d7ef20335768))
|
|
||||||
* **helmfile:** Fix OpenAPI validations for Kubernetes v1.28 ([0aa4cfb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0aa4cfb46f793369a472a736b28eea834a545439))
|
|
||||||
* **nextcloud:** Bump to 28.0.3 ([34d2c05](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/34d2c059596466f8f7d6d09c2855c595391a7e0d))
|
|
||||||
* **nextcloud:** Rename default shared folder to `__Shared_with_me__` ([5f9d015](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5f9d015f0b98579d652fd4172e74835ed67ccf11))
|
|
||||||
* **open-xchange:** Bump to 8.22 ([5ebf291](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5ebf291a4dbe88a09c0afe2befa6140ad33bf30b))
|
|
||||||
* **openproject:** Bump OpenProject to 13.4.0 ([d565c05](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d565c057ddb7b348f7a829e0f931b1ea448b454b))
|
|
||||||
* **openproject:** Bump version to 13.4.1 ([7cc3964](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7cc39647d89538630bac9caa158c47b5cb8d2c45))
|
|
||||||
* **services:** Update Otterize Policies ([42f63e3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/42f63e399230495c83f934e07beb9fc950ef5e29))
|
|
||||||
* **univention-management-stack:** Add missing authenticator secret mount to portal-server ([5a39e87](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5a39e8725b6454591f552f87f12535201e52df7c))
|
|
||||||
* **univention-management-stack:** Update LDAP server for BSI base security compliance ([8e889db](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8e889db63eaf05b24cc23838545f63d969232c65))
|
|
||||||
* **univention-management-stack:** Update ldap-notifier and ldap-server ([a41ddd5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a41ddd5451a9fbd3c6319827fee3eaffbd931271))
|
|
||||||
* **univention-management-stack:** Update provisioning charts, images and helm value to add authentication ([8c97bcf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8c97bcf994487281ae94e6d66c73f4a11c08a0be))
|
|
||||||
|
|
||||||
## [0.5.80](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.79...v0.5.80) (2024-03-11)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **ci:** Remove creation of release artefacts, use the `images.yaml` and `charts.yaml` in `./helmfile/environments/default` for information about the artefacts instead. ([ee99eef](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ee99eefb72d3207866ffd1b3bd21a36bd55ad288))
|
|
||||||
* **collabora:** Bump image to 23.05.9.4.1 ([9c32058](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9c32058fcc21a14e9e66a46064ea044402638920))
|
|
||||||
* **docs:** Add development.md and refactor `images.yaml` and `charts.yaml` ([a2b333b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a2b333b46277a4bb86b75ca04edb64e69efff916))
|
|
||||||
* **helmfile:** YAML handling of seLinuxOptions and align overall `toYaml` syntax ([011ad2c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/011ad2cd6bfe552e04a598452e8814d4d1029152))
|
|
||||||
* **nextcloud:** Update images digests ([bc18724](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bc18724d70ffff749d5192487944e62233cf4376))
|
|
||||||
* **openproject:** Bump to 13.3.1 ([7ee9e47](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7ee9e47e8269334294c80093a359b247d86f5d62))
|
|
||||||
|
|
||||||
## [0.5.79](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.78...v0.5.79) (2024-02-29)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **collabora:** Bump image to 23.05.9.2.1 ([f4b8226](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f4b8226ea13971a38d61145ea9ac3821bc35f6b3))
|
|
||||||
* **collabora:** Fix aliasgroups configuration whitelisting the Nextcloud host ([8b065fd](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8b065fd9d789cdd597a584937fefaae40f42bba2))
|
|
||||||
* **docs:** Update version numbers of functional components for release in README.md ([31e5cf3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/31e5cf317ca7cd84a94cf42d57d0964152904471))
|
|
||||||
* **element:** Provide end-to-end encryption as user controlled option ([3d31127](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3d31127a6ab0fa1d3af02695b521db5918932279))
|
|
||||||
* **helmfile:** Enhance objectore environment variables to allow external Object Store ([d444226](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d4442261aa141e21222dc13407023b96570d055f))
|
|
||||||
* **helmfile:** Set debuglevel to WARN instead of INFO when debug is not enabled. ([2efceef](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2efceef076beb06a3719859d7f4e2f0d03b99f44))
|
|
||||||
* **nextcloud:** Bump images to enable password_policy and fix email with groupware ([8807b24](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8807b24ce09e59aaea39c349e9e12ee2a44a117a))
|
|
||||||
* **univention-management-stack:** Bump Keycloak Extensions chart and configure the `/univention/meta.json` to be retrieved from `ums-stack-gateway` to avoid the inline 404 during Keycloak login. ([2023d5b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2023d5bce4642f794831670713b1a2520a0419d6))
|
|
||||||
* **univention-management-stack:** Provisioning version bump ([410a023](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/410a0237149a5e41434c09795959bc53e57fb4ca))
|
|
||||||
* **univention-management-stack:** Template more Keycloak Extension values incl. logLevel ([7ec123b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7ec123b9a174c8dade1fe9f6679796979749efab))
|
|
||||||
|
|
||||||
## [0.5.78](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.77...v0.5.78) (2024-02-23)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* **ci:** Move main development repo OpenCoDE ([43718b8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/43718b8da2966b87fab8e206df449c923f6615e7))
|
|
||||||
* **ci:** Run release pipeline only on pushes to main ([13dcb00](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/13dcb004419b4efd8ded8c25e7afa41d10156be8))
|
|
||||||
* **ci:** Update kyverno rules ([d9263c9](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d9263c90110df241adaef8d1a5df8e8d8ceda11b))
|
|
||||||
* **docs:** Add missing footnote regarding Nubus ([bc6e4f8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bc6e4f8e5dcc32cc476de579fd56dbade79b7c31))
|
|
||||||
* **nextcloud:** Set admin priviledges for users in central IAM ([a3e415d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a3e415d575ba24b99e741994fb29d0f0cfd11d8a))
|
|
||||||
* **univention-management-stack:** Scaling udm-rest-api ([57d0f61](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/57d0f61b2c3e789b72a0098907817c97fee69268))
|
|
||||||
* **univention-management-stack:** Set Keycloak CSP header to allow session continuation in admin portal. ([a398e5a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a398e5aaf131c1f00b09e1776d6daf10f2c343ad))
|
|
||||||
* **univention-management-stack:** UMS portal-server scalability ([b1b4c28](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b1b4c28618e0eca31b59719e9e1f2db8ecff7f5c))
|
|
||||||
* **univention-management-stack:** Univention Portal upstream codefixes version bump ([c2f62f7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c2f62f7c9487b2119b0d3efd98b40c92efb97c5d))
|
|
||||||
* **univention-management-stack:** Update provisioning to fix high CPU usage when in idle ([d9c23bd](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d9c23bdf0b955c0b5e4c82dd1ee785b75ce18a3b))
|
|
||||||
|
|
||||||
## [0.5.77](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.76...v0.5.77) (2024-02-16)
|
## [0.5.77](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v0.5.76...v0.5.77) (2024-02-16)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
48
README.md
48
README.md
@@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
SPDX-License-Identifier: Apache-2.0
|
SPDX-License-Identifier: Apache-2.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@@ -11,13 +11,11 @@ SPDX-License-Identifier: Apache-2.0
|
|||||||
* [Requirements](#requirements)
|
* [Requirements](#requirements)
|
||||||
* [Getting started](#getting-started)
|
* [Getting started](#getting-started)
|
||||||
* [Advanced customization](#advanced-customization)
|
* [Advanced customization](#advanced-customization)
|
||||||
* [Development](#development)
|
|
||||||
* [Releases](#releases)
|
* [Releases](#releases)
|
||||||
* [Components](#components)
|
* [Components](#components)
|
||||||
* [Feedback](#feedback)
|
* [Feedback](#feedback)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
* [Copyright](#copyright)
|
* [Copyright](#copyright)
|
||||||
* [Footnotes](#footnotes)
|
|
||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
@@ -27,17 +25,17 @@ Aufbau ZenDiS" of Germany's Federal Ministry of the Interior.
|
|||||||
|
|
||||||
openDesk currently features the following functional main components:
|
openDesk currently features the following functional main components:
|
||||||
|
|
||||||
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
|
| 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) |
|
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.52](https://github.com/element-hq/element-desktop/blob/develop/CHANGELOG.md#changes-in-11152-2023-12-19) | [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/) |
|
| 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.4](https://nextcloud.com/de/changelog/#28-0-4) | [Nextcloud 28](https://docs.nextcloud.com/) |
|
| File management | Nextcloud | [28.0.2](https://nextcloud.com/de/changelog/#28-0-2) | [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) |
|
| Groupware | OX Appsuite | [8.20](https://documentation.open-xchange.com/appsuite/releases/8.20/) | 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) |
|
| Knowledge management | XWiki | [15.10.4](https://www.xwiki.org/xwiki/bin/view/Blog/XWiki15104Released) | [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) |
|
| Portal & IAM | Nubus | Product Preview[^1] | [Univention's documentation website](https://docs.software-univention.de/n/en/index.html) |
|
||||||
| Project management | OpenProject | [13.4.1](https://www.openproject.org/docs/release-notes/13-4-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
| Project management | OpenProject | [13.3.0](https://www.openproject.org/docs/release-notes/13-3-0/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
|
||||||
| Videoconferencing | Jitsi | [2.0.8922](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_8922) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
| Videoconferencing | Jitsi | [2.0.8922](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_8922) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
|
||||||
| Weboffice | Collabora | [23.05.9.4.1](https://www.collaboraoffice.com/collabora-online-23-05-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
|
| Weboffice | Collabora | [23.05.9.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/) |
|
||||||
|
|
||||||
While not all components are perfectly shaped for the execution inside containers, one of the project's objectives is to
|
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 practises regarding container design and operations.
|
||||||
@@ -77,10 +75,6 @@ Of course, further development also includes enhancing the documentation itself.
|
|||||||
- [Monitoring](./docs/monitoring.md)
|
- [Monitoring](./docs/monitoring.md)
|
||||||
- [Theming](./docs/theming.md)
|
- [Theming](./docs/theming.md)
|
||||||
|
|
||||||
# Development
|
|
||||||
|
|
||||||
⟶ To understand the repository contents from a developer perspective please read the [Development](./docs/development.md) guide.
|
|
||||||
|
|
||||||
# Releases
|
# Releases
|
||||||
|
|
||||||
All technical releases are created using [Semantic Versioning](https://semver.org/lang/de/).
|
All technical releases are created using [Semantic Versioning](https://semver.org/lang/de/).
|
||||||
@@ -89,10 +83,9 @@ Gitlab provides an
|
|||||||
[overview on the releases](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/releases)
|
[overview on the releases](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/releases)
|
||||||
of this project.
|
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
|
The following release artefacts are provided beside the default source code assets:
|
||||||
in the files from the release's git-tag:
|
- `chart-index.json`: An overview of all Helm charts used by the release.
|
||||||
- `./helmfile/environments/default/images.yaml`
|
- `image-index.json`: An overview of all container images used by the release.
|
||||||
- `./helmfile/environments/default/charts.yaml`
|
|
||||||
|
|
||||||
⟶ Visit our detailed [Workflow](./docs/workflow.md) docs.
|
⟶ Visit our detailed [Workflow](./docs/workflow.md) docs.
|
||||||
|
|
||||||
@@ -108,7 +101,7 @@ Related to the deployment / contents of this repository,
|
|||||||
please use the [issues within this project](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/issues).
|
please use the [issues within this project](https://gitlab.opencode.de/bmi/opendesk/deployment/sovereign-workplace/-/issues).
|
||||||
|
|
||||||
If you want to address other topics, please check the section
|
If you want to address other topics, please check the section
|
||||||
["Rückmeldungen und Beteiligung" in the OVERVIEW.md](https://gitlab.opencode.de/bmi/opendesk/info/-/blob/main/OVERVIEW.md#rückmeldungen-und-beteiligung) of the [openDesk Info Repository](https://gitlab.opencode.de/bmi/opendesk/info).
|
["Rückmeldungen und Beteiligung" of the Infos' project OVERVIEW.md](https://gitlab.opencode.de/bmi/opendesk/info/-/blob/main/OVERVIEW.md#rückmeldungen-und-beteiligung).
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
@@ -117,12 +110,3 @@ This project uses the following license: Apache-2.0
|
|||||||
# Copyright
|
# Copyright
|
||||||
|
|
||||||
Copyright (C) 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
Copyright (C) 2024 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
|
||||||
# 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
|
|
||||||
[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.
|
|
||||||
|
|||||||
21
docs/ci.md
21
docs/ci.md
@@ -4,7 +4,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||||||
-->
|
-->
|
||||||
<h1>CI/CD</h1>
|
<h1>CI/CD</h1>
|
||||||
|
|
||||||
This page covers openDesk deployment automation via Gitlab CI.
|
This page will cover openDesk automation via Gitlab CI.
|
||||||
|
|
||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
* [Deployment](#deployment)
|
* [Deployment](#deployment)
|
||||||
@@ -13,31 +13,30 @@ This page covers openDesk deployment automation via Gitlab CI.
|
|||||||
|
|
||||||
# Deployment
|
# Deployment
|
||||||
|
|
||||||
The project includes a `.gitlab-ci.yml` that allows you to execute the deployment from a GitLab instance of your choice.
|
The project includes a `.gitlab-ci.yml` that allows you to execute the deployment from a Gitlab instance of your choice.
|
||||||
|
|
||||||
|
|
||||||
When starting the pipeline through the GitLab UI, you will be queried for some variables plus the following ones:
|
When starting the pipeline through the Gitlab UI, you will be queried for some variables plus the following ones:
|
||||||
|
|
||||||
- `DOMAIN` = The domain to deploy to.
|
- `DOMAIN` = The domain to deploy to.
|
||||||
- `MAIL_DOMAIN` = (optional) Specify domain (f.e. root FQDN) for Mail, defaults to `DOMAIN`.
|
- `ISTIO_DOMAIN` = istio.`DOMAIN`
|
||||||
- `SYNAPSE_DOMAIN` = (optional) Specify domain (f.e. root FQDN) for Synapse, defaults to `DOMAIN`.
|
- `NAMESPACE`: Defines into which namespace of your K8s cluster the SWP will be installed
|
||||||
- `NAMESPACE`: Defines into which namespace of your K8s cluster openDesk will be installed
|
|
||||||
- `MASTER_PASSWORD_WEB_VAR`: Overwrites value of `MASTER_PASSWORD`
|
- `MASTER_PASSWORD_WEB_VAR`: Overwrites value of `MASTER_PASSWORD`
|
||||||
|
|
||||||
Based on your input, the following variables will be set:
|
Based on your input, the following variables will be set:
|
||||||
- `MASTER_PASSWORD` = `MASTER_PASSWORD_WEB_VAR`. If `MASTER_PASSWORD_WEB_VAR`
|
- `MASTER_PASSWORD` = `MASTER_PASSWORD_WEB_VAR`. If `MASTER_PASSWORD_WEB_VAR`
|
||||||
is not set, the default for `MASTER_PASSWORD` will be used, unless you set
|
is not set, the default for `MASTER_PASSWORD` will be used, unless you set
|
||||||
`MASTER_PASSWORD` as a masked CI/CD variable in GitLab to supersede the default.
|
`MASTER_PASSWORD` as a masked CI/CD variable in Gitlab to supersede the default.
|
||||||
|
|
||||||
You might want to set credential variables in the GitLab project at `Settings` > `CI/CD` > `Variables`.
|
You might want to set credential variables in the Gitlab project at `Settings` > `CI/CD` > `Variables`.
|
||||||
|
|
||||||
# Tests
|
# Tests
|
||||||
|
|
||||||
The GitLab CI pipeline contains a job named `run-tests` that can trigger a test suite pipeline on another GitLab project.
|
The gitlab-ci pipeline contains a job named `run-tests` that can trigger a test suite pipeline on another gitlab project.
|
||||||
The `DEPLOY_`-variables are used to determine which components should be tested.
|
The `DEPLOY_`-variables are used to determine which components should be tested.
|
||||||
In order for the trigger to work, the variable `TESTS_PROJECT_URL` has to be set on this GitLab project's CI variables
|
In order for the trigger to work, the variable `TESTS_PROJECT_URL` has to be set on this gitlab project's CI variables
|
||||||
that can be found at `Settings` -> `CI/CD` -> `Variables`. The variable should have this format:
|
that can be found at `Settings` -> `CI/CD` -> `Variables`. The variable should have this format:
|
||||||
`<domain of gitlab>/api/v4/projects/<id>`.
|
`<domain of gitlab>/api/v4/projects/<id>`.
|
||||||
|
|
||||||
If the branch of the test pipeline is not `main` this can be set with the `.gitlab-ci.yml` variable
|
If the branch of the test pipeline is not `main` this can be set with the .gitlab-ci.yml variable
|
||||||
`TESTS_BRANCH` while creating a new pipeline.
|
`TESTS_BRANCH` while creating a new pipeline.
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
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
|
SPDX-License-Identifier: Apache-2.0
|
||||||
-->
|
-->
|
||||||
<h1>Components</h1>
|
<h1>Components</h1>
|
||||||
@@ -35,6 +34,7 @@ they need to be replaced in production deployments.
|
|||||||
| ClamAV (Simple) | Antivirus engine | Eval |
|
| ClamAV (Simple) | Antivirus engine | Eval |
|
||||||
| Collabora | Weboffice | Functional |
|
| Collabora | Weboffice | Functional |
|
||||||
| CryptPad | Weboffice | Functional |
|
| CryptPad | Weboffice | Functional |
|
||||||
|
| Dovecot | Mail backend | Functional |
|
||||||
| Element | Secure communications platform | Functional |
|
| Element | Secure communications platform | Functional |
|
||||||
| Intercom Service | Cross service data exchange | Functional |
|
| Intercom Service | Cross service data exchange | Functional |
|
||||||
| Jitsi | Videoconferencing | Functional |
|
| Jitsi | Videoconferencing | Functional |
|
||||||
@@ -44,8 +44,7 @@ they need to be replaced in production deployments.
|
|||||||
| Nextcloud | File share | Functional |
|
| Nextcloud | File share | Functional |
|
||||||
| OpenProject | Project management | Functional |
|
| OpenProject | Project management | Functional |
|
||||||
| OX Appsuite | Groupware | Functional |
|
| OX Appsuite | Groupware | Functional |
|
||||||
| OX Dovecot | Mail backend (IMAP) | Functional |
|
| Provisioning | Backend provisioning | Functional |
|
||||||
| Provisioning (OX Connector) | Groupware provisioning | Functional |
|
|
||||||
| Postfix | MTA | Eval |
|
| Postfix | MTA | Eval |
|
||||||
| PostgreSQL | Database | Eval |
|
| PostgreSQL | Database | Eval |
|
||||||
| Redis | Cache Database | Eval |
|
| Redis | Cache Database | Eval |
|
||||||
@@ -74,7 +73,7 @@ flowchart TD
|
|||||||
|
|
||||||
## Intercom Service (ICS)
|
## Intercom Service (ICS)
|
||||||
|
|
||||||
The Univention Intercom Service's role is to enable cross-application integration based on browser interaction.
|
The UCS 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
|
Handling authentication when the frontend of an application is using the API from another application is often a
|
||||||
challenge.
|
challenge.
|
||||||
For more details on the ICS please refer to its own [doc](./components/intercom-service.md).
|
For more details on the ICS please refer to its own [doc](./components/intercom-service.md).
|
||||||
@@ -114,13 +113,8 @@ The Filestore can be enabled on a per-project level in OpenProject's project adm
|
|||||||
# Identity data flows
|
# Identity data flows
|
||||||
|
|
||||||
An overview of
|
An overview of
|
||||||
- components that consume the LDAP service.
|
- components that consume the LDAP service. Mostly by using a dedicated LDAP search account.
|
||||||
- The components accessing the LDAP using a component specific LDAP search account.
|
- components using Univention Keycloak as identity provider (IdP). If not otherwise denoted based on the OAuth2 / OIDC flows.
|
||||||
- components using Univention Keycloak as identity provider (IdP).
|
|
||||||
- If not otherwise denoted the components make use of OAuth2 / OIDC flows.
|
|
||||||
- All components have a client configured in Keycloak, except for Jitsi which is using authentication with the
|
|
||||||
[Authorization Code Flow](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth) that does not
|
|
||||||
require an OIDC client to be configured in Keycloak.
|
|
||||||
|
|
||||||
Some components trust others to handle authentication for them.
|
Some components trust others to handle authentication for them.
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,6 @@ SPDX-License-Identifier: Apache-2.0
|
|||||||
|
|
||||||
* [Disclaimer](#disclaimer)
|
* [Disclaimer](#disclaimer)
|
||||||
* [Enable debugging](#enable-debugging)
|
* [Enable debugging](#enable-debugging)
|
||||||
* [Adding containers to a pod for debugging purposes](#adding-containers-to-a-pod-for-debugging-purposes)
|
|
||||||
* [Adding a container to a pod/deployment - Dev/Test only](#adding-a-container-to-a-poddeployment---devtest-only)
|
|
||||||
* [Temporary/ephemeral containers](#temporaryephemeral-containers)
|
|
||||||
* [Components](#components)
|
* [Components](#components)
|
||||||
* [MariaDB](#mariadb)
|
* [MariaDB](#mariadb)
|
||||||
* [Nextcloud](#nextcloud)
|
* [Nextcloud](#nextcloud)
|
||||||
@@ -38,94 +35,6 @@ and set the loglevel 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!
|
**Note:** All containers should write their log output to STDOUT, if you find (valuable) logs inside a container, please let us know!
|
||||||
|
|
||||||
# Adding containers to a pod for debugging purposes
|
|
||||||
|
|
||||||
During test or development you come across the need to execute tools, browse or even change things in the filesystem of another container.
|
|
||||||
|
|
||||||
This can be a challenge the more security hardened container images are, because there are no debugging tools available and sometimes not even a shell.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## 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/).
|
|
||||||
|
|
||||||
- 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`.
|
|
||||||
- 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.
|
|
||||||
- Save & update the deployment.
|
|
||||||
|
|
||||||
The following example can e.g. be used to debug the `openDesk-Nextcloud-PHP` container, in case you want to modify files, don't forget to set `readOnlyRootFilesystem` to `true` on the PHP container.
|
|
||||||
|
|
||||||
```
|
|
||||||
shareProcessNamespace: true
|
|
||||||
containers:
|
|
||||||
- name: debugging
|
|
||||||
image: registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
|
|
||||||
command: ["/bin/bash", "-c", "while true; do echo 'This is a temporary container for debugging'; sleep 5 ; done"]
|
|
||||||
securityContext:
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
privileged: false
|
|
||||||
runAsUser: 65532
|
|
||||||
runAsGroup: 65532
|
|
||||||
runAsNonRoot: true
|
|
||||||
readOnlyRootFilesystem: false
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
```
|
|
||||||
|
|
||||||
- After the deployment was reloaded open the shell of the debugging container.
|
|
||||||
- When you've been successful you will see the processes of both/all containers in the pod when doing a `ps aux`.
|
|
||||||
- To access another containers filesystem just select the PID of a process from the other container an do a `cd /proc/<selected_process_id>/root`
|
|
||||||
|
|
||||||
## Temporary/ephemeral containers
|
|
||||||
|
|
||||||
Interesting read we picked most of the details below from: https://iximiuz.com/en/posts/kubernetes-ephemeral-containers/
|
|
||||||
|
|
||||||
Sometimes you do not want to add a container permanently to your existing deployment. In that case you could use [ephemeral containers](https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/).
|
|
||||||
|
|
||||||
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.
|
|
||||||
- `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.
|
|
||||||
|
|
||||||
e.g.
|
|
||||||
|
|
||||||
```
|
|
||||||
export EPH_CONTAINER_NAME=debugging
|
|
||||||
export NAMESPACE=my_testdeployment
|
|
||||||
export DEPLOYMENT_NAME=opendesk-nextcloud-php
|
|
||||||
export POD_NAME=opendesk-nextcloud-php-6686d47cfb-7vtmf
|
|
||||||
export DEBUG_IMAGE=registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-debugging-image:1.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
You still need to ensure that your deployment supports process namespace sharing:
|
|
||||||
|
|
||||||
```
|
|
||||||
kubectl -n ${NAMESPACE} patch deployment ${DEPLOYMENT_NAME} --patch '
|
|
||||||
spec:
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
shareProcessNamespace: true'
|
|
||||||
```
|
|
||||||
|
|
||||||
Now you can add the ephemeral container with:
|
|
||||||
```
|
|
||||||
kubectl -n ${NAMESPACE} debug -it --attach=false -c ${EPH_CONTAINER_NAME} --image={DEBUG_IMAGE} ${POD_NAME}
|
|
||||||
```
|
|
||||||
and open it's interactive terminal with
|
|
||||||
```
|
|
||||||
kubectl -n ${NAMESPACE} attach -it -c ${EPH_CONTAINER_NAME} ${POD_NAME}
|
|
||||||
```
|
|
||||||
|
|
||||||
# Components
|
# Components
|
||||||
|
|
||||||
## MariaDB
|
## MariaDB
|
||||||
|
|||||||
@@ -1,142 +0,0 @@
|
|||||||
<!--
|
|
||||||
SPDX-FileCopyrightText: 2024 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
|
|
||||||
-->
|
|
||||||
|
|
||||||
<h1>Developing openDesk deployment automation</h1>
|
|
||||||
|
|
||||||
Active development on the deployment is currently only available for project members.
|
|
||||||
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)
|
|
||||||
* [Linting](#linting)
|
|
||||||
* [Renovate](#renovate)
|
|
||||||
* [Mirroring](#mirroring)
|
|
||||||
* [Get new artefacts mirrored](#get-new-artefacts-mirrored)
|
|
||||||
* [Creating new charts / images](#creating-new-charts--images)
|
|
||||||
|
|
||||||
# Overview
|
|
||||||
|
|
||||||
The following sketch provides an high level overview to get a basic understanding of the deployment relevant
|
|
||||||
structure of this repository. An understanding of that structure is vital if you want to contribute to
|
|
||||||
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']
|
|
||||||
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]
|
|
||||||
```
|
|
||||||
|
|
||||||
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`.
|
|
||||||
|
|
||||||
Before you look into any app specifc 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
|
|
||||||
|
|
||||||
The `main` branch is configured to be the default branch, as visitors of the project on Open CoDE should see that
|
|
||||||
branch by default.
|
|
||||||
|
|
||||||
Please use the `develop` branch to diverge your own branch(es) from. See the [workflow guide](./workflow.md)
|
|
||||||
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.
|
|
||||||
|
|
||||||
# External artefacts - `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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Please find details on these tools below.
|
|
||||||
|
|
||||||
## Linting
|
|
||||||
|
|
||||||
In the project's CI there is a step dedicated to lint the two yaml files, as we want them to be in
|
|
||||||
- alphabetical order regarding the components and
|
|
||||||
- in a logical order regarding the non-commented lines (registry > repository > tag).
|
|
||||||
|
|
||||||
In the linting step the [openDesk CI CLI](https://gitlab.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli) is used to apply the
|
|
||||||
just mentioned sorting and the result is compared with the unsorted version. If there is a delta the linting fails and you probably
|
|
||||||
want to fix it by running the CLI tool locally.
|
|
||||||
|
|
||||||
**Note**: Please ensure that in component blocks you use comments only at the beginning of the block or at its end. Ideally you just stick
|
|
||||||
with the many available examples in the yaml files.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```
|
|
||||||
synapse:
|
|
||||||
# providerCategory: 'Supplier'
|
|
||||||
# providerResponsible: 'Element'
|
|
||||||
# upstreamRegistry: 'registry-1.docker.io'
|
|
||||||
# upstreamRepository: 'matrixdotorg/synapse'
|
|
||||||
# upstreamMirrorTagFilterRegEx: '^v(\d+)\.(\d+)\.(\d+)$'
|
|
||||||
# upstreamMirrorStartFrom: ['1', '91', '2']
|
|
||||||
registry: "registry.opencode.de"
|
|
||||||
repository: "bmi/opendesk/components/supplier/element/images-mirror/synapse"
|
|
||||||
tag: "v1.91.2@sha256:1d19508db417bb2b911c8e086bd3dc3b719ee75c6f6194d58af59b4c32b11322"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Renovate
|
|
||||||
|
|
||||||
Uses a regular expression to match the values of the following attributes:
|
|
||||||
|
|
||||||
- `registry`
|
|
||||||
- `repository`
|
|
||||||
- `tag`
|
|
||||||
|
|
||||||
Checks for newer versions of the given artefact and creates a MR containing the newest version's tag (and digest).
|
|
||||||
|
|
||||||
## Mirroring
|
|
||||||
|
|
||||||
- See also: https://gitlab.opencode.de/bmi/opendesk/tooling/oci-pull-mirror
|
|
||||||
|
|
||||||
**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 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:
|
|
||||||
- `# upstreamRegistry` *required*: To identify the source registry
|
|
||||||
- `# upstreamRepository` *required*: To identify the source repository
|
|
||||||
- `# upstreamMirrorTagFilterRegEx` *required*: If this annotation is set it activates the mirror for the component. Only tags are being mirrored that match the given regular expression.
|
|
||||||
- `# upstreamMirrorStartFrom` *optional*: Array of numeric values in case you want to mirror only artefacts beginning with a specific version. You must use capturing groups
|
|
||||||
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
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
You include them in your branch with all required annotations and either
|
|
||||||
1. ask somebody from the platform development team to trigger the mirror's CI based on your branch or
|
|
||||||
2. you get your branch merged to `develop` already.
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
for Helm charts.
|
|
||||||
|
|
||||||
You may also want to make use of our [standard CI](https://gitlab.opencode.de/bmi/opendesk/tooling/gitlab-config) to
|
|
||||||
easily get Charts and Images that are signed, linted, scanned and released.
|
|
||||||
Check out the `.gitlab-ci.yaml` files in the project's [Charts](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts) or [Images](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images) to get an idea how little you need to do yourself.
|
|
||||||
@@ -10,7 +10,6 @@ This documentation should enable you to create your own evaluation instance of o
|
|||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
* [Requirements](#requirements)
|
* [Requirements](#requirements)
|
||||||
* [Customize environment](#customize-environment)
|
* [Customize environment](#customize-environment)
|
||||||
* [DNS](#dns)
|
|
||||||
* [Domain](#domain)
|
* [Domain](#domain)
|
||||||
* [Apps](#apps)
|
* [Apps](#apps)
|
||||||
* [Private registries](#private-registries)
|
* [Private registries](#private-registries)
|
||||||
@@ -50,25 +49,11 @@ files.
|
|||||||
For the following guide, we will use `dev` as environment, where variables can be set in
|
For the following guide, we will use `dev` as environment, where variables can be set in
|
||||||
`helmfile/environments/dev/values.yaml`.
|
`helmfile/environments/dev/values.yaml`.
|
||||||
|
|
||||||
## DNS
|
|
||||||
|
|
||||||
The deployment is designed to deploy each application/service under a dedicated subdomain.
|
|
||||||
For your convenience, we recommend to create a `*.domain.tld` A-Record to your cluster ingress controller,
|
|
||||||
otherwise you need to create an A-Record for each subdomain.
|
|
||||||
|
|
||||||
| Record name | Type | Value | Additional information |
|
|
||||||
| ----------------------- | ---- | -------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
||||||
| *.domain.tld | A | IPv4 address of your Ingress Controller | |
|
|
||||||
| *.domain.tld | AAAA | IPv6 address of your Ingress Controller | |
|
|
||||||
| mail.domain.tld | A | IPv4 address of your postfix NodePort/LoadBalancer | Optional mail should directly be delivered to openDesk's Postfix |
|
|
||||||
| mail.domain.tld | AAAA | IPv6 address of your postfix NodePort/LoadBalancer | Optional mail should directly be delivered to openDesk's Postfix |
|
|
||||||
| domain.tld | MX | `10 mail.domain.tld` | |
|
|
||||||
| domain.tld | TXT | `v=spf1 +a +mx +a:mail.domain.tld ~all` | Optional, use proper MTA record if present |
|
|
||||||
| _dmarc.domain.tld | TXT | `v=DMARC1; p=quarantine` | Optional |
|
|
||||||
| _matrix._tcp.domain.tld | SRV | `1 10 PORT matrix.domain.tld` | The `PORT` is your NodePort/LoadBalancer port of `opendesk-synapse-federation` service. |
|
|
||||||
|
|
||||||
## Domain
|
## Domain
|
||||||
|
|
||||||
|
The deployment is designed to deploy each app under a subdomains. For your convenience, we recommend to create a
|
||||||
|
`*.domain.tld` A-Record to your cluster ingress controller, otherwise you need to create an A-Record for each subdomain.
|
||||||
|
|
||||||
A list of all subdomains can be found in `helmfile/environments/default/global.yaml`.
|
A list of all subdomains can be found in `helmfile/environments/default/global.yaml`.
|
||||||
|
|
||||||
All subdomains can be customized. For example, _Nextcloud_ can be changed to `files.domain.tld` in `dev` environment:
|
All subdomains can be customized. For example, _Nextcloud_ can be changed to `files.domain.tld` in `dev` environment:
|
||||||
@@ -83,49 +68,29 @@ The domain have to be set either via `dev` environment
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
global:
|
global:
|
||||||
domain: "domain.tld"
|
domain: "my.open.desk"
|
||||||
|
istio:
|
||||||
|
domain: "istio.my.open.desk"
|
||||||
```
|
```
|
||||||
|
|
||||||
or via environment variable
|
or via environment variable
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
export DOMAIN=domain.tld
|
export DOMAIN=my.open.desk
|
||||||
|
export ISTIO_DOMAIN=istio.my.open.desk
|
||||||
```
|
```
|
||||||
|
|
||||||
Additionally, you can announce/specify an alternative domain for mail and chat.
|
When you configure each subdomain individually, you can set `global.domain` and `istio.domain` to the same value.
|
||||||
|
|
||||||
As an example, if your domain is `domain.tld` and you want to send mails with this domain, then you can deploy openDesk to
|
Istio is only used for Open-Xchange Appsuite 8, when you don't want to install it, you can disable Istio:
|
||||||
`*.opendesk.domain.tld` and send mail as `default.user@domain.tld`.
|
|
||||||
Webmail will be accessed via `mail.opendesk.domain.tld` in this scenario.
|
|
||||||
The required routing have to be implemented by yourself.
|
|
||||||
|
|
||||||
The alternative domains have to be set either via `dev` environment
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
global:
|
istio:
|
||||||
mailDomain: "open.desk"
|
enabled: false
|
||||||
synapseDomain: "open.desk"
|
oxAppsuite:
|
||||||
|
enabled: false
|
||||||
```
|
```
|
||||||
|
|
||||||
or via environment variable
|
|
||||||
|
|
||||||
```shell
|
|
||||||
export MAIL_DOMAIN=open.desk
|
|
||||||
export SYNAPSE_DOMAIN=open.desk
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to federate with other Matrix instances, you need to add an SRV record to signal Matrix delegation.
|
|
||||||
|
|
||||||
| Record name | Type | Value |
|
|
||||||
|--------------------------------|------|---------------------------|
|
|
||||||
| _matrix._tcp.SYNAPSE_DOMAIN | SRV | `1 10 PORT matrix.DOMAIN` |
|
|
||||||
| matrix-fed._tcp.SYNAPSE_DOMAIN | SRV | `1 10 PORT matrix.DOMAIN` |
|
|
||||||
| MAIL_DOMAIN | MX | `10 mail.domain.tld` |
|
|
||||||
|
|
||||||
_Hint:_ Replace `SYNAPSE_DOMAIN`, `MAIL_DOMAIN` and `DOMAIN` with proper values of your domain settings.
|
|
||||||
|
|
||||||
_Hint:_ `matrix.DOMAIN` can also be an IP address where synapse tls port is listening to.
|
|
||||||
|
|
||||||
### Apps
|
### Apps
|
||||||
|
|
||||||
All available apps and their default value can be found in `helmfile/environments/default/workplace.yaml`.
|
All available apps and their default value can be found in `helmfile/environments/default/workplace.yaml`.
|
||||||
|
|||||||
@@ -70,3 +70,4 @@ grafana:
|
|||||||
|:----------|-----------------------------------|-------------------------|---------------------|
|
|:----------|-----------------------------------|-------------------------|---------------------|
|
||||||
| Collabora | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
| Collabora | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||||||
| Nextcloud | :white_check_mark: | :x: | :x: |
|
| Nextcloud | :white_check_mark: | :x: | :x: |
|
||||||
|
| Jitsi | :white_check_mark: | :x: | :white_check_mark: |
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ openDesk is a Kubernetes only solution and requires an existing Kubernetes (K8s)
|
|||||||
- [HelmDiff](https://github.com/databus23/helm-diff) >= 3.6.0
|
- [HelmDiff](https://github.com/databus23/helm-diff) >= 3.6.0
|
||||||
- Volume provisioner supporting RWO (read-write-once)
|
- Volume provisioner supporting RWO (read-write-once)
|
||||||
- Certificate handling with [cert-manager](https://cert-manager.io/)
|
- Certificate handling with [cert-manager](https://cert-manager.io/)
|
||||||
|
- [Istio](https://istio.io/) is currently required to deploy and operate OX AppSuite8
|
||||||
|
|
||||||
# Hardware
|
# Hardware
|
||||||
|
|
||||||
@@ -55,9 +56,13 @@ configured ingress controller deployed.
|
|||||||
|
|
||||||
**Maintained controllers:**
|
**Maintained controllers:**
|
||||||
- [NGINX Ingress Controller](https://github.com/nginxinc/kubernetes-ingress)
|
- [NGINX Ingress Controller](https://github.com/nginxinc/kubernetes-ingress)
|
||||||
- [Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx)
|
|
||||||
- [HAProxy Kubernetes Ingress Controller](https://github.com/haproxytech/kubernetes-ingress)
|
- [HAProxy Kubernetes Ingress Controller](https://github.com/haproxytech/kubernetes-ingress)
|
||||||
|
|
||||||
|
**Community Supported:**
|
||||||
|
- [Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx)
|
||||||
|
|
||||||
|
When you want to use Open-Xchange Appsuite 8, you need to deploy and configure additionally [Istio](https://istio.io/)
|
||||||
|
|
||||||
# Volume provisioner
|
# Volume provisioner
|
||||||
|
|
||||||
Initial evaluation deployment requires a `ReadWriteOnce` volume provisioner. For local deployment a local- or hostPath-
|
Initial evaluation deployment requires a `ReadWriteOnce` volume provisioner. For local deployment a local- or hostPath-
|
||||||
@@ -77,6 +82,7 @@ openDesk certificate management disabled.
|
|||||||
|
|
||||||
Evaluation the openDesk deployment does not require any external service to start, but features may be limited.
|
Evaluation the openDesk deployment does not require any external service to start, but features may be limited.
|
||||||
|
|
||||||
|
|
||||||
| Group | Type | Version | Tested against |
|
| Group | Type | Version | Tested against |
|
||||||
|----------|---------------------|---------|-----------------------|
|
|----------|---------------------|---------|-----------------------|
|
||||||
| Cache | Memached | `1.6.x` | Memached |
|
| Cache | Memached | `1.6.x` | Memached |
|
||||||
|
|||||||
@@ -20,42 +20,38 @@ Verified positive effects are marke with a check-mark in `Scaling (verified)` co
|
|||||||
marked with a gear.
|
marked with a gear.
|
||||||
|
|
||||||
|
|
||||||
| Component | Name | Scaling (effective) | Scaling (verified) |
|
| Component | Name | Scaling (effective) | Scaling (verified) |
|
||||||
|-----------------------------|------------------------------------------|:-------------------:|:------------------:|
|
|------------------|------------------------------------------|:-------------------:|:------------------:|
|
||||||
| ClamAV | `replicas.clamav` | :white_check_mark: | :white_check_mark: |
|
| ClamAV | `replicas.clamav` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.clamd` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.clamd` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.freshclam` | :x: | :x: |
|
| | `replicas.freshclam` | :x: | :x: |
|
||||||
| | `replicas.icap` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.icap` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.milter` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.milter` | :white_check_mark: | :white_check_mark: |
|
||||||
| Collabora | `replicas.collabora` | :white_check_mark: | :gear: |
|
| Collabora | `replicas.collabora` | :white_check_mark: | :gear: |
|
||||||
| CryptPad | `replicas.cryptpad` | :white_check_mark: | :gear: |
|
| CryptPad | `replicas.cryptpad` | :white_check_mark: | :gear: |
|
||||||
| Dovecot | `replicas.dovecot` | :x: | :gear: |
|
| Dovecot | `replicas.dovecot` | :x: | :gear: |
|
||||||
| Element | `replicas.element` | :white_check_mark: | :white_check_mark: |
|
| Element | `replicas.element` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.matrixNeoBoardWidget` | :white_check_mark: | :gear: |
|
| | `replicas.matrixNeoBoardWidget` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.matrixNeoChoiceWidget` | :white_check_mark: | :gear: |
|
| | `replicas.matrixNeoChoiceWidget` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.matrixNeoDateFixBot` | :white_check_mark: | :gear: |
|
| | `replicas.matrixNeoDateFixBot` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.matrixNeoDateFixWidget` | :white_check_mark: | :gear: |
|
| | `replicas.matrixNeoDateFixWidget` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.matrixUserVerificationService` | :white_check_mark: | :gear: |
|
| | `replicas.matrixUserVerificationService` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.synapse` | :x: | :gear: |
|
| | `replicas.synapse` | :x: | :gear: |
|
||||||
| | `replicas.synapseWeb` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.synapseWeb` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.wellKnown` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.wellKnown` | :white_check_mark: | :white_check_mark: |
|
||||||
| Intercom Service | `replicas.intercomService` | :white_check_mark: | :white_check_mark: |
|
| Intercom Service | `replicas.intercomService` | :white_check_mark: | :gear: |
|
||||||
| Jitsi | `replicas.jibri` | :white_check_mark: | :gear: |
|
| Jitsi | `replicas.jibri` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.jicofo` | :white_check_mark: | :gear: |
|
| | `replicas.jicofo` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.jitsi ` | :white_check_mark: | :gear: |
|
| | `replicas.jitsi ` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.jitsiKeycloakAdapter` | :white_check_mark: | :gear: |
|
| | `replicas.jitsiKeycloakAdapter` | :white_check_mark: | :gear: |
|
||||||
| | `replicas.jvb ` | :x: | :x: |
|
| | `replicas.jvb ` | :x: | :x: |
|
||||||
| Keycloak | `replicas.keycloak` | :white_check_mark: | :gear: |
|
| Keycloak | `replicas.keycloak` | :white_check_mark: | :gear: |
|
||||||
| Memcached | `replicas.memcached` | :gear: | :gear: |
|
| Memcached | `replicas.memcached` | :gear: | :gear: |
|
||||||
| Minio | `replicas.minioDistributed` | :white_check_mark: | :white_check_mark: |
|
| Minio | `replicas.minioDistributed` | :white_check_mark: | :white_check_mark: |
|
||||||
| Nextcloud | `replicas.nextcloudApache2` | :white_check_mark: | :white_check_mark: |
|
| Nextcloud | `replicas.nextcloudApache2` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.nextcloudExporter` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.nextcloudExporter` | :white_check_mark: | :white_check_mark: |
|
||||||
| | `replicas.nextcloudPHP` | :white_check_mark: | :white_check_mark: |
|
| | `replicas.nextcloudPHP` | :white_check_mark: | :white_check_mark: |
|
||||||
| OpenProject | `replicas.openproject` | :white_check_mark: | :white_check_mark: |
|
| OpenProject | `replicas.openproject` | :white_check_mark: | :white_check_mark: |
|
||||||
| Postfix | `replicas.postfix` | :x: | :gear: |
|
| Postfix | `replicas.postfix` | :x: | :gear: |
|
||||||
| Redis | `replicas.redis` | :gear: | :gear: |
|
| Redis | `replicas.redis` | :gear: | :gear: |
|
||||||
| Univention Management Stack | | :gear: | :gear: |
|
| XWiki | `replicas.xwiki` | :x: | :gear: |
|
||||||
| | `replicas.umsPortalFrontend` | :white_check_mark: | :white_check_mark: |
|
|
||||||
| | `replicas.umsPortalServer` | :white_check_mark: | :white_check_mark: |
|
|
||||||
| | `replicas.umsUdmRestApi` | :white_check_mark: | :white_check_mark: |
|
|
||||||
| XWiki | `replicas.xwiki` | :x: | :gear: |
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
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
|
SPDX-License-Identifier: Apache-2.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@@ -140,19 +139,17 @@ As a standard, the openDesk platform development team uses [reuse.software](http
|
|||||||
|
|
||||||
openDesk uses Apache 2.0 as the license for their work. A typical reuse copyright and license header looks like this:
|
openDesk uses Apache 2.0 as the license for their work. A typical reuse copyright and license header looks like this:
|
||||||
```
|
```
|
||||||
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
```
|
```
|
||||||
As the way to mark the license header as a comment differs between the various filetypes, please find matching examples for the types all across the [deployment automation repository](https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/deployment/sovereign-workplace).
|
As the way to mark the license header as a comment differs between the various filetypes, please find matching examples for the types all across the [deployment automation repository](https://gitlab.opencode.de/bmi/souveraener_arbeitsplatz/deployment/sovereign-workplace).
|
||||||
|
|
||||||
**Remark**: If there is already an existing `SPDX-FileCopyrightText` please just add the one from the above example.
|
|
||||||
|
|
||||||
## Development workflow
|
## Development workflow
|
||||||
|
|
||||||
### Disclaimer
|
### 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 backports 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.
|
- In production scenarios, you should replace the community versions of the functional components with supported, SLA-backend paid versions.
|
||||||
- openDesk aims to always update to the latest available releases of the community components and we therefore have rolling technical releases.
|
- openDesk aims to always update to the latest available releases of the community components and we therefore have rolling technical releases.
|
||||||
|
|
||||||
### Workflow
|
### Workflow
|
||||||
@@ -228,28 +225,22 @@ gitGraph
|
|||||||
|
|
||||||
The Standard Quality Gate addresses quality assurance steps that should be executed within each of the mentioned quality gates in the workflow.
|
The Standard Quality Gate addresses quality assurance steps that should be executed within each of the mentioned quality gates in the workflow.
|
||||||
|
|
||||||
1. Linting
|
|
||||||
- Blocking
|
|
||||||
- Licening: [reuse](https://github.com/fsfe/reuse-tool)
|
|
||||||
- openDesk specific: Especially `images.yaml` and `charts.yaml`, find more details in the [development](./development.md) docu
|
|
||||||
- Non Blocking
|
|
||||||
- Security: [Kyverno policy check](../.kyverno) addressing some IT-Grundschutz requirements
|
|
||||||
- Formal: Yaml
|
|
||||||
1. Deploy the full openDesk stack from scratch:
|
1. Deploy the full openDesk stack from scratch:
|
||||||
- All deployment steps must be successful (green)
|
- All deployment steps must be successful (green)
|
||||||
- All tests from the end-to-end test set must be successful
|
- All tests from the end-to-end test set must be successful
|
||||||
1. Update deployment[^3] of the full openDesk stack and apply the quality measures from the step #1:
|
2. Update deployment[^3] of the full openDesk stack and apply the quality measures from the step #1:
|
||||||
- Deploy the current merge target baseline (`develop` or `main`)
|
- Deploy the current merge target baseline (`develop` or `main`)
|
||||||
- Update deploy from your QA branch into the instance from the previous step
|
- Update deploy from your QA branch into the instance from the previous step
|
||||||
1. No showstopper found regarding
|
3. No showstopper found regarding
|
||||||
- SBOM compliance[^4]
|
- SBOM compliance[^4]
|
||||||
- Malware check
|
- Malware check
|
||||||
- CVE check[^5]
|
- CVE check[^5]
|
||||||
- Kubescape scan[^5]
|
- Kubescape scan[^5]
|
||||||
|
- Kyverno policy check (also covering some basic requirements from IT-Grundschutz)[^5]
|
||||||
|
|
||||||
Steps #1 to #3 from above are executed as GitLab CI and therefore documented within GitLab.
|
Steps #1 and #2 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 #3 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.
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart TD
|
flowchart TD
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ collabora:
|
|||||||
username: "collabora-internal-admin"
|
username: "collabora-internal-admin"
|
||||||
password: {{ .Values.secrets.collabora.adminPassword | quote }}
|
password: {{ .Values.secrets.collabora.adminPassword | quote }}
|
||||||
aliasgroups:
|
aliasgroups:
|
||||||
- host: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
|
- host: "https://{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}:443"
|
||||||
|
|
||||||
fullnameOverride: "collabora"
|
fullnameOverride: "collabora"
|
||||||
|
|
||||||
@@ -19,9 +19,9 @@ grafana:
|
|||||||
dashboards:
|
dashboards:
|
||||||
enabled: {{ .Values.grafana.dashboards.enabled }}
|
enabled: {{ .Values.grafana.dashboards.enabled }}
|
||||||
labels:
|
labels:
|
||||||
{{ .Values.grafana.dashboards.labels | toYaml | nindent 6 }}
|
{{- toYaml .Values.grafana.dashboards.labels | nindent 6 }}
|
||||||
annotations:
|
annotations:
|
||||||
{{ .Values.grafana.dashboards.annotations | toYaml | nindent 6 }}
|
{{- toYaml .Values.grafana.dashboards.annotations | nindent 6 }}
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: "{{ .Values.global.imageRegistry | default .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"
|
repository: "{{ .Values.global.imageRegistry | default .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"
|
||||||
@@ -90,11 +90,11 @@ prometheus:
|
|||||||
servicemonitor:
|
servicemonitor:
|
||||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
labels:
|
labels:
|
||||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
{{- toYaml .Values.prometheus.serviceMonitors.labels | nindent 6 }}
|
||||||
rules:
|
rules:
|
||||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||||
additionalLabels:
|
additionalLabels:
|
||||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 6 }}
|
{{- toYaml .Values.prometheus.prometheusRules.labels | nindent 6 }}
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.collabora }}
|
replicaCount: {{ .Values.replicas.collabora }}
|
||||||
|
|
||||||
@@ -126,8 +126,7 @@ securityContext:
|
|||||||
- "NET_RAW"
|
- "NET_RAW"
|
||||||
- "SYS_CHROOT"
|
- "SYS_CHROOT"
|
||||||
- "MKNOD"
|
- "MKNOD"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.collabora }}
|
||||||
{{ .Values.seLinuxOptions.collabora | toYaml | nindent 4 }}
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
create: true
|
create: true
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/{{ .Values.charts.cryptpad.repository }}"
|
||||||
{{ .Values.charts.cryptpad.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "cryptpad"
|
- name: "cryptpad"
|
||||||
|
|||||||
@@ -70,8 +70,7 @@ securityContext:
|
|||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
runAsUser: 4001
|
runAsUser: 4001
|
||||||
runAsGroup: 4001
|
runAsGroup: 4001
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.cryptpad }}
|
||||||
{{ .Values.seLinuxOptions.cryptpad | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
create: true
|
create: true
|
||||||
|
|||||||
@@ -13,40 +13,35 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/{{ .Values.charts.element.repository }}"
|
||||||
{{ .Values.charts.element.repository }}"
|
|
||||||
- name: "element-well-known-repo"
|
- name: "element-well-known-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.elementWellKnown.verify }}
|
verify: {{ .Values.charts.elementWellKnown.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/{{ .Values.charts.elementWellKnown.repository }}"
|
||||||
{{ .Values.charts.elementWellKnown.repository }}"
|
|
||||||
- name: "synapse-web-repo"
|
- name: "synapse-web-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.synapseWeb.verify }}
|
verify: {{ .Values.charts.synapseWeb.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/{{ .Values.charts.synapseWeb.repository }}"
|
||||||
{{ .Values.charts.synapseWeb.repository }}"
|
|
||||||
- name: "synapse-repo"
|
- name: "synapse-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.synapse.verify }}
|
verify: {{ .Values.charts.synapse.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/{{ .Values.charts.synapse.repository }}"
|
||||||
{{ .Values.charts.synapse.repository }}"
|
|
||||||
- name: "synapse-create-account-repo"
|
- name: "synapse-create-account-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.synapseCreateAccount.verify }}
|
verify: {{ .Values.charts.synapseCreateAccount.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/{{ .Values.charts.synapseCreateAccount.repository }}"
|
||||||
{{ .Values.charts.synapseCreateAccount.repository }}"
|
|
||||||
|
|
||||||
# openDesk Matrix Widgets
|
# openDesk Matrix Widgets
|
||||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets
|
||||||
@@ -64,32 +59,28 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
|
||||||
- name: "matrix-neochoice-widget-repo"
|
- name: "matrix-neochoice-widget-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
verify: {{ .Values.charts.matrixNeoboardWidget.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
||||||
{{ .Values.charts.matrixNeoboardWidget.repository }}"
|
|
||||||
- name: "matrix-neodatefix-widget-repo"
|
- name: "matrix-neodatefix-widget-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
|
verify: {{ .Values.charts.matrixNeodatefixWidget.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/{{ .Values.charts.matrixNeodatefixWidget.repository }}"
|
||||||
{{ .Values.charts.matrixNeodatefixWidget.repository }}"
|
|
||||||
- name: "matrix-neodatefix-bot-repo"
|
- name: "matrix-neodatefix-bot-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
|
verify: {{ .Values.charts.matrixNeodatefixBot.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/{{ .Values.charts.matrixNeodatefixBot.repository }}"
|
||||||
{{ .Values.charts.matrixNeodatefixBot.repository }}"
|
|
||||||
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
configuration:
|
configuration:
|
||||||
endToEndEncryption: true
|
endToEndEncryption: false
|
||||||
additionalConfiguration:
|
additionalConfiguration:
|
||||||
logout_redirect_url: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout?client_id=matrix&post_logout_redirect_uri=https%3A%2F%2F{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
logout_redirect_url: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout?client_id=matrix&post_logout_redirect_uri=https%3A%2F%2F{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||||
|
|
||||||
@@ -15,6 +15,9 @@ configuration:
|
|||||||
portal_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/"
|
portal_url: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/"
|
||||||
custom_css_variables:
|
custom_css_variables:
|
||||||
--cpd-color-text-action-accent: {{ .Values.theme.colors.primary | quote }}
|
--cpd-color-text-action-accent: {{ .Values.theme.colors.primary | quote }}
|
||||||
|
widget_types:
|
||||||
|
- jitsi
|
||||||
|
- net.nordeck
|
||||||
|
|
||||||
"net.nordeck.element_web.module.widget_lifecycle":
|
"net.nordeck.element_web.module.widget_lifecycle":
|
||||||
widget_permissions:
|
widget_permissions:
|
||||||
@@ -107,8 +110,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.element }}
|
||||||
{{ .Values.seLinuxOptions.element | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.matrixNeoBoardWidget }}
|
||||||
{{ .Values.seLinuxOptions.matrixNeoBoardWidget | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.matrixNeoChoiceWidget }}
|
||||||
{{ .Values.seLinuxOptions.matrixNeoChoiceWidget | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ securityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.synapseCreateUser }}
|
||||||
{{ .Values.seLinuxOptions.synapseCreateUser | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ configuration:
|
|||||||
bot:
|
bot:
|
||||||
username: "meetings-bot"
|
username: "meetings-bot"
|
||||||
displayname: "Terminplaner Bot"
|
displayname: "Terminplaner Bot"
|
||||||
openxchangeBaseUrl: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
openxchangeBaseUrl: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
strings:
|
strings:
|
||||||
breakoutSessionWidgetName: "Breakoutsessions"
|
breakoutSessionWidgetName: "Breakoutsessions"
|
||||||
calendarRoomName: "Terminplaner"
|
calendarRoomName: "Terminplaner"
|
||||||
@@ -35,8 +35,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.matrixNeoDateFixBot }}
|
||||||
{{ .Values.seLinuxOptions.matrixNeoDateFixBot | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
extraEnvVars:
|
extraEnvVars:
|
||||||
- name: "ACCESS_TOKEN"
|
- name: "ACCESS_TOKEN"
|
||||||
@@ -44,6 +43,8 @@ extraEnvVars:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: "matrix-neodatefix-bot-account"
|
name: "matrix-neodatefix-bot-account"
|
||||||
key: "access_token"
|
key: "access_token"
|
||||||
|
- name: "ENABLE_CRYPTO"
|
||||||
|
value: "false"
|
||||||
|
|
||||||
image:
|
image:
|
||||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
configuration:
|
configuration:
|
||||||
bot:
|
bot:
|
||||||
username: "meetings-bot"
|
username: "meetings-bot"
|
||||||
homeserver: {{ .Values.global.synapseDomain | default .Values.global.domain }}
|
|
||||||
|
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
@@ -19,8 +18,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.matrixNeoDateFixWidget }}
|
||||||
{{ .Values.seLinuxOptions.matrixNeoDateFixWidget | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -35,6 +35,5 @@ securityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.synapseCreateUser }}
|
||||||
{{ .Values.seLinuxOptions.synapseCreateUser | toYaml | nindent 4 }}
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.matrixUserVerificationService }}
|
||||||
{{ .Values.seLinuxOptions.matrixUserVerificationService | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
extraEnvVars:
|
extraEnvVars:
|
||||||
- name: "UVS_ACCESS_TOKEN"
|
- name: "UVS_ACCESS_TOKEN"
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
clusterDomain: {{ .Values.cluster.networking.domain }}
|
|
||||||
|
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities:
|
capabilities:
|
||||||
@@ -16,8 +14,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.synapseWeb }}
|
||||||
{{ .Values.seLinuxOptions.synapseWeb | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ configuration:
|
|||||||
password: {{ .Values.databases.synapse.password | default .Values.secrets.postgresql.matrixUser | quote }}
|
password: {{ .Values.databases.synapse.password | default .Values.secrets.postgresql.matrixUser | quote }}
|
||||||
|
|
||||||
homeserver:
|
homeserver:
|
||||||
serverName: {{ .Values.global.synapseDomain | default .Values.global.domain }}
|
|
||||||
appServiceConfigs:
|
appServiceConfigs:
|
||||||
- as_token: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
- as_token: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
||||||
hs_token: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
hs_token: {{ .Values.secrets.intercom.synapseAsToken | quote }}
|
||||||
@@ -80,8 +79,7 @@ containerSecurityContext:
|
|||||||
runAsGroup: 10991
|
runAsGroup: 10991
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.synapse }}
|
||||||
{{ .Values.seLinuxOptions.synapse | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
---
|
---
|
||||||
configuration:
|
configuration:
|
||||||
e2ee:
|
e2ee:
|
||||||
forceDisable: false
|
forceDisable: true
|
||||||
|
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
@@ -18,8 +18,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.wellKnown }}
|
||||||
{{ .Values.seLinuxOptions.wellKnown | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/{{ .Values.charts.intercomService.repository }}"
|
||||||
{{ .Values.charts.intercomService.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "intercom-service"
|
- name: "intercom-service"
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.intercom }}
|
||||||
{{ .Values.seLinuxOptions.intercom | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
domain: {{ .Values.global.domain | quote }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
@@ -27,7 +26,7 @@ global:
|
|||||||
ics:
|
ics:
|
||||||
secret: {{ .Values.secrets.intercom.secret | quote }}
|
secret: {{ .Values.secrets.intercom.secret | quote }}
|
||||||
issuerBaseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
issuerBaseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
|
||||||
originRegex: "{{ .Values.global.domain }}"
|
originRegex: "{{ .Values.istio.domain }}|{{ .Values.global.domain }}"
|
||||||
keycloak:
|
keycloak:
|
||||||
realm: {{ .Values.platform.realm | quote }}
|
realm: {{ .Values.platform.realm | quote }}
|
||||||
default:
|
default:
|
||||||
@@ -49,7 +48,7 @@ ics:
|
|||||||
password: {{ .Values.cache.intercomService.password | default .Values.secrets.redis.password | quote }}
|
password: {{ .Values.cache.intercomService.password | default .Values.secrets.redis.password | quote }}
|
||||||
openxchange:
|
openxchange:
|
||||||
oci: true
|
oci: true
|
||||||
url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
audience: "opendesk-oxappsuite"
|
audience: "opendesk-oxappsuite"
|
||||||
nextcloud:
|
nextcloud:
|
||||||
audience: "opendesk-nextcloud"
|
audience: "opendesk-nextcloud"
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/{{ .Values.charts.jitsi.repository }}"
|
||||||
{{ .Values.charts.jitsi.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "jitsi"
|
- name: "jitsi"
|
||||||
|
|||||||
@@ -23,8 +23,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 1993
|
runAsUser: 1993
|
||||||
runAsGroup: 1993
|
runAsGroup: 1993
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.jitsiKeycloakAdapter }}
|
||||||
{{ .Values.seLinuxOptions.jitsiKeycloakAdapter | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
deletePodsOnSuccess: {{ .Values.cleanup.deletePodsOnSuccess }}
|
||||||
@@ -68,6 +67,7 @@ jitsi:
|
|||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities: {}
|
capabilities: {}
|
||||||
|
enabled: true
|
||||||
privileged: false
|
privileged: false
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
@@ -75,8 +75,7 @@ jitsi:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.jitsi }}
|
||||||
{{ .Values.seLinuxOptions.jitsi | toYaml | nindent 8 }}
|
|
||||||
prosody:
|
prosody:
|
||||||
image:
|
image:
|
||||||
repository: "{{ .Values.global.imageRegistry | default .Values.images.prosody.registry }}/{{ .Values.images.prosody.repository }}"
|
repository: "{{ .Values.global.imageRegistry | default .Values.images.prosody.registry }}/{{ .Values.images.prosody.repository }}"
|
||||||
@@ -116,6 +115,7 @@ jitsi:
|
|||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities: {}
|
capabilities: {}
|
||||||
|
enabled: true
|
||||||
privileged: false
|
privileged: false
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
@@ -123,8 +123,7 @@ jitsi:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.prosody }}
|
||||||
{{ .Values.seLinuxOptions.prosody | toYaml | nindent 8 }}
|
|
||||||
jicofo:
|
jicofo:
|
||||||
replicaCount: {{ .Values.replicas.jicofo }}
|
replicaCount: {{ .Values.replicas.jicofo }}
|
||||||
image:
|
image:
|
||||||
@@ -138,6 +137,7 @@ jitsi:
|
|||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities: {}
|
capabilities: {}
|
||||||
|
enabled: true
|
||||||
privileged: false
|
privileged: false
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
@@ -145,8 +145,7 @@ jitsi:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.jicofo }}
|
||||||
{{ .Values.seLinuxOptions.jicofo | toYaml | nindent 8 }}
|
|
||||||
jvb:
|
jvb:
|
||||||
replicaCount: {{ .Values.replicas.jvb }}
|
replicaCount: {{ .Values.replicas.jvb }}
|
||||||
image:
|
image:
|
||||||
@@ -161,6 +160,7 @@ jitsi:
|
|||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities: {}
|
capabilities: {}
|
||||||
|
enabled: true
|
||||||
privileged: false
|
privileged: false
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
@@ -168,8 +168,23 @@ jitsi:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.jvb }}
|
||||||
{{ .Values.seLinuxOptions.jvb | toYaml | nindent 8 }}
|
metrics:
|
||||||
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
|
image:
|
||||||
|
repository: "{{ .Values.global.imageRegistry }}/{{ .Values.images.jitsiExporter.repository }}"
|
||||||
|
tag: {{ .Values.images.jitsiExporter.tag }}
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
|
selector:
|
||||||
|
{{- toYaml .Values.prometheus.serviceMonitors.labels | nindent 10 }}
|
||||||
|
grafanaDashboards:
|
||||||
|
enabled: {{ .Values.grafana.dashboards.enabled }}
|
||||||
|
labels:
|
||||||
|
{{- toYaml .Values.grafana.dashboards.labels | nindent 10 }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml .Values.grafana.dashboards.annotations | nindent 10 }}
|
||||||
|
|
||||||
jibri:
|
jibri:
|
||||||
replicaCount: {{ .Values.replicas.jibri }}
|
replicaCount: {{ .Values.replicas.jibri }}
|
||||||
image:
|
image:
|
||||||
@@ -207,8 +222,7 @@ patchJVB:
|
|||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.jitsiPatchJVB }}
|
||||||
{{ .Values.seLinuxOptions.jitsiPatchJVB | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.jitsiPatchJVB.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.jitsiPatchJVB.registry | quote }}
|
||||||
|
|||||||
@@ -13,16 +13,14 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/{{ .Values.charts.nextcloudManagement.repository }}"
|
||||||
{{ .Values.charts.nextcloudManagement.repository }}"
|
|
||||||
- name: "nextcloud-repo"
|
- name: "nextcloud-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.nextcloud.verify }}
|
verify: {{ .Values.charts.nextcloud.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/{{ .Values.charts.nextcloud.repository }}"
|
||||||
{{ .Values.charts.nextcloud.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "opendesk-nextcloud-management"
|
- name: "opendesk-nextcloud-management"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ global:
|
|||||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
|
||||||
|
istioDomain: {{ .Values.istio.domain }}
|
||||||
|
|
||||||
additionalAnnotations:
|
additionalAnnotations:
|
||||||
intents.otterize.com/service-name: "opendesk-nextcloud-php"
|
intents.otterize.com/service-name: "opendesk-nextcloud-php"
|
||||||
@@ -46,20 +47,12 @@ configuration:
|
|||||||
ldap:
|
ldap:
|
||||||
host: {{ .Values.ldap.host | quote }}
|
host: {{ .Values.ldap.host | quote }}
|
||||||
password: {{ .Values.secrets.univentionManagementStack.ldapSearch.nextcloud | quote }}
|
password: {{ .Values.secrets.univentionManagementStack.ldapSearch.nextcloud | quote }}
|
||||||
adminGroupName: "managed-by-attribute-FileshareAdmin"
|
|
||||||
objectstore:
|
objectstore:
|
||||||
auth:
|
auth:
|
||||||
accessKey:
|
accessKey:
|
||||||
value: {{ .Values.objectstores.nextcloud.username | quote }}
|
value: "nextcloud_user"
|
||||||
secretKey:
|
secretKey:
|
||||||
value: {{ .Values.objectstores.nextcloud.secretKey | default .Values.secrets.minio.nextcloudUser | quote }}
|
value: {{ .Values.secrets.minio.nextcloudUser | quote }}
|
||||||
bucket: {{ .Values.objectstores.nextcloud.bucket | quote }}
|
|
||||||
host: {{ .Values.objectstores.nextcloud.endpoint | quote }}
|
|
||||||
region: {{ .Values.objectstores.nextcloud.region | quote }}
|
|
||||||
storageClass: {{ .Values.objectstores.nextcloud.storageClass | quote }}
|
|
||||||
port: {{ .Values.objectstores.nextcloud.port | quote }}
|
|
||||||
pathStyle: {{ .Values.objectstores.nextcloud.pathStyle | quote }}
|
|
||||||
useSSL: {{ .Values.objectstores.nextcloud.useSSL | quote }}
|
|
||||||
oidc:
|
oidc:
|
||||||
username:
|
username:
|
||||||
value: "opendesk-nextcloud"
|
value: "opendesk-nextcloud"
|
||||||
@@ -94,8 +87,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.nextcloudManagement }}
|
||||||
{{ .Values.seLinuxOptions.nextcloudManagement | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
|
loglevel: {{ if .Values.debug.enabled }}"0"{{ else }}"1"{{ end }}
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ exporter:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.nextcloudExporter }}
|
||||||
{{ .Values.seLinuxOptions.nextcloudExporter | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudExporter.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.nextcloudExporter.registry | quote }}
|
||||||
repository: "{{ .Values.images.nextcloudExporter.repository }}"
|
repository: "{{ .Values.images.nextcloudExporter.repository }}"
|
||||||
@@ -36,12 +35,12 @@ exporter:
|
|||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
labels:
|
labels:
|
||||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
{{- toYaml .Values.prometheus.serviceMonitors.labels | nindent 8 }}
|
||||||
prometheusRule:
|
prometheusRule:
|
||||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||||
additionalLabels:
|
additionalLabels:
|
||||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
{{- toYaml .Values.prometheus.prometheusRules.labels | nindent 8 }}
|
||||||
replicaCount: {{ .Values.replicas.nextcloudExporter }}
|
replicas: {{ .Values.replicas.nextcloudExporter }}
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.nextcloudExporter | toYaml | nindent 4 }}
|
{{ .Values.resources.nextcloudExporter | toYaml | nindent 4 }}
|
||||||
|
|
||||||
@@ -79,8 +78,7 @@ php:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.nextcloudPHP }}
|
||||||
{{ .Values.seLinuxOptions.nextcloudPHP | toYaml | nindent 6 }}
|
|
||||||
cron:
|
cron:
|
||||||
successfulJobsHistoryLimit: {{ if .Values.debug.enabled }}"3"{{ else }}"0"{{ end }}
|
successfulJobsHistoryLimit: {{ if .Values.debug.enabled }}"3"{{ else }}"0"{{ end }}
|
||||||
debug:
|
debug:
|
||||||
@@ -94,12 +92,12 @@ php:
|
|||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
labels:
|
labels:
|
||||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
|
{{- toYaml .Values.prometheus.serviceMonitors.labels | nindent 8 }}
|
||||||
prometheusRule:
|
prometheusRule:
|
||||||
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
enabled: {{ .Values.prometheus.prometheusRules.enabled }}
|
||||||
additionalLabels:
|
additionalLabels:
|
||||||
{{ .Values.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
|
{{- toYaml .Values.prometheus.prometheusRules.labels | nindent 8 }}
|
||||||
replicaCount: {{ .Values.replicas.nextcloudPHP }}
|
replicas: {{ .Values.replicas.nextcloudPHP }}
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.nextcloudPHP | toYaml | nindent 4 }}
|
{{ .Values.resources.nextcloudPHP | toYaml | nindent 4 }}
|
||||||
|
|
||||||
@@ -120,8 +118,7 @@ apache2:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.nextcloudApache2 }}
|
||||||
{{ .Values.seLinuxOptions.nextcloudApache2 | toYaml | nindent 6 }}
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: {{ .Values.ingress.enabled }}
|
enabled: {{ .Values.ingress.enabled }}
|
||||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||||
@@ -133,7 +130,7 @@ apache2:
|
|||||||
repository: {{ .Values.images.nextcloudApache2.repository | quote }}
|
repository: {{ .Values.images.nextcloudApache2.repository | quote }}
|
||||||
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
tag: {{ .Values.images.nextcloudApache2.tag | quote }}
|
tag: {{ .Values.images.nextcloudApache2.tag | quote }}
|
||||||
replicaCount: {{ .Values.replicas.nextcloudApache2 }}
|
replicas: {{ .Values.replicas.nextcloudApache2 }}
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.nextcloudApache2 | toYaml | nindent 4 }}
|
{{ .Values.resources.nextcloudApache2 | toYaml | nindent 4 }}
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -6,29 +6,24 @@ bases:
|
|||||||
---
|
---
|
||||||
repositories:
|
repositories:
|
||||||
# openDesk Dovecot
|
# openDesk Dovecot
|
||||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dovecot
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/charts/opendesk-dovecot
|
||||||
- name: "dovecot-repo"
|
- name: "dovecot-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.dovecot.verify }}
|
verify: {{ .Values.charts.dovecot.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/{{ .Values.charts.dovecot.repository }}"
|
||||||
{{ .Values.charts.dovecot.repository }}"
|
|
||||||
|
|
||||||
# Open-Xchange
|
# Open-Xchange
|
||||||
- name: "open-xchange-repo"
|
- name: "open-xchange-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg"
|
|
||||||
verify: {{ .Values.charts.openXchangeAppSuite.verify }}
|
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.openXchangeAppSuite.registry }}/{{ .Values.charts.openXchangeAppSuite.repository }}"
|
||||||
{{ .Values.charts.openXchangeAppSuite.repository }}"
|
|
||||||
|
|
||||||
# openDesk Open-Xchange Bootstrap
|
# openDesk Open-Xchange Bootstrap
|
||||||
# Source:
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/charts/opendesk-open-xchange-bootstrap
|
||||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap
|
|
||||||
- name: "open-xchange-bootstrap-repo"
|
- name: "open-xchange-bootstrap-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
|
verify: {{ .Values.charts.openXchangeAppSuiteBootstrap.verify }}
|
||||||
|
|||||||
@@ -66,8 +66,7 @@ containerSecurityContext:
|
|||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.dovecot }}
|
||||||
{{ .Values.seLinuxOptions.dovecot | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
podSecurityContext:
|
podSecurityContext:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||||||
*/}}
|
*/}}
|
||||||
---
|
---
|
||||||
global:
|
global:
|
||||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
mysql:
|
mysql:
|
||||||
host: {{ .Values.databases.oxAppsuite.host | quote }}
|
host: {{ .Values.databases.oxAppsuite.host | quote }}
|
||||||
database: {{ .Values.databases.oxAppsuite.name | quote }}
|
database: {{ .Values.databases.oxAppsuite.name | quote }}
|
||||||
@@ -13,6 +13,9 @@ global:
|
|||||||
password: {{ .Values.databases.oxAppsuite.password | default .Values.secrets.mariadb.rootPassword | quote }}
|
password: {{ .Values.databases.oxAppsuite.password | default .Values.secrets.mariadb.rootPassword | quote }}
|
||||||
rootPassword: {{ .Values.databases.oxAppsuite.password | default .Values.secrets.mariadb.rootPassword | quote }}
|
rootPassword: {{ .Values.databases.oxAppsuite.password | default .Values.secrets.mariadb.rootPassword | quote }}
|
||||||
|
|
||||||
|
istio:
|
||||||
|
enabled: {{ .Values.istio.enabled }}
|
||||||
|
|
||||||
nextcloud-integration-ui:
|
nextcloud-integration-ui:
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeNextcloudIntegrationUI.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.openxchangeNextcloudIntegrationUI.registry | quote }}
|
||||||
@@ -37,8 +40,7 @@ nextcloud-integration-ui:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeNextcloudIntegrationUI }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeNextcloudIntegrationUI | toYaml | nindent 6 }}
|
|
||||||
|
|
||||||
public-sector-ui:
|
public-sector-ui:
|
||||||
image:
|
image:
|
||||||
@@ -65,8 +67,7 @@ public-sector-ui:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangePublicSectorUI }}
|
||||||
{{ .Values.seLinuxOptions.openxchangePublicSectorUI | toYaml | nindent 6 }}
|
|
||||||
|
|
||||||
appsuite:
|
appsuite:
|
||||||
appsuite-toolkit:
|
appsuite-toolkit:
|
||||||
@@ -74,22 +75,18 @@ appsuite:
|
|||||||
switchboard:
|
switchboard:
|
||||||
enabled: false
|
enabled: false
|
||||||
istio:
|
istio:
|
||||||
enabled: false
|
enabled: {{ .Values.istio.enabled }}
|
||||||
ingress:
|
ingressGateway:
|
||||||
enabled: {{ .Values.ingress.enabled }}
|
name: "opendesk-gateway-istio-gateway"
|
||||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
|
||||||
tls:
|
|
||||||
enabled: true
|
|
||||||
existingSecret: {{ .Values.ingress.tls.secretName | quote }}
|
|
||||||
appsuite:
|
|
||||||
hosts:
|
hosts:
|
||||||
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
dav:
|
virtualServices:
|
||||||
hosts:
|
appsuite:
|
||||||
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
hosts:
|
||||||
routes:
|
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
trailslash:
|
dav:
|
||||||
enabled: false
|
hosts:
|
||||||
|
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
core-mw:
|
core-mw:
|
||||||
enabled: true
|
enabled: true
|
||||||
asConfig:
|
asConfig:
|
||||||
@@ -100,7 +97,7 @@ appsuite:
|
|||||||
oidcPath: "/oidc"
|
oidcPath: "/oidc"
|
||||||
masterAdmin: "admin"
|
masterAdmin: "admin"
|
||||||
masterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
masterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
||||||
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
create: true
|
create: true
|
||||||
features:
|
features:
|
||||||
@@ -134,8 +131,7 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeGotenberg }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeGotenberg | toYaml | nindent 10 }}
|
|
||||||
hooks:
|
hooks:
|
||||||
beforeAppsuiteStart:
|
beforeAppsuiteStart:
|
||||||
create-guard-dir.sh: |
|
create-guard-dir.sh: |
|
||||||
@@ -169,9 +165,9 @@ appsuite:
|
|||||||
com.openexchange.oidc.opJwkSetEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
|
com.openexchange.oidc.opJwkSetEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
|
||||||
com.openexchange.oidc.opLogoutEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
|
com.openexchange.oidc.opLogoutEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
|
||||||
com.openexchange.oidc.opTokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
com.openexchange.oidc.opTokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
|
||||||
com.openexchange.oidc.rpRedirectURIAuth: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/appsuite/api/oidc/auth"
|
com.openexchange.oidc.rpRedirectURIAuth: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}/appsuite/api/oidc/auth"
|
||||||
com.openexchange.oidc.rpRedirectURILogout: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
com.openexchange.oidc.rpRedirectURILogout: "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}"
|
||||||
com.openexchange.oidc.rpRedirectURIPostSSOLogout: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/appsuite/api/oidc/logout"
|
com.openexchange.oidc.rpRedirectURIPostSSOLogout: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}/appsuite/api/oidc/logout"
|
||||||
com.openexchange.oidc.ssoLogout: "true"
|
com.openexchange.oidc.ssoLogout: "true"
|
||||||
com.openexchange.oidc.startDefaultBackend: "true"
|
com.openexchange.oidc.startDefaultBackend: "true"
|
||||||
com.openexchange.oidc.userLookupClaim: "opendesk_username"
|
com.openexchange.oidc.userLookupClaim: "opendesk_username"
|
||||||
@@ -360,14 +356,13 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeCoreUI }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeCoreUI | toYaml | nindent 8 }}
|
|
||||||
|
|
||||||
core-ui-middleware:
|
core-ui-middleware:
|
||||||
enabled: true
|
enabled: true
|
||||||
ingress:
|
ingress:
|
||||||
hosts:
|
hosts:
|
||||||
- host: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
- host: "{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
enabled: false
|
enabled: false
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{- range .Values.global.imagePullSecrets }}
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
@@ -386,8 +381,6 @@ appsuite:
|
|||||||
auth:
|
auth:
|
||||||
enabled: true
|
enabled: true
|
||||||
password: {{ .Values.secrets.redis.password | quote }}
|
password: {{ .Values.secrets.redis.password | quote }}
|
||||||
# Workaround for a bug in 8.23
|
|
||||||
ca: ""
|
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.openxchangeCoreUIMiddleware | toYaml | nindent 6 }}
|
{{ .Values.resources.openxchangeCoreUIMiddleware | toYaml | nindent 6 }}
|
||||||
updater:
|
updater:
|
||||||
@@ -405,8 +398,7 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeCoreUIMiddleware }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeCoreUIMiddleware | toYaml | nindent 8 }}
|
|
||||||
core-cacheservice:
|
core-cacheservice:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
@@ -436,8 +428,7 @@ appsuite:
|
|||||||
- "ALL"
|
- "ALL"
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeDocumentConverter }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeDocumentConverter | toYaml | nindent 8 }}
|
|
||||||
|
|
||||||
core-documents-collaboration:
|
core-documents-collaboration:
|
||||||
enabled: false
|
enabled: false
|
||||||
@@ -479,8 +470,7 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeCoreGuidedtours }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeCoreGuidedtours | toYaml | nindent 8 }}
|
|
||||||
|
|
||||||
core-imageconverter:
|
core-imageconverter:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -510,8 +500,7 @@ appsuite:
|
|||||||
- "ALL"
|
- "ALL"
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeImageConverter }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeImageConverter | toYaml | nindent 8 }}
|
|
||||||
|
|
||||||
guard-ui:
|
guard-ui:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -537,8 +526,7 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeGuardUI }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeGuardUI | toYaml | nindent 8 }}
|
|
||||||
core-spellcheck:
|
core-spellcheck:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
@@ -567,6 +555,5 @@ appsuite:
|
|||||||
privileged: false
|
privileged: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openxchangeCoreUserGuide }}
|
||||||
{{ .Values.seLinuxOptions.openxchangeCoreUserGuide | toYaml | nindent 8 }}
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/{{ .Values.charts.openprojectBootstrap.repository }}"
|
||||||
{{ .Values.charts.openprojectBootstrap.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "opendesk-openproject-bootstrap"
|
- name: "opendesk-openproject-bootstrap"
|
||||||
|
|||||||
@@ -38,8 +38,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openprojectBootstrap }}
|
||||||
{{ .Values.seLinuxOptions.openprojectBootstrap | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.openprojectBootstrap.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.openprojectBootstrap.registry | quote }}
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/{{ .Values.charts.openproject.repository }}"
|
||||||
{{ .Values.charts.openproject.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "openproject"
|
- name: "openproject"
|
||||||
|
|||||||
@@ -20,13 +20,12 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.openproject }}
|
||||||
{{ .Values.seLinuxOptions.openproject | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
# For more details and more options see
|
# For more details and more options see
|
||||||
# https://www.openproject.org/docs/installation-and-operations/configuration/environment/
|
# https://www.openproject.org/docs/installation-and-operations/configuration/environment/
|
||||||
OPENPROJECT_LOG__LEVEL: {{ if .Values.debug.enabled }}"debug"{{ else }}"warn"{{ end }}
|
OPENPROJECT_LOG__LEVEL: {{ if .Values.debug.enabled }}"debug"{{ else }}"info"{{ end }}
|
||||||
OPENPROJECT_LOGIN__REQUIRED: "true"
|
OPENPROJECT_LOGIN__REQUIRED: "true"
|
||||||
OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true"
|
OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true"
|
||||||
OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak"
|
OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak"
|
||||||
@@ -145,9 +144,7 @@ ingress:
|
|||||||
enabled: {{ .Values.ingress.tls.enabled }}
|
enabled: {{ .Values.ingress.tls.enabled }}
|
||||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||||
|
|
||||||
backgroundReplicaCount: {{ .Values.replicas.openprojectWorker }}
|
replicaCount: {{ .Values.replicas.openproject }}
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.openprojectWeb }}
|
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.openproject | toYaml | nindent 2 }}
|
{{ .Values.resources.openproject | toYaml | nindent 2 }}
|
||||||
@@ -155,14 +152,14 @@ resources:
|
|||||||
s3:
|
s3:
|
||||||
enabled: true
|
enabled: true
|
||||||
endpoint: {{ .Values.objectstores.openproject.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
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 }}
|
host: {{ (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
|
||||||
pathStyle: {{ .Values.objectstores.openproject.pathStyle | quote }}
|
pathStyle: "true"
|
||||||
region: {{ .Values.objectstores.openproject.region | quote }}
|
region: {{ .Values.objectstores.openproject.region | quote }}
|
||||||
bucketName: {{ .Values.objectstores.openproject.bucket | quote }}
|
bucketName: {{ .Values.objectstores.openproject.bucket | quote }}
|
||||||
use_iam_profile: {{ .Values.objectstores.openproject.useIAMProfile | default "false" | quote }}
|
use_iam_profile: {{ .Values.objectstores.openproject.useIAMProfile | default "false" | quote }}
|
||||||
auth:
|
auth:
|
||||||
accessKeyId: {{ .Values.objectstores.openproject.username | quote }}
|
accessKeyId: {{ .Values.objectstores.openproject.username | quote }}
|
||||||
secretAccessKey: {{ .Values.objectstores.openproject.secretKey | default .Values.secrets.minio.openprojectUser | quote }}
|
secretAccessKey: {{ .Values.objectstores.openproject.secret | default .Values.secrets.minio.openprojectUser | quote }}
|
||||||
|
|
||||||
seederJob:
|
seederJob:
|
||||||
annotations:
|
annotations:
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/{{ .Values.charts.oxConnector.repository }}"
|
||||||
{{ .Values.charts.oxConnector.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "ox-connector"
|
- name: "ox-connector"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ oxConnector:
|
|||||||
debugLevel: {{ if .Values.debug.enabled }}"4"{{ else }}"1"{{ end }}
|
debugLevel: {{ if .Values.debug.enabled }}"4"{{ else }}"1"{{ end }}
|
||||||
domainName: {{ .Values.global.domain | quote }}
|
domainName: {{ .Values.global.domain | quote }}
|
||||||
ldapHost: {{ .Values.ldap.host | quote }}
|
ldapHost: {{ .Values.ldap.host | quote }}
|
||||||
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"WARN"{{ end }}
|
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
|
||||||
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
ldapBaseDn: "dc=swp-ldap,dc=internal"
|
ldapBaseDn: "dc=swp-ldap,dc=internal"
|
||||||
ldapHostDn: "cn=admin,dc=swp-ldap,dc=internal"
|
ldapHostDn: "cn=admin,dc=swp-ldap,dc=internal"
|
||||||
@@ -33,7 +33,7 @@ oxConnector:
|
|||||||
oxMasterAdmin: "admin"
|
oxMasterAdmin: "admin"
|
||||||
oxMasterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
oxMasterPassword: {{ .Values.secrets.oxAppsuite.adminPassword | quote }}
|
||||||
oxSmtpServer: "smtp://127.0.0.1:587"
|
oxSmtpServer: "smtp://127.0.0.1:587"
|
||||||
oxSoapServer: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
|
oxSoapServer: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}"
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.oxConnector | toYaml | nindent 2 }}
|
{{ .Values.resources.oxConnector | toYaml | nindent 2 }}
|
||||||
@@ -59,8 +59,6 @@ probes:
|
|||||||
failureThreshold: 30
|
failureThreshold: 30
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.oxConnector }}
|
|
||||||
|
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities:
|
capabilities:
|
||||||
@@ -85,8 +83,7 @@ securityContext:
|
|||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
runAsNonRoot: false
|
runAsNonRoot: false
|
||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.oxConnector }}
|
||||||
{{ .Values.seLinuxOptions.oxConnector | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
create: true
|
create: true
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# 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-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
@@ -14,19 +13,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/{{ .Values.charts.otterize.repository }}"
|
||||||
{{ .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
|
# openDesk Certificates
|
||||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates
|
||||||
@@ -36,8 +23,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/{{ .Values.charts.certificates.repository }}"
|
||||||
{{ .Values.charts.certificates.repository }}"
|
|
||||||
|
|
||||||
# openDesk PostgreSQL
|
# openDesk PostgreSQL
|
||||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postgresql
|
||||||
@@ -47,8 +33,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/{{ .Values.charts.postgresql.repository }}"
|
||||||
{{ .Values.charts.postgresql.repository }}"
|
|
||||||
|
|
||||||
# openDesk MariaDB
|
# openDesk MariaDB
|
||||||
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
|
# Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb
|
||||||
@@ -58,8 +43,7 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/{{ .Values.charts.mariadb.repository }}"
|
||||||
{{ .Values.charts.mariadb.repository }}"
|
|
||||||
|
|
||||||
# openDesk Postfix
|
# openDesk Postfix
|
||||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
|
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix
|
||||||
@@ -69,8 +53,17 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/{{ .Values.charts.postfix.repository }}"
|
||||||
{{ .Values.charts.postfix.repository }}"
|
|
||||||
|
# openDesk Istio Resources
|
||||||
|
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-istio-resources
|
||||||
|
- name: "istio-resources-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
|
verify: {{ .Values.charts.istioResources.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.istioResources.registry }}/{{ .Values.charts.istioResources.repository }}"
|
||||||
|
|
||||||
# openDesk ClamAV
|
# openDesk ClamAV
|
||||||
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
|
# https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav
|
||||||
@@ -80,16 +73,14 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/{{ .Values.charts.clamav.repository }}"
|
||||||
{{ .Values.charts.clamav.repository }}"
|
|
||||||
- name: "clamav-simple-repo"
|
- name: "clamav-simple-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.clamavSimple.verify }}
|
verify: {{ .Values.charts.clamavSimple.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/{{ .Values.charts.clamavSimple.repository }}"
|
||||||
{{ .Values.charts.clamavSimple.repository }}"
|
|
||||||
|
|
||||||
# VMWare Bitnami
|
# VMWare Bitnami
|
||||||
# Source: https://github.com/bitnami/charts/
|
# Source: https://github.com/bitnami/charts/
|
||||||
@@ -99,24 +90,21 @@ repositories:
|
|||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/{{ .Values.charts.memcached.repository }}"
|
||||||
{{ .Values.charts.memcached.repository }}"
|
|
||||||
- name: "redis-repo"
|
- name: "redis-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.redis.verify }}
|
verify: {{ .Values.charts.redis.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/{{ .Values.charts.redis.repository }}"
|
||||||
{{ .Values.charts.redis.repository }}"
|
|
||||||
- name: "minio-repo"
|
- name: "minio-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.minio.verify }}
|
verify: {{ .Values.charts.minio.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/{{ .Values.charts.minio.repository }}"
|
||||||
{{ .Values.charts.minio.repository }}"
|
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- name: "opendesk-otterize"
|
- name: "opendesk-otterize"
|
||||||
@@ -127,13 +115,6 @@ releases:
|
|||||||
installed: {{ .Values.security.otterizeIntents.enabled }}
|
installed: {{ .Values.security.otterizeIntents.enabled }}
|
||||||
timeout: 900
|
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"
|
- name: "opendesk-certificates"
|
||||||
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
|
chart: "certificates-repo/{{ .Values.charts.certificates.name }}"
|
||||||
version: "{{ .Values.charts.certificates.version }}"
|
version: "{{ .Values.charts.certificates.version }}"
|
||||||
@@ -198,6 +179,14 @@ releases:
|
|||||||
installed: {{ .Values.clamavSimple.enabled }}
|
installed: {{ .Values.clamavSimple.enabled }}
|
||||||
timeout: 900
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "opendesk-gateway"
|
||||||
|
chart: "istio-resources-repo/{{ .Values.charts.istioResources.name }}"
|
||||||
|
version: "{{ .Values.charts.istioResources.version }}"
|
||||||
|
values:
|
||||||
|
- "values-istio-gateway.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.istio.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
- name: "minio"
|
- name: "minio"
|
||||||
chart: "minio-repo/{{ .Values.charts.minio.name }}"
|
chart: "minio-repo/{{ .Values.charts.minio.name }}"
|
||||||
version: "{{ .Values.charts.minio.version }}"
|
version: "{{ .Values.charts.minio.version }}"
|
||||||
|
|||||||
@@ -11,6 +11,14 @@ global:
|
|||||||
issuerRef:
|
issuerRef:
|
||||||
name: {{ .Values.certificate.issuerRef.name | quote }}
|
name: {{ .Values.certificate.issuerRef.name | quote }}
|
||||||
|
|
||||||
|
{{- if .Values.istio.enabled }}
|
||||||
|
istio:
|
||||||
|
enabled: {{ .Values.istio.enabled }}
|
||||||
|
domain: {{ .Values.istio.domain | quote }}
|
||||||
|
issuerRef:
|
||||||
|
name: {{ .Values.istio.issuerRef.name | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
keepRessourceOnDelete: {{ .Values.cleanup.keepRessourceOnDelete }}
|
keepRessourceOnDelete: {{ .Values.cleanup.keepRessourceOnDelete }}
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ clamd:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.clamd }}
|
||||||
{{ .Values.seLinuxOptions.clamd | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.clamd.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.clamd.registry | quote }}
|
||||||
repository: {{ .Values.images.clamd.repository | quote }}
|
repository: {{ .Values.images.clamd.repository | quote }}
|
||||||
@@ -42,8 +41,7 @@ containerSecurityContext:
|
|||||||
capabilities:
|
capabilities:
|
||||||
drop: []
|
drop: []
|
||||||
privileged: false
|
privileged: false
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.clamav }}
|
||||||
{{ .Values.seLinuxOptions.clamav | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
freshclam:
|
freshclam:
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
@@ -59,8 +57,7 @@ freshclam:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.freshclam }}
|
||||||
{{ .Values.seLinuxOptions.freshclam | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.freshclam.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.freshclam.registry | quote }}
|
||||||
repository: {{ .Values.images.freshclam.repository | quote }}
|
repository: {{ .Values.images.freshclam.repository | quote }}
|
||||||
@@ -92,8 +89,7 @@ icap:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.icap }}
|
||||||
{{ .Values.seLinuxOptions.icap | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.icap.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.icap.registry | quote }}
|
||||||
repository: {{ .Values.images.icap.repository | quote }}
|
repository: {{ .Values.images.icap.repository | quote }}
|
||||||
@@ -121,8 +117,7 @@ milter:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.milter }}
|
||||||
{{ .Values.seLinuxOptions.milter | toYaml | nindent 6 }}
|
|
||||||
image:
|
image:
|
||||||
registry: {{ .Values.global.imageRegistry | default .Values.images.milter.registry | quote }}
|
registry: {{ .Values.global.imageRegistry | default .Values.images.milter.registry | quote }}
|
||||||
repository: {{ .Values.images.milter.repository | quote }}
|
repository: {{ .Values.images.milter.repository | quote }}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.clamavSimple }}
|
||||||
{{ .Values.seLinuxOptions.clamavSimple | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
{{/*
|
|
||||||
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
|
|
||||||
SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/}}
|
|
||||||
---
|
|
||||||
global:
|
|
||||||
domain: {{ .Values.global.domain | quote }}
|
|
||||||
hosts:
|
|
||||||
{{ .Values.global.hosts | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
|
||||||
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
|
|
||||||
tls:
|
|
||||||
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
|
||||||
...
|
|
||||||
12
helmfile/apps/services/values-istio-gateway.yaml.gotmpl
Normal file
12
helmfile/apps/services/values-istio-gateway.yaml.gotmpl
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
global:
|
||||||
|
domain: {{ .Values.istio.domain | quote }}
|
||||||
|
hosts:
|
||||||
|
openxchange: {{ .Values.global.hosts.openxchange | quote }}
|
||||||
|
|
||||||
|
tls:
|
||||||
|
httpsRedirect: false
|
||||||
|
secretName: "{{ .Values.istio.domain }}-tls"
|
||||||
|
...
|
||||||
@@ -17,8 +17,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.mariadb }}
|
||||||
{{ .Values.seLinuxOptions.mariadb | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
@@ -61,7 +60,7 @@ podSecurityContext:
|
|||||||
fsGroup: 1001
|
fsGroup: 1001
|
||||||
fsGroupChangePolicy: "OnRootMismatch"
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.mariadb }}
|
replicaCount: 1
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
{{ .Values.resources.mariadb | toYaml | nindent 2 }}
|
{{ .Values.resources.mariadb | toYaml | nindent 2 }}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
---
|
---
|
||||||
architecture: {{ if gt .Values.replicas.memcached 1 }}"high-availability"{{ else }}"standalone"{{ end }}
|
|
||||||
|
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
capabilities:
|
capabilities:
|
||||||
@@ -16,8 +14,7 @@ containerSecurityContext:
|
|||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.memcached }}
|
||||||
{{ .Values.seLinuxOptions.memcached | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ containerSecurityContext:
|
|||||||
readOnlyRootFilesystem: false
|
readOnlyRootFilesystem: false
|
||||||
seccompProfile:
|
seccompProfile:
|
||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.minio }}
|
||||||
{{ .Values.seLinuxOptions.minio | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
defaultBuckets: "openproject,openxchange,ums,nextcloud"
|
defaultBuckets: "openproject,openxchange,ums,nextcloud"
|
||||||
|
|
||||||
@@ -63,13 +62,13 @@ livenessProbe:
|
|||||||
periodSeconds: 10
|
periodSeconds: 10
|
||||||
timeoutSeconds: 10
|
timeoutSeconds: 10
|
||||||
|
|
||||||
mode: {{ if gt .Values.replicas.minio 1 }}"distributed"{{ else }}"standalone"{{ end }}
|
mode: "standalone"
|
||||||
|
|
||||||
metrics:
|
metrics:
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
enabled: {{ .Values.prometheus.serviceMonitors.enabled }}
|
||||||
additionalLabels:
|
additionalLabels:
|
||||||
{{ .Values.prometheus.serviceMonitors.labels | toYaml | nindent 6 }}
|
{{- toYaml .Values.prometheus.serviceMonitors.labels | nindent 6 }}
|
||||||
|
|
||||||
networkPolicy:
|
networkPolicy:
|
||||||
enabled: false
|
enabled: false
|
||||||
@@ -89,13 +88,16 @@ provisioning:
|
|||||||
extraCommands:
|
extraCommands:
|
||||||
- "mc anonymous set download provisioning/ums/portal-assets"
|
- "mc anonymous set download provisioning/ums/portal-assets"
|
||||||
buckets:
|
buckets:
|
||||||
- name: {{ .Values.objectstores.openproject.bucket | quote }}
|
- name: "openproject"
|
||||||
versioning: true
|
versioning: true
|
||||||
withLock: false
|
withLock: false
|
||||||
- name: {{ .Values.objectstores.univentionManagementStack.bucket | quote }}
|
- name: "openxchange"
|
||||||
|
versioning: true
|
||||||
|
withLock: false
|
||||||
|
- name: {{ .Values.objectstores.univentionManagementStack.bucket | quote }}
|
||||||
versioning: false
|
versioning: false
|
||||||
withLock: false
|
withLock: false
|
||||||
- name: {{ .Values.objectstores.nextcloud.bucket | quote }}
|
- name: "nextcloud"
|
||||||
versioning: true
|
versioning: true
|
||||||
withLock: false
|
withLock: false
|
||||||
policies:
|
policies:
|
||||||
@@ -111,6 +113,18 @@ provisioning:
|
|||||||
effect: "Allow"
|
effect: "Allow"
|
||||||
actions:
|
actions:
|
||||||
- "s3:*"
|
- "s3:*"
|
||||||
|
- name: "openxchange-bucket-policy"
|
||||||
|
statements:
|
||||||
|
- resources:
|
||||||
|
- "arn:aws:s3:::openxchange"
|
||||||
|
effect: "Allow"
|
||||||
|
actions:
|
||||||
|
- "s3:*"
|
||||||
|
- resources:
|
||||||
|
- "arn:aws:s3:::openxchange/*"
|
||||||
|
effect: "Allow"
|
||||||
|
actions:
|
||||||
|
- "s3:*"
|
||||||
- name: "ums-bucket-policy"
|
- name: "ums-bucket-policy"
|
||||||
statements:
|
statements:
|
||||||
- resources:
|
- resources:
|
||||||
@@ -136,19 +150,25 @@ provisioning:
|
|||||||
actions:
|
actions:
|
||||||
- "s3:*"
|
- "s3:*"
|
||||||
users:
|
users:
|
||||||
- username: {{ .Values.objectstores.openproject.username | quote }}
|
- username: "openproject_user"
|
||||||
password: {{ .Values.secrets.minio.openprojectUser | quote }}
|
password: {{ .Values.secrets.minio.openprojectUser | quote }}
|
||||||
disabled: false
|
disabled: false
|
||||||
policies:
|
policies:
|
||||||
- "openproject-bucket-policy"
|
- "openproject-bucket-policy"
|
||||||
setPolicies: true
|
setPolicies: true
|
||||||
|
- username: "openxchange_user"
|
||||||
|
password: {{ .Values.secrets.minio.openxchangeUser | quote }}
|
||||||
|
disabled: false
|
||||||
|
policies:
|
||||||
|
- "openxchange-bucket-policy"
|
||||||
|
setPolicies: true
|
||||||
- username: {{ .Values.objectstores.univentionManagementStack.username | quote }}
|
- username: {{ .Values.objectstores.univentionManagementStack.username | quote }}
|
||||||
password: {{ .Values.secrets.minio.umsUser | quote }}
|
password: {{ .Values.secrets.minio.umsUser | quote }}
|
||||||
disabled: false
|
disabled: false
|
||||||
policies:
|
policies:
|
||||||
- "ums-bucket-policy"
|
- "ums-bucket-policy"
|
||||||
setPolicies: true
|
setPolicies: true
|
||||||
- username: {{ .Values.objectstores.nextcloud.username | quote }}
|
- username: "nextcloud_user"
|
||||||
password: {{ .Values.secrets.minio.nextcloudUser | quote }}
|
password: {{ .Values.secrets.minio.nextcloudUser | quote }}
|
||||||
disabled: false
|
disabled: false
|
||||||
policies:
|
policies:
|
||||||
@@ -172,6 +192,6 @@ startupProbe:
|
|||||||
timeoutSeconds: 10
|
timeoutSeconds: 10
|
||||||
|
|
||||||
statefulset:
|
statefulset:
|
||||||
replicaCount: {{ .Values.replicas.minio }}
|
replicaCount: {{ .Values.replicas.minioDistributed }}
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ apps:
|
|||||||
enabled: {{ .Values.intercom.enabled }}
|
enabled: {{ .Values.intercom.enabled }}
|
||||||
jitsi:
|
jitsi:
|
||||||
enabled: {{ .Values.jitsi.enabled }}
|
enabled: {{ .Values.jitsi.enabled }}
|
||||||
|
keycloak:
|
||||||
|
enabled: {{ .Values.keycloak.enabled }}
|
||||||
mariadb:
|
mariadb:
|
||||||
enabled: {{ .Values.mariadb.enabled }}
|
enabled: {{ .Values.mariadb.enabled }}
|
||||||
memcached:
|
memcached:
|
||||||
@@ -45,10 +47,6 @@ apps:
|
|||||||
xwiki:
|
xwiki:
|
||||||
enabled: {{ .Values.xwiki.enabled }}
|
enabled: {{ .Values.xwiki.enabled }}
|
||||||
|
|
||||||
ingressController:
|
|
||||||
{{ .Values.security.ingressController | toYaml | nindent 2 }}
|
|
||||||
|
|
||||||
|
|
||||||
extraApps:
|
extraApps:
|
||||||
clusterPostfix:
|
clusterPostfix:
|
||||||
enabled: {{ .Values.security.clusterPostfix.enabled }}
|
enabled: {{ .Values.security.clusterPostfix.enabled }}
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ containerSecurityContext:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
privileged: true
|
privileged: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.postfix }}
|
||||||
{{ .Values.seLinuxOptions.postfix | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
global:
|
global:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
@@ -41,7 +40,7 @@ podSecurityContext:
|
|||||||
postfix:
|
postfix:
|
||||||
amavisHost: ""
|
amavisHost: ""
|
||||||
amavisPortIn: ""
|
amavisPortIn: ""
|
||||||
domain: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
domain: {{ .Values.global.domain | quote }}
|
||||||
hostname: "postfix"
|
hostname: "postfix"
|
||||||
inetProtocols: "ipv4"
|
inetProtocols: "ipv4"
|
||||||
milterDefaultAction: "accept"
|
milterDefaultAction: "accept"
|
||||||
@@ -67,7 +66,7 @@ postfix:
|
|||||||
{{- else if .Values.clamavSimple.enabled }}
|
{{- else if .Values.clamavSimple.enabled }}
|
||||||
smtpdMilters: "inet:clamav-simple:7357"
|
smtpdMilters: "inet:clamav-simple:7357"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
virtualMailboxDomains: {{ .Values.global.mailDomain | default .Values.global.domain }}
|
virtualMailboxDomains: {{ .Values.global.domain | quote }}
|
||||||
virtualTransport: "lmtps:dovecot:24"
|
virtualTransport: "lmtps:dovecot:24"
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.postfix }}
|
replicaCount: {{ .Values.replicas.postfix }}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.postgresql }}
|
||||||
{{ .Values.seLinuxOptions.postgresql | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
job:
|
job:
|
||||||
|
|
||||||
@@ -27,7 +26,7 @@ podSecurityContext:
|
|||||||
postgres:
|
postgres:
|
||||||
user: "postgres"
|
user: "postgres"
|
||||||
|
|
||||||
replicaCount: {{ .Values.replicas.postgres }}
|
replicaCount: 1
|
||||||
|
|
||||||
global:
|
global:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ master:
|
|||||||
capabilities:
|
capabilities:
|
||||||
drop:
|
drop:
|
||||||
- "ALL"
|
- "ALL"
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.redis }}
|
||||||
{{ .Values.seLinuxOptions.redis | toYaml | nindent 6 }}
|
|
||||||
count: {{ .Values.replicas.redis }}
|
count: {{ .Values.replicas.redis }}
|
||||||
persistence:
|
persistence:
|
||||||
size: {{ .Values.persistence.size.redis | quote }}
|
size: {{ .Values.persistence.size.redis | quote }}
|
||||||
|
|||||||
@@ -5,17 +5,148 @@ bases:
|
|||||||
- "../../bases/environments.yaml"
|
- "../../bases/environments.yaml"
|
||||||
---
|
---
|
||||||
repositories:
|
repositories:
|
||||||
# Univention Management Stack Umbrella Chart
|
# Univention Management Stack
|
||||||
- name: "ums"
|
- name: "ums-guardian-management-api-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
verify: {{ .Values.charts.ums.verify }}
|
verify: {{ .Values.charts.umsGuardianManagementApi.verify }}
|
||||||
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
oci: true
|
oci: true
|
||||||
url:
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsGuardianManagementApi.registry }}/{{ .Values.charts.umsGuardianManagementApi.repository }}"
|
||||||
"{{ .Values.global.helmRegistry | default .Values.charts.ums.registry }}/\
|
- name: "ums-guardian-management-ui-repo"
|
||||||
{{ .Values.charts.ums.repository }}"
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
# OpenDesk Keycloak Bootstrap Chart
|
verify: {{ .Values.charts.umsGuardianManagementUi.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsGuardianManagementUi.registry }}/{{ .Values.charts.umsGuardianManagementUi.repository }}"
|
||||||
|
- name: "ums-guardian-authorization-api-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsGuardianAuthorizationApi.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsGuardianAuthorizationApi.registry }}/{{ .Values.charts.umsGuardianAuthorizationApi.repository }}"
|
||||||
|
- name: "ums-open-policy-agent-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsOpenPolicyAgent.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsOpenPolicyAgent.registry }}/{{ .Values.charts.umsOpenPolicyAgent.repository }}"
|
||||||
|
- name: "ums-ldap-server-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsLdapServer.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsLdapServer.registry }}/{{ .Values.charts.umsLdapServer.repository }}"
|
||||||
|
- name: "ums-ldap-notifier-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsLdapNotifier.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsLdapNotifier.registry }}/{{ .Values.charts.umsLdapNotifier.repository }}"
|
||||||
|
- name: "ums-udm-rest-api-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsUdmRestApi.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsUdmRestApi.registry }}/{{ .Values.charts.umsUdmRestApi.repository }}"
|
||||||
|
- name: "ums-stack-data-ums-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsStackDataUms.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsStackDataUms.registry }}/{{ .Values.charts.umsStackDataUms.repository }}"
|
||||||
|
- name: "ums-stack-data-swp-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsStackDataSwp.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsStackDataSwp.registry }}/{{ .Values.charts.umsStackDataSwp.repository }}"
|
||||||
|
- name: "ums-portal-server-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsPortalServer.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsPortalServer.registry }}/{{ .Values.charts.umsPortalServer.repository }}"
|
||||||
|
- name: "ums-notifications-api-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsNotificationsApi.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsNotificationsApi.registry }}/{{ .Values.charts.umsNotificationsApi.repository }}"
|
||||||
|
- name: "ums-portal-listener-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsPortalListener.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsPortalListener.registry }}/{{ .Values.charts.umsPortalListener.repository }}"
|
||||||
|
- name: "ums-portal-frontend-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsPortalFrontend.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsPortalFrontend.registry }}/{{ .Values.charts.umsPortalFrontend.repository }}"
|
||||||
|
- name: "ums-umc-gateway-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsUmcGateway.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsUmcGateway.registry }}/{{ .Values.charts.umsUmcGateway.repository }}"
|
||||||
|
- name: "ums-umc-server-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsUmcServer.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsUmcServer.registry }}/{{ .Values.charts.umsUmcServer.repository }}"
|
||||||
|
- name: "ums-selfservice-listener-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsSelfserviceListener.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsSelfserviceListener.registry }}/{{ .Values.charts.umsSelfserviceListener.repository }}"
|
||||||
|
- name: "ums-provisioning-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsProvisioning.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsProvisioning.registry }}/{{ .Values.charts.umsProvisioning.repository }}"
|
||||||
|
|
||||||
|
# Univention Keycloak Extensions
|
||||||
|
- name: "ums-keycloak-extensions-repo"
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsKeycloakExtensions.registry }}/{{ .Values.charts.umsKeycloakExtensions.repository }}"
|
||||||
|
# Univention Keycloak
|
||||||
|
- name: "ums-keycloak-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsKeycloak.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsKeycloak.registry }}/{{ .Values.charts.umsKeycloak.repository }}"
|
||||||
|
- name: "ums-keycloak-bootstrap-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/souvap-univention-de.gpg"
|
||||||
|
verify: {{ .Values.charts.umsKeycloakBootstrap.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.umsKeycloakBootstrap.registry }}/{{ .Values.charts.umsKeycloakBootstrap.repository }}"
|
||||||
- name: "opendesk-keycloak-bootstrap-repo"
|
- name: "opendesk-keycloak-bootstrap-repo"
|
||||||
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
verify: {{ .Values.charts.opendeskKeycloakBootstrap.verify }}
|
verify: {{ .Values.charts.opendeskKeycloakBootstrap.verify }}
|
||||||
@@ -24,24 +155,213 @@ repositories:
|
|||||||
oci: true
|
oci: true
|
||||||
url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/\
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/\
|
||||||
{{ .Values.charts.opendeskKeycloakBootstrap.repository }}"
|
{{ .Values.charts.opendeskKeycloakBootstrap.repository }}"
|
||||||
|
# VMWare Bitnami
|
||||||
|
# Source: https://github.com/bitnami/charts/
|
||||||
|
- name: "nginx-repo"
|
||||||
|
keyring: "../../files/gpg-pubkeys/opencode.gpg"
|
||||||
|
verify: {{ .Values.charts.nginx.verify }}
|
||||||
|
username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }}
|
||||||
|
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
|
||||||
|
oci: true
|
||||||
|
url: "{{ .Values.global.helmRegistry | default .Values.charts.nginx.registry }}/{{ .Values.charts.nginx.repository }}"
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
# Univention Management Stack Umbrella Chart
|
- name: "ums-keycloak"
|
||||||
- name: "ums"
|
chart: "ums-keycloak-repo/{{ .Values.charts.umsKeycloak.name }}"
|
||||||
chart: "ums/{{ .Values.charts.ums.name }}"
|
version: "{{ .Values.charts.umsKeycloak.version }}"
|
||||||
version: "{{ .Values.charts.ums.version }}"
|
|
||||||
values:
|
values:
|
||||||
- "values-umbrella.yaml.gotmpl"
|
- "values-ums-keycloak.yaml.gotmpl"
|
||||||
installed: {{ .Values.univentionManagementStack.enabled }}
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
timeout: 900
|
timeout: 900
|
||||||
# OpenDesk Keycloak Bootstrap Chart
|
|
||||||
|
- name: "ums-keycloak-extensions"
|
||||||
|
chart: "ums-keycloak-extensions-repo/{{ .Values.charts.umsKeycloakExtensions.name }}"
|
||||||
|
version: "{{ .Values.charts.umsKeycloakExtensions.version }}"
|
||||||
|
values:
|
||||||
|
- "values-ums-keycloak-extensions.yaml.gotmpl"
|
||||||
|
needs:
|
||||||
|
- "ums-keycloak"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-keycloak-bootstrap"
|
||||||
|
chart: "ums-keycloak-bootstrap-repo/{{ .Values.charts.umsKeycloakBootstrap.name }}"
|
||||||
|
version: "{{ .Values.charts.umsKeycloakBootstrap.version }}"
|
||||||
|
values:
|
||||||
|
- "values-ums-keycloak-bootstrap.yaml.gotmpl"
|
||||||
|
needs:
|
||||||
|
- "ums-keycloak"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
- name: "opendesk-keycloak-bootstrap"
|
- name: "opendesk-keycloak-bootstrap"
|
||||||
chart: "opendesk-keycloak-bootstrap-repo/{{ .Values.charts.opendeskKeycloakBootstrap.name }}"
|
chart: "opendesk-keycloak-bootstrap-repo/{{ .Values.charts.opendeskKeycloakBootstrap.name }}"
|
||||||
version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}"
|
version: "{{ .Values.charts.opendeskKeycloakBootstrap.version }}"
|
||||||
values:
|
values:
|
||||||
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
|
- "values-opendesk-keycloak-bootstrap.yaml.gotmpl"
|
||||||
needs:
|
needs:
|
||||||
- "ums"
|
- "ums-keycloak-bootstrap"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-stack-gateway"
|
||||||
|
chart: "nginx-repo/{{ .Values.charts.nginx.name }}"
|
||||||
|
version: "{{ .Values.charts.nginx.version }}"
|
||||||
|
values:
|
||||||
|
- "values-ums-stack-gateway.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-ldap-server"
|
||||||
|
chart: "ums-ldap-server-repo/{{ .Values.charts.umsLdapServer.name }}"
|
||||||
|
version: "{{ .Values.charts.umsLdapServer.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-ldap-server.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-ldap-notifier"
|
||||||
|
chart: "ums-ldap-notifier-repo/{{ .Values.charts.umsLdapNotifier.name }}"
|
||||||
|
version: "{{ .Values.charts.umsLdapNotifier.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-ldap-notifier.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-udm-rest-api"
|
||||||
|
chart: "ums-udm-rest-api-repo/{{ .Values.charts.umsUdmRestApi.name }}"
|
||||||
|
version: "{{ .Values.charts.umsUdmRestApi.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-udm-rest-api.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-stack-data-ums"
|
||||||
|
chart: "ums-stack-data-ums-repo/{{ .Values.charts.umsStackDataUms.name }}"
|
||||||
|
version: "{{ .Values.charts.umsStackDataUms.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-stack-data-ums.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-stack-data-swp"
|
||||||
|
chart: "ums-stack-data-swp-repo/{{ .Values.charts.umsStackDataSwp.name }}"
|
||||||
|
version: "{{ .Values.charts.umsStackDataSwp.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-stack-data-swp.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-portal-server"
|
||||||
|
chart: "ums-portal-server-repo/{{ .Values.charts.umsPortalServer.name }}"
|
||||||
|
version: "{{ .Values.charts.umsPortalServer.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-portal-server.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-notifications-api"
|
||||||
|
chart: "ums-notifications-api-repo/{{ .Values.charts.umsNotificationsApi.name }}"
|
||||||
|
version: "{{ .Values.charts.umsNotificationsApi.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-notifications-api.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-portal-listener"
|
||||||
|
chart: "ums-portal-listener-repo/{{ .Values.charts.umsPortalListener.name }}"
|
||||||
|
version: "{{ .Values.charts.umsPortalListener.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-portal-listener.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-portal-frontend"
|
||||||
|
chart: "ums-portal-frontend-repo/{{ .Values.charts.umsPortalFrontend.name }}"
|
||||||
|
version: "{{ .Values.charts.umsPortalFrontend.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-portal-frontend.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-umc-gateway"
|
||||||
|
chart: "ums-umc-gateway-repo/{{ .Values.charts.umsUmcGateway.name }}"
|
||||||
|
version: "{{ .Values.charts.umsUmcGateway.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-umc-gateway.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-umc-server"
|
||||||
|
chart: "ums-umc-server-repo/{{ .Values.charts.umsUmcServer.name }}"
|
||||||
|
version: "{{ .Values.charts.umsUmcServer.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-umc-server.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-selfservice-listener"
|
||||||
|
chart: "ums-selfservice-listener-repo/{{ .Values.charts.umsSelfserviceListener.name }}"
|
||||||
|
version: "{{ .Values.charts.umsSelfserviceListener.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-selfservice-listener.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-provisioning"
|
||||||
|
chart: "ums-provisioning-repo/{{ .Values.charts.umsProvisioning.name }}"
|
||||||
|
version: "{{ .Values.charts.umsProvisioning.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-provisioning.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-guardian-management-api"
|
||||||
|
chart: "ums-guardian-management-api-repo/{{ .Values.charts.umsGuardianManagementApi.name }}"
|
||||||
|
version: "{{ .Values.charts.umsGuardianManagementApi.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-guardian-management-api.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-guardian-management-ui"
|
||||||
|
chart: "ums-guardian-management-ui-repo/{{ .Values.charts.umsGuardianManagementUi.name }}"
|
||||||
|
version: "{{ .Values.charts.umsGuardianManagementUi.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-guardian-management-ui.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-guardian-authorization-api"
|
||||||
|
chart: "ums-guardian-authorization-api-repo/{{ .Values.charts.umsGuardianAuthorizationApi.name }}"
|
||||||
|
version: "{{ .Values.charts.umsGuardianAuthorizationApi.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-guardian-authorization-api.yaml.gotmpl"
|
||||||
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
|
timeout: 900
|
||||||
|
|
||||||
|
- name: "ums-open-policy-agent"
|
||||||
|
chart: "ums-open-policy-agent-repo/{{ .Values.charts.umsOpenPolicyAgent.name }}"
|
||||||
|
version: "{{ .Values.charts.umsOpenPolicyAgent.version }}"
|
||||||
|
values:
|
||||||
|
- "values-common.yaml.gotmpl"
|
||||||
|
- "values-open-policy-agent.yaml.gotmpl"
|
||||||
installed: {{ .Values.univentionManagementStack.enabled }}
|
installed: {{ .Values.univentionManagementStack.enabled }}
|
||||||
timeout: 900
|
timeout: 900
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +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
|
||||||
|
---
|
||||||
|
global:
|
||||||
|
configMapUcrDefaults: "ums-stack-data-ums-ucr"
|
||||||
|
configMapUcr: "ums-stack-data-swp-ucr"
|
||||||
|
configMapUcrForced: null
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
# Intentionally not using the Ingress configuration of the UMS stack at the
|
||||||
|
# moment, since it does depend on rewriting capabilities of the ingress
|
||||||
|
# controller. Those are encapsulated into the release "stack-gateway" so that
|
||||||
|
# the compatibility with all ingress controllers is increased.
|
||||||
|
enabled: false
|
||||||
|
host: {{ printf "%s.%s" .Values.global.hosts.univentionManagementStack .Values.global.domain | quote }}
|
||||||
|
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
|
||||||
|
tls:
|
||||||
|
# The TLS configuration is on the "master" Ingress, see "portal-frontend"
|
||||||
|
enabled: false
|
||||||
|
secretName: ""
|
||||||
|
|
||||||
|
istio:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
guardianAuthorizationApi:
|
||||||
|
guardianAuthzCorsAllowedOrigins: "*"
|
||||||
|
guardianAuthzAdapterSettingsPort: "env"
|
||||||
|
guardianAuthzAdapterAppPersistencePort: "udm_data"
|
||||||
|
guardianAuthzAdapterPolicyPort: "opa"
|
||||||
|
guardianAuthzAdapterAuthenticationPort: "fast_api_oauth"
|
||||||
|
guardianAuthzLoggingLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
|
||||||
|
guardianAuthzLoggingStructured: false
|
||||||
|
guardianAuthzLoggingFormat: "<green>{time:YYYY-MM-DD HH:mm:ss.SSS ZZ}</green> | <level>{level}</level> | <level>{message}</level> | {extra}"
|
||||||
|
home: "/guardian_service_dir"
|
||||||
|
isUniventionAppCenter: 0
|
||||||
|
oauthAdapterWellKnownUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080/realms/{{ .Values.platform.realm }}/.well-known/openid-configuration"
|
||||||
|
opaAdapterUrl: "http://ums-open-policy-agent/"
|
||||||
|
udmDataAdapterUrl: "http://ums-udm-rest-api/udm/"
|
||||||
|
udmDataAdapterUsername: "cn=admin"
|
||||||
|
udmDataAdapterPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsGuardianAuthorizationApi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsGuardianAuthorizationApi.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsGuardianAuthorizationApi.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsGuardianAuthorizationApi | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsGuardianAuthorizationApi }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
guardianManagementApi:
|
||||||
|
home: "/guardian_service_dir"
|
||||||
|
isUniventionAppCenter: 0
|
||||||
|
guardianManagementCorsAllowedOrigins: "*"
|
||||||
|
guardianManagementAdapterSettingsPort: "env"
|
||||||
|
guardianManagementAdapterAppPersistencePort: "sql"
|
||||||
|
guardianManagementAdapterConditionPersistencePort: "sql"
|
||||||
|
guardianManagementAdapterContextPersistencePort: "sql"
|
||||||
|
guardianManagementAdapterNamespacePersistencePort: "sql"
|
||||||
|
guardianManagementAdapterPermissionPersistencePort: "sql"
|
||||||
|
guardianManagementAdapterRolePersistencePort: "sql"
|
||||||
|
guardianManagementAdapterCapabilityPersistencePort: "sql"
|
||||||
|
guardianManagementAdapterAuthenticationPort: "fast_api_oauth"
|
||||||
|
guardianManagementAdapterAuthorizationApiUrl: "http://ums-guardian-authorization-api/guardian/authorization"
|
||||||
|
guardianManagementAdapterResourceAuthorizationPort: "always"
|
||||||
|
guardianManagementLoggingLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
|
||||||
|
guardianManagementLoggingStructured: false
|
||||||
|
guardianManagementLoggingFormat: "<green>{time:YYYY-MM-DD HH:mm:ss.SSS ZZ}</green> | <level>{level}</level> | <level>{message}</level> | {extra}"
|
||||||
|
guardianManagementBaseUrl: "http://0.0.0.0:8000"
|
||||||
|
oauthAdapterM2mSecretFile: "/var/secrets/oauthAdapterM2mSecret"
|
||||||
|
oauthAdapterM2mSecret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
|
||||||
|
oauthAdapterWellKnownUrl: "http://ums-keycloak.{{ .Release.Namespace }}.svc.{{ .Values.cluster.networking.domain }}:8080/realms/{{ .Values.platform.realm }}/.well-known/openid-configuration"
|
||||||
|
sqlPersistenceAdapterDialect: "postgresql"
|
||||||
|
sqlPersistenceAdapterDbName: "postgres"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsGuardianManagementApi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsGuardianManagementApi.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsGuardianManagementApi.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
bundled: false
|
||||||
|
connection:
|
||||||
|
host: {{ .Values.databases.umsGuardianManagementApi.host | quote }}
|
||||||
|
port: {{ .Values.databases.umsGuardianManagementApi.port | quote }}
|
||||||
|
auth:
|
||||||
|
username: {{ .Values.databases.umsGuardianManagementApi.username | quote }}
|
||||||
|
database: {{ .Values.databases.umsGuardianManagementApi.name | quote }}
|
||||||
|
password: {{ .Values.databases.umsGuardianManagementApi.password | default .Values.secrets.postgresql.umsGuardianManagementApiUser | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsGuardianManagementApi | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsGuardianManagementApi }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
guardianManagementUi:
|
||||||
|
viteManagementUiAdapterAuthenticationPort: "keycloak"
|
||||||
|
viteManagementUiAdapterDataPort: "api"
|
||||||
|
viteKeycloakAuthenticationAdapterClientId: "guardian-ui"
|
||||||
|
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 }}
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsGuardianManagementUi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsGuardianManagementUi.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsGuardianManagementUi.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsGuardianManagementUi | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsGuardianManagementUi }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsLdapNotifier.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsLdapNotifier.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsLdapNotifier.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsLdapNotifier | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
privileged: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsLdapNotifier }}
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
claims:
|
||||||
|
shared-data: "shared-data-ums-ldap-server-0"
|
||||||
|
shared-run: "shared-run-ums-ldap-server-0"
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
extraVolumes:
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-schemas"
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
mountPath: "/var/lib/univention-ldap-local/local-schema/opendeskFileshare.schema"
|
||||||
|
subPath: "opendeskFileshare.schema"
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
mountPath: "/var/lib/univention-ldap-local/local-schema/opendeskKnowledgemanagement.schema"
|
||||||
|
subPath: "opendeskKnowledgemanagement.schema"
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
mountPath: "/var/lib/univention-ldap-local/local-schema/opendeskLearnmanagement.schema"
|
||||||
|
subPath: "opendeskLearnmanagement.schema"
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
mountPath: "/var/lib/univention-ldap-local/local-schema/opendeskLivecollaboration.schema"
|
||||||
|
subPath: "opendeskLivecollaboration.schema"
|
||||||
|
- name: "opendesk-schemas"
|
||||||
|
mountPath: "/var/lib/univention-ldap-local/local-schema/opendeskProjectmanagement.schema"
|
||||||
|
subPath: "opendeskProjectmanagement.schema"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsLdapServer.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsLdapServer.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsLdapServer.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
waitForDependency:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsWaitForDependency.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsWaitForDependency.repository | quote }}
|
||||||
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsWaitForDependency.tag | quote }}
|
||||||
|
|
||||||
|
ldapServer:
|
||||||
|
waitForSamlMetadata: true
|
||||||
|
ldapSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
|
ldapBaseDn: {{ .Values.ldap.baseDn | quote }}
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
sharedData:
|
||||||
|
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||||
|
size: {{ .Values.persistence.size.univentionManagementStack.ldapServerData | quote }}
|
||||||
|
sharedRun:
|
||||||
|
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||||
|
size: {{ .Values.persistence.size.univentionManagementStack.ldapServerShared | quote }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsLdapServer }}
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: "ClusterIP"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsLdapServer | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsNotificationsApi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsNotificationsApi.repository }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy }}
|
||||||
|
tag: {{ .Values.images.umsNotificationsApi.tag }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
notificationsapi:
|
||||||
|
apply_database_migrations: "True"
|
||||||
|
dev_mode: "False"
|
||||||
|
environment: "staging"
|
||||||
|
log_level: "DEBUG"
|
||||||
|
sql_echo: "False"
|
||||||
|
api_prefix: "/univention/portal/notifications-api"
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
bundled: false
|
||||||
|
connection:
|
||||||
|
host: {{ .Values.databases.umsNotificationsApi.host | quote }}
|
||||||
|
port: {{ .Values.databases.umsNotificationsApi.port | quote }}
|
||||||
|
auth:
|
||||||
|
username: {{ .Values.databases.umsNotificationsApi.username | quote }}
|
||||||
|
database: {{ .Values.databases.umsNotificationsApi.name | quote }}
|
||||||
|
password: {{ .Values.databases.umsNotificationsApi.password | default .Values.secrets.postgresql.umsNotificationsApiUser | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsNotificationsApi | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsNotificationsApi }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsOpenPolicyAgent.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsOpenPolicyAgent.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsOpenPolicyAgent.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
openPolicyAgent:
|
||||||
|
isUniventionAppCenter: 0
|
||||||
|
opaDataBundle: "bundles/GuardianDataBundle.tar.gz"
|
||||||
|
opaPolicyBundle: "bundles/GuardianPolicyBundle.tar.gz"
|
||||||
|
opaPollingMinDelay: 10
|
||||||
|
opaPollingMaxDelay: 15
|
||||||
|
opaGuardianManagementUrl: "http://ums-guardian-management-api/guardian/management"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsOpenPolicyAgent | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsOpenPolicyAgent }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -253,7 +253,7 @@ config:
|
|||||||
clientAuthenticatorType: "client-secret"
|
clientAuthenticatorType: "client-secret"
|
||||||
secret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
|
secret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
|
||||||
redirectUris:
|
redirectUris:
|
||||||
- "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/*"
|
- "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}/*"
|
||||||
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||||
consentRequired: false
|
consentRequired: false
|
||||||
frontchannelLogout: false
|
frontchannelLogout: false
|
||||||
@@ -261,8 +261,8 @@ config:
|
|||||||
authorizationServicesEnabled: false
|
authorizationServicesEnabled: false
|
||||||
attributes:
|
attributes:
|
||||||
backchannel.logout.session.required: true
|
backchannel.logout.session.required: true
|
||||||
backchannel.logout.url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}/ajax/oidc/backchannel_logout"
|
backchannel.logout.url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.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 }}/*"
|
post.logout.redirect.uris: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.istio.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||||
protocolMappers:
|
protocolMappers:
|
||||||
- name: "context"
|
- name: "context"
|
||||||
protocol: "openid-connect"
|
protocol: "openid-connect"
|
||||||
@@ -293,13 +293,296 @@ config:
|
|||||||
authorizationServicesEnabled: false
|
authorizationServicesEnabled: false
|
||||||
attributes:
|
attributes:
|
||||||
backchannel.logout.session.required: false
|
backchannel.logout.session.required: false
|
||||||
backchannel.logout.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/oidc/authenticator/backchannel_logout"
|
backchannel.logout.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/NOT_YET_IMPLEMENTED_DONT_FORGET_TO_DISABLE_FCL_WHEN_BCL_IS_ACTIVATED/backchannel-logout"
|
||||||
post.logout.redirect.uris: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
post.logout.redirect.uris: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/*##https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/*"
|
||||||
defaultClientScopes:
|
defaultClientScopes:
|
||||||
- "opendesk"
|
- "opendesk"
|
||||||
- "address"
|
- "address"
|
||||||
- "email"
|
- "email"
|
||||||
- "profile"
|
- "profile"
|
||||||
|
- name: "guardian-management-api"
|
||||||
|
clientId: "guardian-management-api"
|
||||||
|
rootUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
baseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
protocol: "openid-connect"
|
||||||
|
clientAuthenticatorType: "client-secret"
|
||||||
|
secret: {{ .Values.secrets.keycloak.clientSecret.guardian | quote }}
|
||||||
|
redirectUris:
|
||||||
|
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/guardian/*"
|
||||||
|
fullScopeAllowed: 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.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
adminUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
baseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .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:
|
||||||
|
- "opendesk"
|
||||||
|
- "web-origins"
|
||||||
|
- "acr"
|
||||||
|
- "roles"
|
||||||
|
- "profile"
|
||||||
|
- "email"
|
||||||
|
optionalClientScopes:
|
||||||
|
- "address"
|
||||||
|
- "phone"
|
||||||
|
- "offline_access"
|
||||||
|
- "microprofile-jwt"
|
||||||
|
- name: "guardian-ui"
|
||||||
|
clientId: "guardian-ui"
|
||||||
|
rootUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
baseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
|
||||||
|
clientAuthenticatorType: "client-secret"
|
||||||
|
redirectUris:
|
||||||
|
- "https://{{ .Values.global.hosts.univentionManagementStack }}.{{ .Values.global.domain }}/univention/guardian/*"
|
||||||
|
standardFlowEnabled: true
|
||||||
|
publicClient: true
|
||||||
|
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-ui"
|
||||||
|
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:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
@@ -314,8 +597,7 @@ containerSecurityContext:
|
|||||||
type: "RuntimeDefault"
|
type: "RuntimeDefault"
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
runAsNonRoot: true
|
runAsNonRoot: true
|
||||||
seLinuxOptions:
|
seLinuxOptions: {{ .Values.seLinuxOptions.opendeskKeycloakBootstrap }}
|
||||||
{{ .Values.seLinuxOptions.opendeskKeycloakBootstrap | toYaml | nindent 4 }}
|
|
||||||
|
|
||||||
podAnnotations:
|
podAnnotations:
|
||||||
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
intents.otterize.com/service-name: "ums-keycloak-bootstrap"
|
||||||
|
|||||||
@@ -0,0 +1,114 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
|
||||||
|
extraIngresses:
|
||||||
|
redirects:
|
||||||
|
# Using "stack-gateway" currently.
|
||||||
|
enabled: false
|
||||||
|
# The TLS configuration is on the "master" Ingress, see below.
|
||||||
|
tls:
|
||||||
|
enabled: false
|
||||||
|
master:
|
||||||
|
# Using "stack-gateway" currently.
|
||||||
|
enabled: false
|
||||||
|
tls:
|
||||||
|
enabled: {{ .Values.ingress.tls.enabled }}
|
||||||
|
secretName: {{ .Values.ingress.tls.secretName | quote }}
|
||||||
|
|
||||||
|
# See "extraVolumeMounts" below
|
||||||
|
custom-favicon:
|
||||||
|
# Using "stack-gateway" at the moment
|
||||||
|
enabled: false
|
||||||
|
annotations:
|
||||||
|
nginx.org/mergeable-ingress-type: "minion"
|
||||||
|
paths:
|
||||||
|
- pathType: "Exact"
|
||||||
|
path: "/favicon.ico"
|
||||||
|
tls: {}
|
||||||
|
|
||||||
|
extraVolumes:
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-branding"
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/favicon.ico"
|
||||||
|
subPath: "favicon.ico"
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/css/custom.css"
|
||||||
|
subPath: "custom.css"
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/icons/logo.svg"
|
||||||
|
subPath: "logo.svg"
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/icons/logo_small_border.svg"
|
||||||
|
subPath: "logo_small_border.svg"
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/custom/portal_background_image.png"
|
||||||
|
subPath: "portal_background_image.png"
|
||||||
|
- name: "opendesk-branding"
|
||||||
|
mountPath: "/var/www/html/custom/portal_background_image.svg"
|
||||||
|
subPath: "portal_background_image.svg"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsPortalFrontend.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsPortalFrontend.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsPortalFrontend.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
# See "extraVolumeMounts" below
|
||||||
|
custom-branding:
|
||||||
|
# Using "stack-gateway" at the moment
|
||||||
|
enabled: false
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||||
|
rewrite ^/univention/portal(/.*)$ $1 break;
|
||||||
|
nginx.org/location-snippets: |
|
||||||
|
rewrite ^/univention/portal(/.*)$ $1 break;
|
||||||
|
nginx.org/mergeable-ingress-type: "minion"
|
||||||
|
paths:
|
||||||
|
# This relies on the correct implementation of the matching for paths of
|
||||||
|
# type "Prefix" since "/univention/portal/icons/entries/" is owned by
|
||||||
|
# store-dav.
|
||||||
|
# See: https://kubernetes.io/docs/concepts/services-networking/ingress/#multiple-matches
|
||||||
|
- pathType: "Prefix"
|
||||||
|
path: "/univention/portal/icons/"
|
||||||
|
- pathType: "Prefix"
|
||||||
|
path: "/univention/portal/custom/"
|
||||||
|
tls: {}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsPortalFrontend | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsPortalFrontend }}
|
||||||
|
...
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsPortalListener.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsPortalListener.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsPortalListener.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
waitForDependency:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsWaitForDependency.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsWaitForDependency.repository | quote }}
|
||||||
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsWaitForDependency.tag | quote }}
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
storageClassName: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||||
|
size: {{ .Values.persistence.size.univentionManagementStack.portalListener | quote }}
|
||||||
|
|
||||||
|
portalListener:
|
||||||
|
adminGroup: {{ printf "%s,%s" "cn=Domain Admins,cn=groups" .Values.ldap.baseDn | quote }}
|
||||||
|
assetsRootPath: "portal-assets"
|
||||||
|
ucsInternalPath: "portal-data"
|
||||||
|
|
||||||
|
ldapBaseDn: {{ .Values.ldap.baseDn | 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 }}
|
||||||
|
notifierServer: {{ .Values.ldap.notifierHost | quote }}
|
||||||
|
portalDefaultDn: {{ printf "%s,%s" "cn=domain,cn=portal,cn=portals,cn=univention" .Values.ldap.baseDn | quote }}
|
||||||
|
udmApiUrl: "http://ums-udm-rest-api/udm/"
|
||||||
|
udmApiUsername: "cn=admin"
|
||||||
|
debugLevel: {{ if .Values.debug.enabled }}"4"{{ else }}"1"{{ end }}
|
||||||
|
tlsMode: "off"
|
||||||
|
udmApiUrl: "http://ums-udm-rest-api/udm/"
|
||||||
|
udmApiUsername: "cn=admin"
|
||||||
|
umcGetUrl: "http://ums-umc-server/get"
|
||||||
|
umcSessionUrl: "http://ums-umc-server/get/session-info"
|
||||||
|
objectStorageEndpoint: "http://minio:9000"
|
||||||
|
objectStorageBucket: "ums"
|
||||||
|
objectStorageAccessKeyId: "ums_user"
|
||||||
|
objectStorageSecretAccessKey: {{ .Values.secrets.minio.umsUser | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsPortalListener | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
resourcesDependencyWaiter:
|
||||||
|
{{ .Values.resources.umsPortalListenerDependencies | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
store-dav:
|
||||||
|
bundled: false
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsPortalListener }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsPortalServer.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsPortalServer.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsPortalServer.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
portalServer:
|
||||||
|
authMode: "saml"
|
||||||
|
editable: "false"
|
||||||
|
umcGetUrl: "http://ums-umc-server/get"
|
||||||
|
umcSessionUrl: "http://ums-umc-server/get/session-info"
|
||||||
|
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
|
||||||
|
adminGroup: {{ printf "%s,%s" "cn=Domain Admins,cn=groups" .Values.ldap.baseDn | quote }}
|
||||||
|
ucsInternalPath: "portal-data"
|
||||||
|
objectStorageEndpoint: "http://minio:9000"
|
||||||
|
objectStorageBucket: "ums"
|
||||||
|
objectStorageAccessKeyId: "ums_user"
|
||||||
|
objectStorageSecretAccessKey: {{ .Values.secrets.minio.umsUser | quote }}
|
||||||
|
centralNavigation:
|
||||||
|
enabled: true
|
||||||
|
authenticatorSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsPortalServer | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsPortalServer }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
{{/*
|
||||||
|
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/}}
|
||||||
|
---
|
||||||
|
|
||||||
|
dispatcher:
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsProvisioningDispatcher.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsProvisioningDispatcher.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningDispatcher.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsProvisioning | toYaml | nindent 4 }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsProvisioningDispatcher }}
|
||||||
|
|
||||||
|
events-and-consumer-api:
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsProvisioningEventsAndConsumerApi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsProvisioningEventsAndConsumerApi.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningEventsAndConsumerApi.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
rootPath: "/univention/provisioning-api"
|
||||||
|
ingress:
|
||||||
|
# copied from values-common.yaml.gotmpl
|
||||||
|
# Intentionally not using the Ingress configuration of the UMS stack at the
|
||||||
|
# moment, since it does depend on rewriting capabilities of the ingress
|
||||||
|
# controller. Those are encapsulated into the release "stack-gateway" so that
|
||||||
|
# the compatibility with all ingress controllers is increased.
|
||||||
|
enabled: false
|
||||||
|
host: {{ printf "%s.%s" .Values.global.hosts.univentionManagementStack .Values.global.domain | quote }}
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsProvisioning | toYaml | nindent 4 }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsProvisioningEventsAndConsumerApi }}
|
||||||
|
|
||||||
|
udm-listener:
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsProvisioningUdmListener.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsProvisioningUdmListener.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningUdmListener.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
config:
|
||||||
|
ldapBaseDn: {{ .Values.ldap.baseDn | quote }}
|
||||||
|
ldapHost: {{ .Values.ldap.host | quote }}
|
||||||
|
ldapHostDn: {{ printf "%s,%s" "cn=admin" .Values.ldap.baseDn | quote }}
|
||||||
|
ldapPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsProvisioning | toYaml | nindent 4 }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsProvisioningUdmListener }}
|
||||||
|
|
||||||
|
nats:
|
||||||
|
global:
|
||||||
|
image:
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
pullSecretNames: {{ .Values.global.imagePullSecrets }}
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsProvisioningNats.registry | quote }}
|
||||||
|
container:
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry }}
|
||||||
|
repository: {{ .Values.images.umsProvisioningNats.repository | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningNats.tag | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
natsBox:
|
||||||
|
container:
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry }}
|
||||||
|
repository: {{ .Values.images.umsProvisioningNatsBox.repository | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningNatsBox.tag | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
reloader:
|
||||||
|
image:
|
||||||
|
repository: {{ .Values.images.umsProvisioningNatsReloader.repository | quote }}
|
||||||
|
tag: {{ .Values.images.umsProvisioningNatsReloader.tag | quote }}
|
||||||
|
registry: {{ .Values.global.imageRegistry }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
{{/*
|
||||||
|
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/}}
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
selfserviceListener:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsSelfserviceListener.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsSelfserviceListener.repository | quote }}
|
||||||
|
tag: {{ .Values.images.umsSelfserviceListener.tag | quote }}
|
||||||
|
|
||||||
|
selfserviceInvitation:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsSelfserviceInvitation.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsSelfserviceInvitation.repository | quote }}
|
||||||
|
tag: {{ .Values.images.umsSelfserviceInvitation.tag | quote }}
|
||||||
|
|
||||||
|
waitForDependency:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsWaitForDependency.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsWaitForDependency.repository | quote }}
|
||||||
|
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsWaitForDependency.tag | quote }}
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
storageClassName: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||||
|
size: {{ .Values.persistence.size.univentionManagementStack.selfserviceListener | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsSelfserviceListener | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
resourcesDependencyWaiter:
|
||||||
|
{{ .Values.resources.umsSelfserviceListenerDependencies | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
selfserviceListener:
|
||||||
|
ldapBaseDn: {{ .Values.ldap.baseDn | 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 }}
|
||||||
|
notifierServer: {{ .Values.ldap.notifierHost | quote }}
|
||||||
|
umcAdminPassword: {{ .Values.secrets.univentionManagementStack.defaultAccounts.adminPassword | quote }}
|
||||||
|
debugLevel: {{ if .Values.debug.enabled }}"4"{{ else }}"1"{{ end }}
|
||||||
|
tlsMode: "off"
|
||||||
|
umcServerUrl: "http://ums-umc-server"
|
||||||
|
umcAdminUser: "default.admin"
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsSelfserviceListener }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
additionalAnnotations:
|
||||||
|
intents.otterize.com/service-name: "ums-stack-data-swp"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsDataLoader.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsDataLoader.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsDataLoader.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsStackDataSwp | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsDataLoader }}
|
||||||
|
|
||||||
|
stackDataContext:
|
||||||
|
ldapBase: "dc=swp-ldap,dc=internal"
|
||||||
|
oxDefaultContext: "1"
|
||||||
|
smtpStartTls: true
|
||||||
|
ldapSearchUsers:
|
||||||
|
{{- range $username, $password := .Values.secrets.univentionManagementStack.ldapSearch }}
|
||||||
|
- username: {{ printf "ldapsearch_%s" $username | quote }}
|
||||||
|
password: {{ $password | quote }}
|
||||||
|
lastname: "LDAP-Search-User"
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
externalDomainName: {{ .Values.global.domain | quote }}
|
||||||
|
externalMailDomain: {{ .Values.global.domain | quote }}
|
||||||
|
|
||||||
|
portalGroupwareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openxchange .Values.istio.domain | quote }}
|
||||||
|
portalFileshareLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.nextcloud .Values.global.domain | quote }}
|
||||||
|
portalRealtimeCollaborationLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.element .Values.global.domain | quote }}
|
||||||
|
portalRealtimeVideoconferenceLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.jitsi .Values.global.domain | quote }}
|
||||||
|
portalManagementProjectLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.openproject .Values.global.domain | quote }}
|
||||||
|
portalManagementKnowledgeLinkBase: {{ printf "https://%s.%s" .Values.global.hosts.xwiki .Values.global.domain | quote }}
|
||||||
|
portalTitleDE: "{{ .Values.theme.texts.productName }} Portal"
|
||||||
|
portalTitleEN: "{{ .Values.theme.texts.productName }} Portal"
|
||||||
|
|
||||||
|
smtpHost: {{ .Values.smtp.host | quote }}
|
||||||
|
smtpPort: {{ .Values.smtp.port | quote }}
|
||||||
|
smtpUser: {{ .Values.smtp.username | quote }}
|
||||||
|
|
||||||
|
userPassword: {{ .Values.secrets.univentionManagementStack.defaultAccounts.userPassword | quote }}
|
||||||
|
adminPassword: {{ .Values.secrets.univentionManagementStack.defaultAccounts.adminPassword | quote }}
|
||||||
|
|
||||||
|
stackDataSwp:
|
||||||
|
udmApiPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
|
systemInformation:
|
||||||
|
deployDate: "Deployed: {{ now | date "2006-01-02T15:04:05-0700" }}"
|
||||||
|
releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}"
|
||||||
|
udmApiUser: "cn=admin"
|
||||||
|
udmApiUrl: "http://ums-udm-rest-api/udm/"
|
||||||
|
loadDevData: true
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
additionalAnnotations:
|
||||||
|
intents.otterize.com/service-name: "ums-stack-data-ums"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsDataLoader.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsDataLoader.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsDataLoader.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsStackDataUms | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsDataLoader }}
|
||||||
|
|
||||||
|
stackDataContext:
|
||||||
|
idpSamlMetadataUrlInternal: null
|
||||||
|
umcSamlSchemes: "https"
|
||||||
|
# The openDesk configuration brings its own UMC policies.
|
||||||
|
installUmcPolicies: false
|
||||||
|
domainname: {{ .Values.global.domain | quote }}
|
||||||
|
externalMailDomain: {{ .Values.global.domain | quote }}
|
||||||
|
hostname: {{ .Values.global.hosts.univentionManagementStack | 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 }}
|
||||||
|
umcSamlSpFqdn: {{ printf "%s.%s" .Values.global.hosts.univentionManagementStack .Values.global.domain | quote }}
|
||||||
|
idpFqdn: {{ printf "%s.%s" .Values.global.hosts.keycloak .Values.global.domain | quote }}
|
||||||
|
ldapSamlSpUrls: {{ printf "https://%s.%s%s" .Values.global.hosts.univentionManagementStack .Values.global.domain "/univention/saml/metadata" | quote }}
|
||||||
|
initialPasswordAdministrator: {{ .Values.secrets.univentionManagementStack.defaultAccounts.administratorPassword | quote }}
|
||||||
|
|
||||||
|
stackDataUms:
|
||||||
|
loadDevData: true
|
||||||
|
udmApiPassword: {{ .Values.secrets.univentionManagementStack.ldapSecret | quote }}
|
||||||
|
udmApiUrl: "http://ums-udm-rest-api/udm/"
|
||||||
|
udmApiUser: "cn=admin"
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsStoreDav.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsStoreDav.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsStoreDav.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
configHtpasswd:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsConfigHtpasswd.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsConfigHtpasswd.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsConfigHtpasswd.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
data:
|
||||||
|
storageClass: {{ .Values.persistence.storageClassNames.RWO | quote }}
|
||||||
|
size: {{ .Values.persistence.size.univentionManagementStack.storeDav | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsStoreDav | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsStoreDav }}
|
||||||
|
|
||||||
|
storeDav:
|
||||||
|
auth:
|
||||||
|
basicAuth:
|
||||||
|
portal-listener: {{ .Values.secrets.univentionManagementStack.storeDavUsers.portalListener | quote }}
|
||||||
|
portal-server: {{ .Values.secrets.univentionManagementStack.storeDavUsers.portalServer | quote }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
extraVolumes:
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-attribute-to-group-mapper-hook"
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
mountPath: "/usr/lib/python3/dist-packages/univention/admin/hooks.d/AttributeToGroupMapper.py"
|
||||||
|
subPath: "AttributeToGroupMapper.py"
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
mountPath: "/usr/share/attribute-to-group-mapper/flag_to_group_mapping.json"
|
||||||
|
subPath: "flag_to_group_mapping.json"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsUdmRestApi.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsUdmRestApi.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsUdmRestApi.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsUdmRestApi | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsUdmRestApi }}
|
||||||
|
|
||||||
|
udmRestApi:
|
||||||
|
# TODO: Stub value currently
|
||||||
|
caCert: ""
|
||||||
|
# TODO: Secret should be entered without b64enc
|
||||||
|
ldapSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | b64enc | quote }}
|
||||||
|
# TODO: Secret should be entered without b64enc
|
||||||
|
machineSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | b64enc | quote }}
|
||||||
|
|
||||||
|
...
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,63 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
extraVolumes:
|
||||||
|
- name: "entrypoint-swp-patches"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-umc-gateway-entrypoint"
|
||||||
|
defaultMode: 0555
|
||||||
|
- name: "announcements-customization"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-umc-server-announcements"
|
||||||
|
defaultMode: 0444
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "entrypoint-swp-patches"
|
||||||
|
mountPath: "/entrypoint.d/90-swp.sh"
|
||||||
|
subPath: "90-swp.sh"
|
||||||
|
- name: "announcements-customization"
|
||||||
|
mountPath:
|
||||||
|
"/usr/share/univention-management-console-frontend/js/dijit/themes\
|
||||||
|
/umc/icons/16x16/udm-portals-announcement.png"
|
||||||
|
subPath: "udm-portals-announcement.png"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsUmcGateway.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsUmcGateway.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsUmcGateway.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsUmcGateway | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsUmcGateway }}
|
||||||
|
|
||||||
|
...
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
---
|
||||||
|
extraVolumes:
|
||||||
|
- name: "certificates"
|
||||||
|
secret:
|
||||||
|
secretName: "opendesk-certificates-tls"
|
||||||
|
- name: "entrypoint-swp-patches"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-umc-server-entrypoint"
|
||||||
|
defaultMode: 0555
|
||||||
|
- name: "self-service-emails"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-self-service-emails"
|
||||||
|
defaultMode: 0444
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-attribute-to-group-mapper-hook"
|
||||||
|
- name: "announcements-customization"
|
||||||
|
configMap:
|
||||||
|
name: "ums-stack-data-swp-umc-server-announcements"
|
||||||
|
defaultMode: 0444
|
||||||
|
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: "certificates"
|
||||||
|
mountPath: "/var/secrets/ssl"
|
||||||
|
- name: "entrypoint-swp-patches"
|
||||||
|
mountPath: "/entrypoint.d/90-customization.sh"
|
||||||
|
subPath: "90-customization.sh"
|
||||||
|
- name: "self-service-emails"
|
||||||
|
mountPath: "/usr/share/univention-self-service/email_bodies"
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
mountPath: "/usr/lib/python3/dist-packages/univention/admin/hooks.d/AttributeToGroupMapper.py"
|
||||||
|
subPath: "AttributeToGroupMapper.py"
|
||||||
|
- name: "attribute-to-group-mapper-hook"
|
||||||
|
mountPath: "/usr/share/attribute-to-group-mapper/flag_to_group_mapping.json"
|
||||||
|
subPath: "flag_to_group_mapping.json"
|
||||||
|
- name: "announcements-customization"
|
||||||
|
mountPath: "/usr/share/univention-management-console/modules/udm-portals-announcement.xml"
|
||||||
|
subPath: "udm-portals-announcement.xml"
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: {{ .Values.global.imageRegistry | default .Values.images.umsUmcServer.registry | quote }}
|
||||||
|
repository: {{ .Values.images.umsUmcServer.repository | quote }}
|
||||||
|
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
|
||||||
|
tag: {{ .Values.images.umsUmcServer.tag | quote }}
|
||||||
|
pullSecrets:
|
||||||
|
{{- range .Values.global.imagePullSecrets }}
|
||||||
|
- name: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
memcached:
|
||||||
|
bundled: false
|
||||||
|
auth:
|
||||||
|
username: null
|
||||||
|
password: null
|
||||||
|
server: {{ .Values.cache.umsSelfservice.host | quote }}
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
bundled: false
|
||||||
|
auth:
|
||||||
|
username: {{ .Values.databases.umsSelfservice.username | quote }}
|
||||||
|
database: {{ .Values.databases.umsSelfservice.name | quote }}
|
||||||
|
password: {{ .Values.databases.umsSelfservice.password | default .Values.secrets.postgresql.umsSelfserviceUser | quote }}
|
||||||
|
postgresPassword: {{ .Values.secrets.postgresql.umsSelfserviceUser | quote }}
|
||||||
|
connection:
|
||||||
|
host: {{ .Values.databases.umsSelfservice.host | quote }}
|
||||||
|
port: {{ .Values.databases.umsSelfservice.port | quote }}
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{{ .Values.resources.umsUmcServer | toYaml | nindent 2 }}
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "DAC_OVERRIDE"
|
||||||
|
- "FOWNER"
|
||||||
|
- "FSETID"
|
||||||
|
- "KILL"
|
||||||
|
- "SETGID"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETPCAP"
|
||||||
|
- "NET_BIND_SERVICE"
|
||||||
|
- "NET_RAW"
|
||||||
|
- "SYS_CHROOT"
|
||||||
|
privileged: false
|
||||||
|
seccompProfile:
|
||||||
|
type: "RuntimeDefault"
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
runAsUser: 0
|
||||||
|
runAsGroup: 0
|
||||||
|
runAsNonRoot: false
|
||||||
|
seLinuxOptions: {{ .Values.seLinuxOptions.umsUmcServer }}
|
||||||
|
|
||||||
|
umcServer:
|
||||||
|
certPemFile: "/var/secrets/ssl/tls.crt"
|
||||||
|
# TODO: Secret should be entered without b64enc
|
||||||
|
ldapSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | b64enc | quote }}
|
||||||
|
# TODO: Secret should be entered without b64enc
|
||||||
|
machineSecret: {{ .Values.secrets.univentionManagementStack.ldapSecret | b64enc | quote }}
|
||||||
|
smtpSecret: {{ .Values.smtp.password | quote }}
|
||||||
|
privateKeyFile: "/var/secrets/ssl/tls.key"
|
||||||
|
|
||||||
|
...
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user