# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
# This file contains annotations to (later) generate parts of "docs/scaling.md".
# When adding new components in here, do not forget to add them as well to
# `../test/values.yaml.gotmpl` to ensure their linting coverage.
replicas:
  # -- component: Cassandra
  # -- scalable: tbd
  cassandra: 1
  # -- component: Antivirus (ClamAV)
  # -- scalable: true
  # -- comment: clamav-simple - supports `ReadWriteOnce` PVCs.
  clamav: 1
  # -- scalable: true
  # -- comment: clamav-distributed - requires `ReadWriteMany` PVCs.
  clamd: 1
  # -- scalable: true
  # -- comment: clamav-distributed - You do not want to scale this service, as it just updates the signature files
  # centrally an should be a singleton.
  freshclam: 1
  # -- scalable: true
  # -- comment: clamav-distributed - requires `ReadWriteMany` PVCs.
  icap: 1
  # -- scalable: true
  # -- comment: clamav-distributed - requires `ReadWriteMany` PVCs.
  milter: 1

  # -- component: Weboffice (Collabora)
  # -- scalable: true
  # -- comment: If Collabora Controller is enabled, Collabora is autoscaling and the value below will be ignored.
  # Please check `enterpriseFeatures.collabora.autoscaling` for autoscaling settings.
  collabora: 1
  # -- scalable: true
  # -- comment: Load between Collabora Controller Pods is going to one Pod (the leader) only, therefore raise the number
  # e.g. to `2` for high availability of the Collabora Controller.
  collaboraController: 1

  # -- component: Pad (CryptPad)
  # -- scalable: false
  cryptpad: 1

  # -- component: Groupware (OX AppSuite, OX Dovecot etc.)
  # -- scalable: false
  # -- comment: Scalable in openDesk Enterprise only
  dovecot: 1
  # -- scalable: false
  postfix: 1
  # -- scalable: true
  dkimpy: 1

  # -- component: Chat (Element, Synapse)
  # -- scalable: true
  element: 1
  # -- scalable: tbd
  matrixNeoBoardWidget: 1
  # -- scalable: tbd
  matrixNeoChoiceWidget: 1
  # -- scalable: tbd
  matrixNeoDateFixBot: 1
  # -- scalable: tbd
  matrixNeoDateFixWidget: 1
  # -- scalable: tbd
  matrixUserVerificationService: 1
  # -- scalable: tbd
  synapse: 1
  # -- scalable: true
  synapseWeb: 1
  # -- scalable: true
  wellKnown: 1

  # -- component: IAM (Nubus)
  # -- scalable: true
  intercomService: 1
  # -- scalable: true
  keycloak: 1
  # -- scalable: false
  oxConnector: 1
  # -- scalable: tbd
  umsGuardianAuthorizationApi: 1
  # -- scalable: tbd
  umsGuardianManagementApi: 1
  # -- scalable: tbd
  umsGuardianManagementUi: 1
  # -- scalable: tbd
  umsGuardianOpenPolicyAgent: 1
  # -- scalable: false
  # -- comment: Should not be scaled, is an async process.
  umsKeycloakExtensionsHandler: 1
  # -- scalable: true
  umsKeycloakExtensionsProxy: 1
  # -- scalable: tbd
  umsLdapNotifier: 1
  # -- scalable: true
  # -- comment: Please find details on the following `umsLdapServer*` entries in the upstream documentation:
  # https://docs.software-univention.de/nubus-kubernetes-operation/latest/en/configuration/ldap.html#directory-service-high-availability-and-scalability
  umsLdapServerPrimary: 1
  # -- scalable: true
  umsLdapServerSecondary: 0
  # -- scalable: true
  # -- comment: The LDAP proxy is only required in situations where there are clients outside of UDM writing into the
  # LDAP like Samba. This is not a use case within openDesk so the LDAP Proxy's replica count should be kept at `0`
  umsLdapServerProxy: 0
  # -- scalable: tbd
  umsNotificationsApi: 1
  # -- scalable: true
  umsPortalFrontend: 1
  # -- scalable: false
  umsPortalConsumer: 1
  # -- scalable: true
  umsPortalServer: 1
  # -- scalable: tdb
  umsProvisioningApi: 1
  # -- scalable: false
  umsProvisioningDispatcher: 1
  # -- scalable: tdb
  umsProvisioningNats: 1
  # -- scalable: tdb
  umsProvisioningPrefill: 1
  # -- scalable: false
  umsProvisioningUdmTransformer: 1
  # -- scalable: tbd
  umsSelfserviceConsumer: 1
  # -- scalable: true
  umsUdmListener: 1
  # -- scalable: tbd
  umsUdmRestApi: 1
  # -- scalable: tbd
  umsUmcGateway: 1
  # -- scalable: tbd
  umsUmcServer: 1
  # -- scalable: tbd
  umsUmcServerProxy: 1
  # -- scalable: true
  nginxS3Gateway: 1

  # -- component: Video conference (Jitsi)
  # -- scalable: tbd
  jibri: 1
  # -- scalable: tbd
  jicofo: 1
  # -- scalable: tbd
  jigasi: 1
  # -- scalable: tbd
  jitsi: 1
  # -- scalable: tbd
  jitsiKeycloakAdapter: 1
  # -- scalable: tbd
  jvb: 2

  # -- component: Persistence Layer
  # -- scalable: false
  mariadb: 1
  # -- scalable: false
  memcached: 1
  # -- scalable: true
  minio: 1
  # -- scalable: false
  postgres: 1
  # -- scalable: tbd
  redis: 1

  # -- component: Filestore (Nextcloud)
  # -- scalable: true
  nextcloud: 1
  # -- scalable: true
  nextcloudNotifyPush: 1
  # -- scalable: true
  nextcloudExporter: 1

  # -- component: openDesk Static Files
  # -- scalable: true
  opendeskStaticFiles: 1

  # -- component: Project management (OpenProject)
  # -- scalable: true
  openprojectWeb: 1
  # -- scalable: true
  # -- comment: Async service working on processing queue content. Can work on queues in parallel (when needed). Check
  # https://www.openproject.org/docs/installation-and-operations/installation/helm-chart/ for details, as e.g.
  # dedicated workers for specific queues are possible with OpenProject.
  openprojectWorker: 1

  # -- component: Groupware (OX App Suite)
  # -- scalable: tbd
  openxchangeCoreDocumentConverter: 1
  # -- scalable: tbd
  openxchangeCoreGuidedtours: 1
  # -- scalable: tbd
  openxchangeCoreImageConverter: 1
  # -- scalable: tbd
  openxchangeCoreMW: 1
  # -- scalable: tbd
  openxchangeCoreUI: 1
  # -- scalable: tbd
  openxchangeCoreUIMiddleware: 1
  # -- scalable: tbd
  openxchangeCoreUserGuide: 1
  # -- scalable: tbd
  openxchangeGotenberg: 1
  # -- scalable: tbd
  openxchangeGuardUI: 1
  # -- scalable: tbd
  openxchangeNextcloudIntegrationUI: 1
  # -- scalable: tbd
  openxchangePluginsUI: 1
  # -- scalable: tbd
  openxchangePublicSectorUI: 1

  # -- component: Knowledge management (XWiki)
  # -- scalable: false
  xwiki: 1

  # -- component: Note taking (Notes)
  # -- scalable: true
  notesBackend: 1
  # -- scalable: true
  notesFrontend: 1
  # -- scalable: true
  notesYProvider: 1
...
